Lines Matching refs:pf

53  * @pf: Board private structure
60 static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
62 struct i40e_hw *hw = &pf->hw;
77 * @pf: Board private structure
84 static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec *ts)
86 struct i40e_hw *hw = &pf->hw;
123 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
124 struct i40e_hw *hw = &pf->hw;
134 adj = ACCESS_ONCE(pf->ptp_base_adj);
161 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
165 spin_lock_irqsave(&pf->tmreg_lock, flags);
167 i40e_ptp_read(pf, &now);
169 i40e_ptp_write(pf, (const struct timespec *)&now);
171 spin_unlock_irqrestore(&pf->tmreg_lock, flags);
186 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
189 spin_lock_irqsave(&pf->tmreg_lock, flags);
190 i40e_ptp_read(pf, ts);
191 spin_unlock_irqrestore(&pf->tmreg_lock, flags);
207 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
210 spin_lock_irqsave(&pf->tmreg_lock, flags);
211 i40e_ptp_write(pf, ts);
212 spin_unlock_irqrestore(&pf->tmreg_lock, flags);
243 struct i40e_pf *pf = vsi->back;
244 struct i40e_hw *hw = &pf->hw;
250 if (!(pf->flags & I40E_FLAG_PTP))
267 pf->last_rx_ptp_check = jiffies;
272 rx_event = pf->last_rx_ptp_check;
285 pf->last_rx_ptp_check = jiffies;
286 pf->rx_hwtstamp_cleared++;
295 * @pf: Board private structure
301 void i40e_ptp_tx_hwtstamp(struct i40e_pf *pf)
304 struct i40e_hw *hw = &pf->hw;
314 skb_tstamp_tx(pf->ptp_tx_skb, &shhwtstamps);
315 dev_kfree_skb_any(pf->ptp_tx_skb);
316 pf->ptp_tx_skb = NULL;
317 clear_bit_unlock(__I40E_PTP_TX_IN_PROGRESS, &pf->state);
322 * @pf: Board private structure
332 void i40e_ptp_rx_hwtstamp(struct i40e_pf *pf, struct sk_buff *skb, u8 index)
341 if (!pf->ptp_rx)
344 hw = &pf->hw;
361 * @pf: Board private structure
367 void i40e_ptp_set_increment(struct i40e_pf *pf)
370 struct i40e_hw *hw = &pf->hw;
375 i40e_aq_get_link_info(&pf->hw, true, NULL, NULL);
385 dev_warn(&pf->pdev->dev,
404 ACCESS_ONCE(pf->ptp_base_adj) = incval;
410 * @pf: Board private structure
417 int i40e_ptp_get_ts_config(struct i40e_pf *pf, struct ifreq *ifr)
419 struct hwtstamp_config *config = &pf->tstamp_config;
427 * @pf: Board private structure
437 static int i40e_ptp_set_timestamp_mode(struct i40e_pf *pf,
440 struct i40e_hw *hw = &pf->hw;
451 dev_err(&pf->pdev->dev,
459 pf->ptp_tx = false;
462 pf->ptp_tx = true;
470 pf->ptp_rx = false;
476 pf->ptp_rx = true;
491 pf->ptp_rx = true;
512 if (pf->ptp_tx)
519 if (pf->ptp_tx)
528 if (pf->ptp_rx) {
542 * @pf: Board private structure
554 int i40e_ptp_set_ts_config(struct i40e_pf *pf, struct ifreq *ifr)
562 err = i40e_ptp_set_timestamp_mode(pf, &config);
567 pf->tstamp_config = config;
575 * @pf: Board private structure
583 static long i40e_ptp_create_clock(struct i40e_pf *pf)
586 if (!IS_ERR_OR_NULL(pf->ptp_clock))
589 strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
590 pf->ptp_caps.owner = THIS_MODULE;
591 pf->ptp_caps.max_adj = 999999999;
592 pf->ptp_caps.n_ext_ts = 0;
593 pf->ptp_caps.pps = 0;
594 pf->ptp_caps.adjfreq = i40e_ptp_adjfreq;
595 pf->ptp_caps.adjtime = i40e_ptp_adjtime;
596 pf->ptp_caps.gettime = i40e_ptp_gettime;
597 pf->ptp_caps.settime = i40e_ptp_settime;
598 pf->ptp_caps.enable = i40e_ptp_feature_enable;
601 pf->ptp_clock = ptp_clock_register(&pf->ptp_caps, &pf->pdev->dev);
602 if (IS_ERR(pf->ptp_clock)) {
603 return PTR_ERR(pf->ptp_clock);
610 pf->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE;
611 pf->tstamp_config.tx_type = HWTSTAMP_TX_OFF;
618 * @pf: Board private structure
624 void i40e_ptp_init(struct i40e_pf *pf)
626 struct net_device *netdev = pf->vsi[pf->lan_vsi]->netdev;
627 struct i40e_hw *hw = &pf->hw;
633 spin_lock_init(&pf->tmreg_lock);
636 err = i40e_ptp_create_clock(pf);
638 pf->ptp_clock = NULL;
639 dev_err(&pf->pdev->dev, "%s: ptp_clock_register failed\n",
645 dev_info(&pf->pdev->dev, "%s: added PHC on %s\n", __func__,
647 pf->flags |= I40E_FLAG_PTP;
658 i40e_ptp_set_increment(pf);
661 i40e_ptp_set_timestamp_mode(pf, &pf->tstamp_config);
665 i40e_ptp_settime(&pf->ptp_caps, &ts);
671 * @pf: Board private structure
676 void i40e_ptp_stop(struct i40e_pf *pf)
678 pf->flags &= ~I40E_FLAG_PTP;
679 pf->ptp_tx = false;
680 pf->ptp_rx = false;
682 if (pf->ptp_tx_skb) {
683 dev_kfree_skb_any(pf->ptp_tx_skb);
684 pf->ptp_tx_skb = NULL;
685 clear_bit_unlock(__I40E_PTP_TX_IN_PROGRESS, &pf->state);
688 if (pf->ptp_clock) {
689 ptp_clock_unregister(pf->ptp_clock);
690 pf->ptp_clock = NULL;
691 dev_info(&pf->pdev->dev, "%s: removed PHC on %s\n", __func__,
692 pf->vsi[pf->lan_vsi]->netdev->name);