Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue

Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf)

For ice:
Cody Haas breaks dependency of needing both RSS key and LUT for
ice_get_rxfh() as ethtool ioctls do not always supply both.

Paul fixes issues related to devlink reload; adding missing deinit HW
call and moving hwmon exit function to the proper call chain.

For idpf:
Mina Almasry moves a register read call into the time sandwich to ensure
the register is properly flushed.

* '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
idpf: read lower clock bits inside the time sandwich
ice: fix devlink reload call trace
ice: add missing ice_deinit_hw() in devlink reinit path
ice: Fix persistent failure in ice_get_rxfh
====================

Link: https://patch.msgid.link/20260120224430.410377-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+33 -8
+1
drivers/net/ethernet/intel/ice/devlink/devlink.c
··· 460 460 ice_vsi_decfg(ice_get_main_vsi(pf)); 461 461 rtnl_unlock(); 462 462 ice_deinit_pf(pf); 463 + ice_deinit_hw(&pf->hw); 463 464 ice_deinit_dev(pf); 464 465 } 465 466
+1
drivers/net/ethernet/intel/ice/ice.h
··· 979 979 int 980 980 ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames, 981 981 u32 flags); 982 + int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size); 982 983 int ice_set_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size); 983 984 int ice_get_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size); 984 985 int ice_set_rss_key(struct ice_vsi *vsi, u8 *seed);
+1 -5
drivers/net/ethernet/intel/ice/ice_ethtool.c
··· 3626 3626 if (!lut) 3627 3627 return -ENOMEM; 3628 3628 3629 - err = ice_get_rss_key(vsi, rxfh->key); 3630 - if (err) 3631 - goto out; 3632 - 3633 - err = ice_get_rss_lut(vsi, lut, vsi->rss_table_size); 3629 + err = ice_get_rss(vsi, rxfh->key, lut, vsi->rss_table_size); 3634 3630 if (err) 3635 3631 goto out; 3636 3632
+29 -2
drivers/net/ethernet/intel/ice/ice_main.c
··· 4836 4836 ice_dpll_deinit(pf); 4837 4837 if (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_SWITCHDEV) 4838 4838 xa_destroy(&pf->eswitch.reprs); 4839 + ice_hwmon_exit(pf); 4839 4840 } 4840 4841 4841 4842 static void ice_init_wakeup(struct ice_pf *pf) ··· 5437 5436 set_bit(ICE_VF_RESETS_DISABLED, pf->state); 5438 5437 ice_free_vfs(pf); 5439 5438 } 5440 - 5441 - ice_hwmon_exit(pf); 5442 5439 5443 5440 if (!ice_is_safe_mode(pf)) 5444 5441 ice_remove_arfs(pf); ··· 7985 7986 status, libie_aq_str(hw->adminq.sq_last_status)); 7986 7987 7987 7988 return status; 7989 + } 7990 + 7991 + /** 7992 + * ice_get_rss - Get RSS LUT and/or key 7993 + * @vsi: Pointer to VSI structure 7994 + * @seed: Buffer to store the key in 7995 + * @lut: Buffer to store the lookup table entries 7996 + * @lut_size: Size of buffer to store the lookup table entries 7997 + * 7998 + * Return: 0 on success, negative on failure 7999 + */ 8000 + int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size) 8001 + { 8002 + int err; 8003 + 8004 + if (seed) { 8005 + err = ice_get_rss_key(vsi, seed); 8006 + if (err) 8007 + return err; 8008 + } 8009 + 8010 + if (lut) { 8011 + err = ice_get_rss_lut(vsi, lut, lut_size); 8012 + if (err) 8013 + return err; 8014 + } 8015 + 8016 + return 0; 7988 8017 } 7989 8018 7990 8019 /**
+1 -1
drivers/net/ethernet/intel/idpf/idpf_ptp.c
··· 108 108 ptp_read_system_prets(sts); 109 109 110 110 idpf_ptp_enable_shtime(adapter); 111 + lo = readl(ptp->dev_clk_regs.dev_clk_ns_l); 111 112 112 113 /* Read the system timestamp post PHC read */ 113 114 ptp_read_system_postts(sts); 114 115 115 - lo = readl(ptp->dev_clk_regs.dev_clk_ns_l); 116 116 hi = readl(ptp->dev_clk_regs.dev_clk_ns_h); 117 117 118 118 spin_unlock(&ptp->read_dev_clk_lock);