Skip to content

Commit 1bb3c54

Browse files
committed
Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2024-08-28 (igb, ice) This series contains updates to igb and ice drivers. Daiwei Li restores writing the TSICR (TimeSync Interrupt Cause) register on 82850 devices to workaround a hardware issue for igb. Dawid detaches netdev device for reset to avoid ethtool accesses during reset causing NULL pointer dereferences on ice. * '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: ice: Add netif_device_attach/detach into PF reset flow igb: Fix not clearing TimeSync interrupts for 82580 ==================== Link: https://patch.msgid.link/20240828225444.645154-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents b57d643 + d11a676 commit 1bb3c54

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

drivers/net/ethernet/intel/ice/ice_main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,9 @@ ice_prepare_for_reset(struct ice_pf *pf, enum ice_reset_req reset_type)
608608
memset(&vsi->mqprio_qopt, 0, sizeof(vsi->mqprio_qopt));
609609
}
610610
}
611+
612+
if (vsi->netdev)
613+
netif_device_detach(vsi->netdev);
611614
skip:
612615

613616
/* clear SW filtering DB */
@@ -7589,6 +7592,7 @@ static void ice_update_pf_netdev_link(struct ice_pf *pf)
75897592
*/
75907593
static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type)
75917594
{
7595+
struct ice_vsi *vsi = ice_get_main_vsi(pf);
75927596
struct device *dev = ice_pf_to_dev(pf);
75937597
struct ice_hw *hw = &pf->hw;
75947598
bool dvm;
@@ -7731,6 +7735,9 @@ static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type)
77317735
ice_rebuild_arfs(pf);
77327736
}
77337737

7738+
if (vsi && vsi->netdev)
7739+
netif_device_attach(vsi->netdev);
7740+
77347741
ice_update_pf_netdev_link(pf);
77357742

77367743
/* tell the firmware we are up */

drivers/net/ethernet/intel/igb/igb_main.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6960,10 +6960,20 @@ static void igb_extts(struct igb_adapter *adapter, int tsintr_tt)
69606960

69616961
static void igb_tsync_interrupt(struct igb_adapter *adapter)
69626962
{
6963+
const u32 mask = (TSINTR_SYS_WRAP | E1000_TSICR_TXTS |
6964+
TSINTR_TT0 | TSINTR_TT1 |
6965+
TSINTR_AUTT0 | TSINTR_AUTT1);
69636966
struct e1000_hw *hw = &adapter->hw;
69646967
u32 tsicr = rd32(E1000_TSICR);
69656968
struct ptp_clock_event event;
69666969

6970+
if (hw->mac.type == e1000_82580) {
6971+
/* 82580 has a hardware bug that requires an explicit
6972+
* write to clear the TimeSync interrupt cause.
6973+
*/
6974+
wr32(E1000_TSICR, tsicr & mask);
6975+
}
6976+
69676977
if (tsicr & TSINTR_SYS_WRAP) {
69686978
event.type = PTP_CLOCK_PPS;
69696979
if (adapter->ptp_caps.pps)

0 commit comments

Comments
 (0)