Commit 869f3f7f authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files
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: default avatarJakub Kicinski <kuba@kernel.org>
parents dfca045c bdfc7b55
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -460,6 +460,7 @@ static void ice_devlink_reinit_down(struct ice_pf *pf)
	ice_vsi_decfg(ice_get_main_vsi(pf));
	rtnl_unlock();
	ice_deinit_pf(pf);
	ice_deinit_hw(&pf->hw);
	ice_deinit_dev(pf);
}

+1 −0
Original line number Diff line number Diff line
@@ -979,6 +979,7 @@ void ice_map_xdp_rings(struct ice_vsi *vsi);
int
ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
	     u32 flags);
int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size);
int ice_set_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size);
int ice_get_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size);
int ice_set_rss_key(struct ice_vsi *vsi, u8 *seed);
+1 −5
Original line number Diff line number Diff line
@@ -3626,11 +3626,7 @@ ice_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh)
	if (!lut)
		return -ENOMEM;

	err = ice_get_rss_key(vsi, rxfh->key);
	if (err)
		goto out;

	err = ice_get_rss_lut(vsi, lut, vsi->rss_table_size);
	err = ice_get_rss(vsi, rxfh->key, lut, vsi->rss_table_size);
	if (err)
		goto out;

+29 −2
Original line number Diff line number Diff line
@@ -4836,6 +4836,7 @@ static void ice_deinit_features(struct ice_pf *pf)
		ice_dpll_deinit(pf);
	if (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_SWITCHDEV)
		xa_destroy(&pf->eswitch.reprs);
	ice_hwmon_exit(pf);
}

static void ice_init_wakeup(struct ice_pf *pf)
@@ -5437,8 +5438,6 @@ static void ice_remove(struct pci_dev *pdev)
		ice_free_vfs(pf);
	}

	ice_hwmon_exit(pf);

	if (!ice_is_safe_mode(pf))
		ice_remove_arfs(pf);

@@ -7988,6 +7987,34 @@ int ice_get_rss_key(struct ice_vsi *vsi, u8 *seed)
	return status;
}

/**
 * ice_get_rss - Get RSS LUT and/or key
 * @vsi: Pointer to VSI structure
 * @seed: Buffer to store the key in
 * @lut: Buffer to store the lookup table entries
 * @lut_size: Size of buffer to store the lookup table entries
 *
 * Return: 0 on success, negative on failure
 */
int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size)
{
	int err;

	if (seed) {
		err = ice_get_rss_key(vsi, seed);
		if (err)
			return err;
	}

	if (lut) {
		err = ice_get_rss_lut(vsi, lut, lut_size);
		if (err)
			return err;
	}

	return 0;
}

/**
 * ice_set_rss_hfunc - Set RSS HASH function
 * @vsi: Pointer to VSI structure
+1 −1
Original line number Diff line number Diff line
@@ -108,11 +108,11 @@ static u64 idpf_ptp_read_src_clk_reg_direct(struct idpf_adapter *adapter,
	ptp_read_system_prets(sts);

	idpf_ptp_enable_shtime(adapter);
	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);

	/* Read the system timestamp post PHC read */
	ptp_read_system_postts(sts);

	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);
	hi = readl(ptp->dev_clk_regs.dev_clk_ns_h);

	spin_unlock(&ptp->read_dev_clk_lock);