From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
To: Cody Haas <chaas@riotgames.com>
Cc: <anthony.l.nguyen@intel.com>, <andrew+netdev@lunn.ch>,
<davem@davemloft.net>, <kuba@kernel.org>, <pabeni@redhat.com>,
<netdev@vger.kernel.org>, <intel-wired-lan@lists.osuosl.org>
Subject: Re: [PATCH iwl-net v2 0/1] ice: Fix persistent failure in ice_get_rxfh
Date: Mon, 15 Dec 2025 14:18:21 +0100 [thread overview]
Message-ID: <007b4664-acce-4e14-b284-a36dd3a88e8a@intel.com> (raw)
In-Reply-To: <20251213002226.556611-2-chaas@riotgames.com>
On 12/13/25 01:22, Cody Haas wrote:
> Several ioctl functions have the ability to call ice_get_rxfh, however
> all of these ioctl functions do not provide all of the expected
> information in ethtool_rxfh_param. For example, ethtool_get_rxfh_indir does
> not provide an rss_key. This previously caused ethtool_get_rxfh_indir to
> always fail with -EINVAL.
>
> This change draws inspiration from i40e_get_rss to handle this
> situation, by only calling the appropriate rss helpers when the
> necessary information has been provided via ethtool_rxfh_param.
>
> Fixes: b66a972abb6b ("ice: Refactor ice_set/get_rss into LUT and key specific functions")
> Signed-off-by: Cody Haas <chaas@riotgames.com>
> Closes: https://lore.kernel.org/intel-wired-lan/CAH7f-UKkJV8MLY7zCdgCrGE55whRhbGAXvgkDnwgiZ9gUZT7_w@mail.gmail.com/
thank you for the fix,
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
next time please do link to the previous revision and add a changelog
(no need to respin just for that!)
> ---
> drivers/net/ethernet/intel/ice/ice.h | 1 +
> drivers/net/ethernet/intel/ice/ice_ethtool.c | 6 +----
> drivers/net/ethernet/intel/ice/ice_main.c | 28 ++++++++++++++++++++
> 3 files changed, 30 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
> index c9104b13e1d2..87f4098324ed 100644
> --- a/drivers/net/ethernet/intel/ice/ice.h
> +++ b/drivers/net/ethernet/intel/ice/ice.h
> @@ -953,6 +953,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);
> diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> index b0805704834d..a5c139cc536d 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> @@ -3649,11 +3649,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;
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
> index b084839eb811..c653029f07c1 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -8072,6 +8072,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
> + *
> + * Returns 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
next prev parent reply other threads:[~2025-12-15 13:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-13 0:22 [PATCH iwl-net v2 0/1] ice: Fix persistent failure in ice_get_rxfh Cody Haas
2025-12-13 0:22 ` Cody Haas
2025-12-15 8:51 ` [Intel-wired-lan] " Loktionov, Aleksandr
2025-12-15 13:18 ` Przemek Kitszel [this message]
2025-12-15 17:59 ` Cody Haas
2026-01-15 16:26 ` [Intel-wired-lan] " Rinitha, SX
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=007b4664-acce-4e14-b284-a36dd3a88e8a@intel.com \
--to=przemyslaw.kitszel@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=chaas@riotgames.com \
--cc=davem@davemloft.net \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox