Lines Matching refs:pf

59 static void i40e_ptp_read(struct i40e_pf *pf, struct timespec64 *ts)  in i40e_ptp_read()  argument
61 struct i40e_hw *hw = &pf->hw; in i40e_ptp_read()
83 static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec64 *ts) in i40e_ptp_write() argument
85 struct i40e_hw *hw = &pf->hw; in i40e_ptp_write()
122 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); in i40e_ptp_adjfreq() local
123 struct i40e_hw *hw = &pf->hw; in i40e_ptp_adjfreq()
133 adj = ACCESS_ONCE(pf->ptp_base_adj); in i40e_ptp_adjfreq()
160 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); in i40e_ptp_adjtime() local
164 spin_lock_irqsave(&pf->tmreg_lock, flags); in i40e_ptp_adjtime()
166 i40e_ptp_read(pf, &now); in i40e_ptp_adjtime()
168 i40e_ptp_write(pf, (const struct timespec64 *)&now); in i40e_ptp_adjtime()
170 spin_unlock_irqrestore(&pf->tmreg_lock, flags); in i40e_ptp_adjtime()
185 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); in i40e_ptp_gettime() local
188 spin_lock_irqsave(&pf->tmreg_lock, flags); in i40e_ptp_gettime()
189 i40e_ptp_read(pf, ts); in i40e_ptp_gettime()
190 spin_unlock_irqrestore(&pf->tmreg_lock, flags); in i40e_ptp_gettime()
206 struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); in i40e_ptp_settime() local
209 spin_lock_irqsave(&pf->tmreg_lock, flags); in i40e_ptp_settime()
210 i40e_ptp_write(pf, ts); in i40e_ptp_settime()
211 spin_unlock_irqrestore(&pf->tmreg_lock, flags); in i40e_ptp_settime()
242 struct i40e_pf *pf = vsi->back; in i40e_ptp_rx_hang() local
243 struct i40e_hw *hw = &pf->hw; in i40e_ptp_rx_hang()
254 if (!(pf->flags & I40E_FLAG_PTP) || !pf->ptp_rx) in i40e_ptp_rx_hang()
271 pf->last_rx_ptp_check = jiffies; in i40e_ptp_rx_hang()
276 rx_event = pf->last_rx_ptp_check; in i40e_ptp_rx_hang()
289 pf->last_rx_ptp_check = jiffies; in i40e_ptp_rx_hang()
290 pf->rx_hwtstamp_cleared++; in i40e_ptp_rx_hang()
305 void i40e_ptp_tx_hwtstamp(struct i40e_pf *pf) in i40e_ptp_tx_hwtstamp() argument
308 struct i40e_hw *hw = &pf->hw; in i40e_ptp_tx_hwtstamp()
312 if (!(pf->flags & I40E_FLAG_PTP) || !pf->ptp_tx) in i40e_ptp_tx_hwtstamp()
316 if (!pf->ptp_tx_skb) in i40e_ptp_tx_hwtstamp()
325 skb_tstamp_tx(pf->ptp_tx_skb, &shhwtstamps); in i40e_ptp_tx_hwtstamp()
326 dev_kfree_skb_any(pf->ptp_tx_skb); in i40e_ptp_tx_hwtstamp()
327 pf->ptp_tx_skb = NULL; in i40e_ptp_tx_hwtstamp()
328 clear_bit_unlock(__I40E_PTP_TX_IN_PROGRESS, &pf->state); in i40e_ptp_tx_hwtstamp()
343 void i40e_ptp_rx_hwtstamp(struct i40e_pf *pf, struct sk_buff *skb, u8 index) in i40e_ptp_rx_hwtstamp() argument
352 if (!(pf->flags & I40E_FLAG_PTP) || !pf->ptp_rx) in i40e_ptp_rx_hwtstamp()
355 hw = &pf->hw; in i40e_ptp_rx_hwtstamp()
378 void i40e_ptp_set_increment(struct i40e_pf *pf) in i40e_ptp_set_increment() argument
381 struct i40e_hw *hw = &pf->hw; in i40e_ptp_set_increment()
386 i40e_aq_get_link_info(&pf->hw, true, NULL, NULL); in i40e_ptp_set_increment()
400 dev_warn(&pf->pdev->dev, in i40e_ptp_set_increment()
421 ACCESS_ONCE(pf->ptp_base_adj) = incval; in i40e_ptp_set_increment()
434 int i40e_ptp_get_ts_config(struct i40e_pf *pf, struct ifreq *ifr) in i40e_ptp_get_ts_config() argument
436 struct hwtstamp_config *config = &pf->tstamp_config; in i40e_ptp_get_ts_config()
438 if (!(pf->flags & I40E_FLAG_PTP)) in i40e_ptp_get_ts_config()
457 static int i40e_ptp_set_timestamp_mode(struct i40e_pf *pf, in i40e_ptp_set_timestamp_mode() argument
460 struct i40e_hw *hw = &pf->hw; in i40e_ptp_set_timestamp_mode()
469 pf->ptp_tx = false; in i40e_ptp_set_timestamp_mode()
472 pf->ptp_tx = true; in i40e_ptp_set_timestamp_mode()
480 pf->ptp_rx = false; in i40e_ptp_set_timestamp_mode()
491 pf->ptp_rx = true; in i40e_ptp_set_timestamp_mode()
506 pf->ptp_rx = true; in i40e_ptp_set_timestamp_mode()
527 if (pf->ptp_tx) in i40e_ptp_set_timestamp_mode()
534 if (pf->ptp_tx) in i40e_ptp_set_timestamp_mode()
570 int i40e_ptp_set_ts_config(struct i40e_pf *pf, struct ifreq *ifr) in i40e_ptp_set_ts_config() argument
575 if (!(pf->flags & I40E_FLAG_PTP)) in i40e_ptp_set_ts_config()
581 err = i40e_ptp_set_timestamp_mode(pf, &config); in i40e_ptp_set_ts_config()
586 pf->tstamp_config = config; in i40e_ptp_set_ts_config()
602 static long i40e_ptp_create_clock(struct i40e_pf *pf) in i40e_ptp_create_clock() argument
605 if (!IS_ERR_OR_NULL(pf->ptp_clock)) in i40e_ptp_create_clock()
608 strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name)); in i40e_ptp_create_clock()
609 pf->ptp_caps.owner = THIS_MODULE; in i40e_ptp_create_clock()
610 pf->ptp_caps.max_adj = 999999999; in i40e_ptp_create_clock()
611 pf->ptp_caps.n_ext_ts = 0; in i40e_ptp_create_clock()
612 pf->ptp_caps.pps = 0; in i40e_ptp_create_clock()
613 pf->ptp_caps.adjfreq = i40e_ptp_adjfreq; in i40e_ptp_create_clock()
614 pf->ptp_caps.adjtime = i40e_ptp_adjtime; in i40e_ptp_create_clock()
615 pf->ptp_caps.gettime64 = i40e_ptp_gettime; in i40e_ptp_create_clock()
616 pf->ptp_caps.settime64 = i40e_ptp_settime; in i40e_ptp_create_clock()
617 pf->ptp_caps.enable = i40e_ptp_feature_enable; in i40e_ptp_create_clock()
620 pf->ptp_clock = ptp_clock_register(&pf->ptp_caps, &pf->pdev->dev); in i40e_ptp_create_clock()
621 if (IS_ERR(pf->ptp_clock)) in i40e_ptp_create_clock()
622 return PTR_ERR(pf->ptp_clock); in i40e_ptp_create_clock()
628 pf->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE; in i40e_ptp_create_clock()
629 pf->tstamp_config.tx_type = HWTSTAMP_TX_OFF; in i40e_ptp_create_clock()
642 void i40e_ptp_init(struct i40e_pf *pf) in i40e_ptp_init() argument
644 struct net_device *netdev = pf->vsi[pf->lan_vsi]->netdev; in i40e_ptp_init()
645 struct i40e_hw *hw = &pf->hw; in i40e_ptp_init()
655 pf->flags &= ~I40E_FLAG_PTP; in i40e_ptp_init()
656 dev_info(&pf->pdev->dev, "%s: PTP not supported on %s\n", in i40e_ptp_init()
665 spin_lock_init(&pf->tmreg_lock); in i40e_ptp_init()
668 err = i40e_ptp_create_clock(pf); in i40e_ptp_init()
670 pf->ptp_clock = NULL; in i40e_ptp_init()
671 dev_err(&pf->pdev->dev, "%s: ptp_clock_register failed\n", in i40e_ptp_init()
677 if (pf->hw.debug_mask & I40E_DEBUG_LAN) in i40e_ptp_init()
678 dev_info(&pf->pdev->dev, "PHC enabled\n"); in i40e_ptp_init()
679 pf->flags |= I40E_FLAG_PTP; in i40e_ptp_init()
690 i40e_ptp_set_increment(pf); in i40e_ptp_init()
693 i40e_ptp_set_timestamp_mode(pf, &pf->tstamp_config); in i40e_ptp_init()
697 i40e_ptp_settime(&pf->ptp_caps, &ts); in i40e_ptp_init()
708 void i40e_ptp_stop(struct i40e_pf *pf) in i40e_ptp_stop() argument
710 pf->flags &= ~I40E_FLAG_PTP; in i40e_ptp_stop()
711 pf->ptp_tx = false; in i40e_ptp_stop()
712 pf->ptp_rx = false; in i40e_ptp_stop()
714 if (pf->ptp_tx_skb) { in i40e_ptp_stop()
715 dev_kfree_skb_any(pf->ptp_tx_skb); in i40e_ptp_stop()
716 pf->ptp_tx_skb = NULL; in i40e_ptp_stop()
717 clear_bit_unlock(__I40E_PTP_TX_IN_PROGRESS, &pf->state); in i40e_ptp_stop()
720 if (pf->ptp_clock) { in i40e_ptp_stop()
721 ptp_clock_unregister(pf->ptp_clock); in i40e_ptp_stop()
722 pf->ptp_clock = NULL; in i40e_ptp_stop()
723 dev_info(&pf->pdev->dev, "%s: removed PHC on %s\n", __func__, in i40e_ptp_stop()
724 pf->vsi[pf->lan_vsi]->netdev->name); in i40e_ptp_stop()