Lines Matching refs:phc
1657 struct ena_com_phc_info *phc = &ena_dev->phc;
1659 memset(phc, 0x0, sizeof(*phc));
1662 phc->virt_addr = dma_alloc_coherent(ena_dev->dmadev,
1663 sizeof(*phc->virt_addr),
1664 &phc->phys_addr,
1666 if (unlikely(!phc->virt_addr))
1669 spin_lock_init(&phc->lock);
1671 phc->virt_addr->req_id = 0;
1672 phc->virt_addr->timestamp = 0;
1679 struct ena_com_phc_info *phc = &ena_dev->phc;
1698 if (get_feat_resp.u.phc.type != ENA_ADMIN_PHC_TYPE_READLESS) {
1708 phc->doorbell_offset = get_feat_resp.u.phc.doorbell_offset;
1713 phc->expire_timeout_usec = (get_feat_resp.u.phc.expire_timeout_usec) ?
1714 get_feat_resp.u.phc.expire_timeout_usec :
1720 phc->block_timeout_usec = (get_feat_resp.u.phc.block_timeout_usec) ?
1721 get_feat_resp.u.phc.block_timeout_usec :
1725 if (phc->expire_timeout_usec > phc->block_timeout_usec)
1726 phc->expire_timeout_usec = phc->block_timeout_usec;
1732 set_feat_cmd.u.phc.output_length = sizeof(*phc->virt_addr);
1734 &set_feat_cmd.u.phc.output_address,
1735 phc->phys_addr);
1757 phc->active = true;
1765 struct ena_com_phc_info *phc = &ena_dev->phc;
1769 if (!phc->virt_addr)
1772 spin_lock_irqsave(&phc->lock, flags);
1773 phc->active = false;
1774 spin_unlock_irqrestore(&phc->lock, flags);
1777 sizeof(*phc->virt_addr),
1778 phc->virt_addr,
1779 phc->phys_addr);
1780 phc->virt_addr = NULL;
1785 volatile struct ena_admin_phc_resp *resp = ena_dev->phc.virt_addr;
1787 struct ena_com_phc_info *phc = &ena_dev->phc;
1793 if (!phc->active) {
1798 spin_lock_irqsave(&phc->lock, flags);
1801 if (unlikely(ktime_compare(phc->system_time, zero_system_time))) {
1803 block_time = ktime_add_us(phc->system_time, phc->block_timeout_usec);
1806 phc->stats.phc_skp++;
1814 if (READ_ONCE(resp->req_id) != phc->req_id) {
1820 phc->req_id);
1821 phc->stats.phc_err_dv++;
1830 phc->req_id,
1832 phc->stats.phc_err_ts += !!(resp->error_flags &
1838 phc->stats.phc_exp++;
1843 phc->system_time = ktime_get();
1844 block_time = ktime_add_us(phc->system_time, phc->block_timeout_usec);
1845 expire_time = ktime_add_us(phc->system_time, phc->expire_timeout_usec);
1850 phc->req_id++;
1855 resp->req_id = phc->req_id + ENA_PHC_REQ_ID_OFFSET;
1858 writel(phc->req_id, ena_dev->reg_bar + phc->doorbell_offset);
1873 if (READ_ONCE(resp->req_id) != phc->req_id) {
1898 phc->stats.phc_cnt++;
1901 phc->system_time = zero_system_time;
1906 spin_unlock_irqrestore(&phc->lock, flags);