Lines Matching refs:adapter

77 static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter);
119 static void igb_ptp_read_i210(struct igb_adapter *adapter, in igb_ptp_read_i210() argument
122 struct e1000_hw *hw = &adapter->hw; in igb_ptp_read_i210()
137 static void igb_ptp_write_i210(struct igb_adapter *adapter, in igb_ptp_write_i210() argument
140 struct e1000_hw *hw = &adapter->hw; in igb_ptp_write_i210()
166 static void igb_ptp_systim_to_hwtstamp(struct igb_adapter *adapter, in igb_ptp_systim_to_hwtstamp() argument
173 switch (adapter->hw.mac.type) { in igb_ptp_systim_to_hwtstamp()
178 spin_lock_irqsave(&adapter->tmreg_lock, flags); in igb_ptp_systim_to_hwtstamp()
180 ns = timecounter_cyc2time(&adapter->tc, systim); in igb_ptp_systim_to_hwtstamp()
182 spin_unlock_irqrestore(&adapter->tmreg_lock, flags); in igb_ptp_systim_to_hwtstamp()
630 struct igb_adapter *adapter = container_of(work, struct igb_adapter, in igb_ptp_tx_work() local
632 struct e1000_hw *hw = &adapter->hw; in igb_ptp_tx_work()
635 if (!adapter->ptp_tx_skb) in igb_ptp_tx_work()
638 if (time_is_before_jiffies(adapter->ptp_tx_start + in igb_ptp_tx_work()
640 dev_kfree_skb_any(adapter->ptp_tx_skb); in igb_ptp_tx_work()
641 adapter->ptp_tx_skb = NULL; in igb_ptp_tx_work()
642 clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state); in igb_ptp_tx_work()
643 adapter->tx_hwtstamp_timeouts++; in igb_ptp_tx_work()
644 dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang\n"); in igb_ptp_tx_work()
650 igb_ptp_tx_hwtstamp(adapter); in igb_ptp_tx_work()
653 schedule_work(&adapter->ptp_tx_work); in igb_ptp_tx_work()
680 void igb_ptp_rx_hang(struct igb_adapter *adapter) in igb_ptp_rx_hang() argument
682 struct e1000_hw *hw = &adapter->hw; in igb_ptp_rx_hang()
693 adapter->last_rx_ptp_check = jiffies; in igb_ptp_rx_hang()
698 rx_event = adapter->last_rx_ptp_check; in igb_ptp_rx_hang()
699 if (time_after(adapter->last_rx_timestamp, rx_event)) in igb_ptp_rx_hang()
700 rx_event = adapter->last_rx_timestamp; in igb_ptp_rx_hang()
705 adapter->last_rx_ptp_check = jiffies; in igb_ptp_rx_hang()
706 adapter->rx_hwtstamp_cleared++; in igb_ptp_rx_hang()
707 dev_warn(&adapter->pdev->dev, "clearing Rx timestamp hang\n"); in igb_ptp_rx_hang()
719 static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter) in igb_ptp_tx_hwtstamp() argument
721 struct e1000_hw *hw = &adapter->hw; in igb_ptp_tx_hwtstamp()
728 igb_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval); in igb_ptp_tx_hwtstamp()
729 skb_tstamp_tx(adapter->ptp_tx_skb, &shhwtstamps); in igb_ptp_tx_hwtstamp()
730 dev_kfree_skb_any(adapter->ptp_tx_skb); in igb_ptp_tx_hwtstamp()
731 adapter->ptp_tx_skb = NULL; in igb_ptp_tx_hwtstamp()
732 clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state); in igb_ptp_tx_hwtstamp()
755 igb_ptp_systim_to_hwtstamp(q_vector->adapter, skb_hwtstamps(skb), in igb_ptp_rx_pktstamp()
770 struct igb_adapter *adapter = q_vector->adapter; in igb_ptp_rx_rgtstamp() local
771 struct e1000_hw *hw = &adapter->hw; in igb_ptp_rx_rgtstamp()
790 igb_ptp_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), regval); in igb_ptp_rx_rgtstamp()
795 adapter->last_rx_timestamp = jiffies; in igb_ptp_rx_rgtstamp()
809 struct igb_adapter *adapter = netdev_priv(netdev); in igb_ptp_get_ts_config() local
810 struct hwtstamp_config *config = &adapter->tstamp_config; in igb_ptp_get_ts_config()
833 static int igb_ptp_set_timestamp_mode(struct igb_adapter *adapter, in igb_ptp_set_timestamp_mode() argument
836 struct e1000_hw *hw = &adapter->hw; in igb_ptp_set_timestamp_mode()
989 struct igb_adapter *adapter = netdev_priv(netdev); in igb_ptp_set_ts_config() local
996 err = igb_ptp_set_timestamp_mode(adapter, &config); in igb_ptp_set_ts_config()
1001 memcpy(&adapter->tstamp_config, &config, in igb_ptp_set_ts_config()
1002 sizeof(adapter->tstamp_config)); in igb_ptp_set_ts_config()
1008 void igb_ptp_init(struct igb_adapter *adapter) in igb_ptp_init() argument
1010 struct e1000_hw *hw = &adapter->hw; in igb_ptp_init()
1011 struct net_device *netdev = adapter->netdev; in igb_ptp_init()
1016 snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr); in igb_ptp_init()
1017 adapter->ptp_caps.owner = THIS_MODULE; in igb_ptp_init()
1018 adapter->ptp_caps.max_adj = 999999881; in igb_ptp_init()
1019 adapter->ptp_caps.n_ext_ts = 0; in igb_ptp_init()
1020 adapter->ptp_caps.pps = 0; in igb_ptp_init()
1021 adapter->ptp_caps.adjfreq = igb_ptp_adjfreq_82576; in igb_ptp_init()
1022 adapter->ptp_caps.adjtime = igb_ptp_adjtime_82576; in igb_ptp_init()
1023 adapter->ptp_caps.gettime64 = igb_ptp_gettime_82576; in igb_ptp_init()
1024 adapter->ptp_caps.settime64 = igb_ptp_settime_82576; in igb_ptp_init()
1025 adapter->ptp_caps.enable = igb_ptp_feature_enable; in igb_ptp_init()
1026 adapter->cc.read = igb_ptp_read_82576; in igb_ptp_init()
1027 adapter->cc.mask = CYCLECOUNTER_MASK(64); in igb_ptp_init()
1028 adapter->cc.mult = 1; in igb_ptp_init()
1029 adapter->cc.shift = IGB_82576_TSYNC_SHIFT; in igb_ptp_init()
1036 snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr); in igb_ptp_init()
1037 adapter->ptp_caps.owner = THIS_MODULE; in igb_ptp_init()
1038 adapter->ptp_caps.max_adj = 62499999; in igb_ptp_init()
1039 adapter->ptp_caps.n_ext_ts = 0; in igb_ptp_init()
1040 adapter->ptp_caps.pps = 0; in igb_ptp_init()
1041 adapter->ptp_caps.adjfreq = igb_ptp_adjfreq_82580; in igb_ptp_init()
1042 adapter->ptp_caps.adjtime = igb_ptp_adjtime_82576; in igb_ptp_init()
1043 adapter->ptp_caps.gettime64 = igb_ptp_gettime_82576; in igb_ptp_init()
1044 adapter->ptp_caps.settime64 = igb_ptp_settime_82576; in igb_ptp_init()
1045 adapter->ptp_caps.enable = igb_ptp_feature_enable; in igb_ptp_init()
1046 adapter->cc.read = igb_ptp_read_82580; in igb_ptp_init()
1047 adapter->cc.mask = CYCLECOUNTER_MASK(IGB_NBITS_82580); in igb_ptp_init()
1048 adapter->cc.mult = 1; in igb_ptp_init()
1049 adapter->cc.shift = 0; in igb_ptp_init()
1056 struct ptp_pin_desc *ppd = &adapter->sdp_config[i]; in igb_ptp_init()
1062 snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr); in igb_ptp_init()
1063 adapter->ptp_caps.owner = THIS_MODULE; in igb_ptp_init()
1064 adapter->ptp_caps.max_adj = 62499999; in igb_ptp_init()
1065 adapter->ptp_caps.n_ext_ts = IGB_N_EXTTS; in igb_ptp_init()
1066 adapter->ptp_caps.n_per_out = IGB_N_PEROUT; in igb_ptp_init()
1067 adapter->ptp_caps.n_pins = IGB_N_SDP; in igb_ptp_init()
1068 adapter->ptp_caps.pps = 1; in igb_ptp_init()
1069 adapter->ptp_caps.pin_config = adapter->sdp_config; in igb_ptp_init()
1070 adapter->ptp_caps.adjfreq = igb_ptp_adjfreq_82580; in igb_ptp_init()
1071 adapter->ptp_caps.adjtime = igb_ptp_adjtime_i210; in igb_ptp_init()
1072 adapter->ptp_caps.gettime64 = igb_ptp_gettime_i210; in igb_ptp_init()
1073 adapter->ptp_caps.settime64 = igb_ptp_settime_i210; in igb_ptp_init()
1074 adapter->ptp_caps.enable = igb_ptp_feature_enable_i210; in igb_ptp_init()
1075 adapter->ptp_caps.verify = igb_ptp_verify_pin; in igb_ptp_init()
1080 adapter->ptp_clock = NULL; in igb_ptp_init()
1086 spin_lock_init(&adapter->tmreg_lock); in igb_ptp_init()
1087 INIT_WORK(&adapter->ptp_tx_work, igb_ptp_tx_work); in igb_ptp_init()
1093 igb_ptp_settime_i210(&adapter->ptp_caps, &ts); in igb_ptp_init()
1095 timecounter_init(&adapter->tc, &adapter->cc, in igb_ptp_init()
1098 INIT_DELAYED_WORK(&adapter->ptp_overflow_work, in igb_ptp_init()
1101 schedule_delayed_work(&adapter->ptp_overflow_work, in igb_ptp_init()
1111 adapter->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE; in igb_ptp_init()
1112 adapter->tstamp_config.tx_type = HWTSTAMP_TX_OFF; in igb_ptp_init()
1114 adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps, in igb_ptp_init()
1115 &adapter->pdev->dev); in igb_ptp_init()
1116 if (IS_ERR(adapter->ptp_clock)) { in igb_ptp_init()
1117 adapter->ptp_clock = NULL; in igb_ptp_init()
1118 dev_err(&adapter->pdev->dev, "ptp_clock_register failed\n"); in igb_ptp_init()
1120 dev_info(&adapter->pdev->dev, "added PHC on %s\n", in igb_ptp_init()
1121 adapter->netdev->name); in igb_ptp_init()
1122 adapter->flags |= IGB_FLAG_PTP; in igb_ptp_init()
1132 void igb_ptp_stop(struct igb_adapter *adapter) in igb_ptp_stop() argument
1134 switch (adapter->hw.mac.type) { in igb_ptp_stop()
1139 cancel_delayed_work_sync(&adapter->ptp_overflow_work); in igb_ptp_stop()
1149 cancel_work_sync(&adapter->ptp_tx_work); in igb_ptp_stop()
1150 if (adapter->ptp_tx_skb) { in igb_ptp_stop()
1151 dev_kfree_skb_any(adapter->ptp_tx_skb); in igb_ptp_stop()
1152 adapter->ptp_tx_skb = NULL; in igb_ptp_stop()
1153 clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state); in igb_ptp_stop()
1156 if (adapter->ptp_clock) { in igb_ptp_stop()
1157 ptp_clock_unregister(adapter->ptp_clock); in igb_ptp_stop()
1158 dev_info(&adapter->pdev->dev, "removed PHC on %s\n", in igb_ptp_stop()
1159 adapter->netdev->name); in igb_ptp_stop()
1160 adapter->flags &= ~IGB_FLAG_PTP; in igb_ptp_stop()
1170 void igb_ptp_reset(struct igb_adapter *adapter) in igb_ptp_reset() argument
1172 struct e1000_hw *hw = &adapter->hw; in igb_ptp_reset()
1175 if (!(adapter->flags & IGB_FLAG_PTP)) in igb_ptp_reset()
1179 igb_ptp_set_timestamp_mode(adapter, &adapter->tstamp_config); in igb_ptp_reset()
1181 spin_lock_irqsave(&adapter->tmreg_lock, flags); in igb_ptp_reset()
1183 switch (adapter->hw.mac.type) { in igb_ptp_reset()
1207 igb_ptp_write_i210(adapter, &ts); in igb_ptp_reset()
1209 timecounter_init(&adapter->tc, &adapter->cc, in igb_ptp_reset()
1213 spin_unlock_irqrestore(&adapter->tmreg_lock, flags); in igb_ptp_reset()