* [PATCH iwl-next v3 0/3] igb: add RSS key get/set support
@ 2026-01-19 8:45 Takashi Kozu
2026-01-19 8:45 ` [PATCH iwl-next v3 1/3] igb: prepare for " Takashi Kozu
2026-01-19 8:45 ` [PATCH iwl-next v3 2/3] igb: expose RSS key via ethtool get_rxfh Takashi Kozu
0 siblings, 2 replies; 5+ messages in thread
From: Takashi Kozu @ 2026-01-19 8:45 UTC (permalink / raw)
To: anthony.l.nguyen
Cc: przemyslaw.kitszel, andrew+netdev, davem, edumazet, kuba, pabeni,
intel-wired-lan, netdev, aleksandr.loktionov, pmenzel,
piotr.kwapulinski, Takashi Kozu
This series adds ethtool get/set support for the RSS hash key in the igb
driver.
- `ethtool -x <dev>` to display the RSS key
- `ethtool -X <dev> hkey <key>` to configure the RSS key
Without patch:
# ethtool -x $DEV | grep key -A1
RSS hash key:
Operation not supported
# ethtool -X $DEV hkey 00:00:00:00:00:00:00:00:00:00:00:00:000
Cannot set RX flow hash configuration:
Hash key setting not supported
With patch:
# ethtool -x $DEV | grep key -A1
RSS hash key:
86:5d:11:56:bd:6f:20:38:3b:f8:bb:df:00:3a:b0:24:95:9f:f9:f4:25:a3:01:3e:4a:15:d6:7c:4d:af:39:7e:4a:95:f2:fd:f6:b6:26:f7
# ethtool -X $DEV hkey 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
# ethtool -x $DEV | grep key -A1
RSS hash key:
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
<Changelog>
v3:
- add ASSERT_RTNL() to explicitly show that an rtnl lock is being used
- Move netdev_rss_key_fill() function from igb_setup_mrqc() to igb_sw_init()
- Add kernel-doc header to igb_write_rss_key()
<Test>
- tools/testing/selftests/drivers/net/hw/rss_api.py is successful
Run the following command
# NETIF=enp0s3 python tools/testing/selftests/drivers/net/hw/rss_api.py | grep -v "# Exception"
Then, I checked the diffs before and after applying the patch
$ diff beforePatch.txt afterPatch.txt
9c9
< not ok 6 rss_api.test_rxfh_nl_set_key
---
> ok 6 rss_api.test_rxfh_nl_set_key
16c16
< # Totals: pass:4 fail:8 xfail:0 xpass:0 skip:0 error:0
---
> # Totals: pass:5 fail:7 xfail:0 xpass:0 skip:0 error:0
The failing tests originally fails due to hardware.
- tools/testing/selftests/drivers/net/hw/toeplitz.py is untested since there is no actual hardware, but since the logic around wr32() is preserved as it is, key writing to the device remain the same.
v2: Fix typos (igc_* → igb_*)
https://lore.kernel.org/intel-wired-lan/20260108052020.84218-5-takkozu@amazon.com/T/
v1: https://lore.kernel.org/all/20251205082106.4028-5-takkozu@amazon.com/
Takashi Kozu (3):
igb: prepare for RSS key get/set support
igb: expose RSS key via ethtool get_rxfh
igb: allow configuring RSS key via ethtool set_rxfh
drivers/net/ethernet/intel/igb/igb.h | 4 +
drivers/net/ethernet/intel/igb/igb_ethtool.c | 86 ++++++++++++++------
drivers/net/ethernet/intel/igb/igb_main.c | 9 +-
3 files changed, 69 insertions(+), 30 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set support
2026-01-19 8:45 [PATCH iwl-next v3 0/3] igb: add RSS key get/set support Takashi Kozu
@ 2026-01-19 8:45 ` Takashi Kozu
2026-01-19 10:19 ` Loktionov, Aleksandr
2026-01-19 8:45 ` [PATCH iwl-next v3 2/3] igb: expose RSS key via ethtool get_rxfh Takashi Kozu
1 sibling, 1 reply; 5+ messages in thread
From: Takashi Kozu @ 2026-01-19 8:45 UTC (permalink / raw)
To: anthony.l.nguyen
Cc: przemyslaw.kitszel, andrew+netdev, davem, edumazet, kuba, pabeni,
intel-wired-lan, netdev, aleksandr.loktionov, pmenzel,
piotr.kwapulinski, Takashi Kozu
Store the RSS key inside struct igb_adapter and introduce the
igb_write_rss_key() helper function. This allows the driver to program
the E1000 registers using a persistent RSS key, instead of using a
stack-local buffer in igb_setup_mrqc().
Signed-off-by: Takashi Kozu <takkozu@amazon.com>
---
drivers/net/ethernet/intel/igb/igb.h | 3 +++
drivers/net/ethernet/intel/igb/igb_ethtool.c | 21 ++++++++++++++++++++
drivers/net/ethernet/intel/igb/igb_main.c | 8 ++++----
3 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index 0fff1df81b7b..8c9b02058cec 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -495,6 +495,7 @@ struct hwmon_buff {
#define IGB_N_PEROUT 2
#define IGB_N_SDP 4
#define IGB_RETA_SIZE 128
+#define IGB_RSS_KEY_SIZE 40
enum igb_filter_match_flags {
IGB_FILTER_FLAG_ETHER_TYPE = 0x1,
@@ -655,6 +656,7 @@ struct igb_adapter {
struct i2c_client *i2c_client;
u32 rss_indir_tbl_init;
u8 rss_indir_tbl[IGB_RETA_SIZE];
+ u8 rss_key[IGB_RSS_KEY_SIZE];
unsigned long link_check_timeout;
int copper_tries;
@@ -735,6 +737,7 @@ void igb_down(struct igb_adapter *);
void igb_reinit_locked(struct igb_adapter *);
void igb_reset(struct igb_adapter *);
int igb_reinit_queues(struct igb_adapter *);
+void igb_write_rss_key(struct igb_adapter *adapter);
void igb_write_rss_indir_tbl(struct igb_adapter *);
int igb_set_spd_dplx(struct igb_adapter *, u32, u8);
int igb_setup_tx_resources(struct igb_ring *);
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 10e2445e0ded..5107b0de4fa3 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -3016,6 +3016,27 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
return ret;
}
+/**
+ * igb_write_rss_key - Program the RSS key into device registers
+ * @adapter: board private structure
+ *
+ * Write the RSS key stored in adapter->rss_key to the E1000 hardware registers.
+ * Each 32-bit chunk of the key is read using get_unaligned_le32() and written
+ * to the appropriate register.
+ */
+void igb_write_rss_key(struct igb_adapter *adapter)
+{
+ ASSERT_RTNL();
+
+ struct e1000_hw *hw = &adapter->hw;
+
+ for (int i = 0; i < IGB_RSS_KEY_SIZE / 4; i++) {
+ u32 val = get_unaligned_le32(&adapter->rss_key[i * 4]);
+
+ wr32(E1000_RSSRK(i), val);
+ }
+}
+
static int igb_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
{
struct igb_adapter *adapter = netdev_priv(netdev);
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 85f9589cc568..568f491053ce 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4050,6 +4050,9 @@ static int igb_sw_init(struct igb_adapter *adapter)
pci_read_config_word(pdev, PCI_COMMAND, &hw->bus.pci_cmd_word);
+ /* init RSS key */
+ netdev_rss_key_fill(adapter->rss_key, sizeof(adapter->rss_key));
+
/* set default ring sizes */
adapter->tx_ring_count = IGB_DEFAULT_TXD;
adapter->rx_ring_count = IGB_DEFAULT_RXD;
@@ -4525,11 +4528,8 @@ static void igb_setup_mrqc(struct igb_adapter *adapter)
struct e1000_hw *hw = &adapter->hw;
u32 mrqc, rxcsum;
u32 j, num_rx_queues;
- u32 rss_key[10];
- netdev_rss_key_fill(rss_key, sizeof(rss_key));
- for (j = 0; j < 10; j++)
- wr32(E1000_RSSRK(j), rss_key[j]);
+ igb_write_rss_key(adapter);
num_rx_queues = adapter->rss_queues;
--
2.52.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH iwl-next v3 2/3] igb: expose RSS key via ethtool get_rxfh
2026-01-19 8:45 [PATCH iwl-next v3 0/3] igb: add RSS key get/set support Takashi Kozu
2026-01-19 8:45 ` [PATCH iwl-next v3 1/3] igb: prepare for " Takashi Kozu
@ 2026-01-19 8:45 ` Takashi Kozu
1 sibling, 0 replies; 5+ messages in thread
From: Takashi Kozu @ 2026-01-19 8:45 UTC (permalink / raw)
To: anthony.l.nguyen
Cc: przemyslaw.kitszel, andrew+netdev, davem, edumazet, kuba, pabeni,
intel-wired-lan, netdev, aleksandr.loktionov, pmenzel,
piotr.kwapulinski, Takashi Kozu
Implement igb_get_rxfh_key_size() and extend
igb_get_rxfh() to return the RSS key to userspace.
This can be tested using `ethtool -x <dev>`.
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Takashi Kozu <takkozu@amazon.com>
---
drivers/net/ethernet/intel/igb/igb_ethtool.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 5107b0de4fa3..2251f30378ab 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -3294,10 +3294,12 @@ static int igb_get_rxfh(struct net_device *netdev,
int i;
rxfh->hfunc = ETH_RSS_HASH_TOP;
- if (!rxfh->indir)
- return 0;
- for (i = 0; i < IGB_RETA_SIZE; i++)
- rxfh->indir[i] = adapter->rss_indir_tbl[i];
+ if (rxfh->indir)
+ for (i = 0; i < IGB_RETA_SIZE; i++)
+ rxfh->indir[i] = adapter->rss_indir_tbl[i];
+
+ if (rxfh->key)
+ memcpy(rxfh->key, adapter->rss_key, sizeof(adapter->rss_key));
return 0;
}
@@ -3337,6 +3339,11 @@ void igb_write_rss_indir_tbl(struct igb_adapter *adapter)
}
}
+static u32 igb_get_rxfh_key_size(struct net_device *netdev)
+{
+ return IGB_RSS_KEY_SIZE;
+}
+
static int igb_set_rxfh(struct net_device *netdev,
struct ethtool_rxfh_param *rxfh,
struct netlink_ext_ack *extack)
@@ -3500,6 +3507,7 @@ static const struct ethtool_ops igb_ethtool_ops = {
.get_module_eeprom = igb_get_module_eeprom,
.get_rxfh_indir_size = igb_get_rxfh_indir_size,
.get_rxfh = igb_get_rxfh,
+ .get_rxfh_key_size = igb_get_rxfh_key_size,
.set_rxfh = igb_set_rxfh,
.get_rxfh_fields = igb_get_rxfh_fields,
.set_rxfh_fields = igb_set_rxfh_fields,
--
2.52.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set support
2026-01-19 8:45 ` [PATCH iwl-next v3 1/3] igb: prepare for " Takashi Kozu
@ 2026-01-19 10:19 ` Loktionov, Aleksandr
2026-01-20 4:09 ` [Intel-wired-lan] " Takashi Kozu
0 siblings, 1 reply; 5+ messages in thread
From: Loktionov, Aleksandr @ 2026-01-19 10:19 UTC (permalink / raw)
To: Takashi Kozu, Nguyen, Anthony L
Cc: Kitszel, Przemyslaw, andrew+netdev@lunn.ch, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
pmenzel@molgen.mpg.de, Kwapulinski, Piotr
> -----Original Message-----
> From: Takashi Kozu <takkozu@amazon.com>
> Sent: Monday, January 19, 2026 9:45 AM
> To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> Cc: Kitszel, Przemyslaw <przemyslaw.kitszel@intel.com>;
> andrew+netdev@lunn.ch; davem@davemloft.net; edumazet@google.com;
> kuba@kernel.org; pabeni@redhat.com; intel-wired-lan@lists.osuosl.org;
> netdev@vger.kernel.org; Loktionov, Aleksandr
> <aleksandr.loktionov@intel.com>; pmenzel@molgen.mpg.de; Kwapulinski,
> Piotr <piotr.kwapulinski@intel.com>; Takashi Kozu <takkozu@amazon.com>
> Subject: [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set
> support
>
> Store the RSS key inside struct igb_adapter and introduce the
> igb_write_rss_key() helper function. This allows the driver to program
> the E1000 registers using a persistent RSS key, instead of using a
> stack-local buffer in igb_setup_mrqc().
>
> Signed-off-by: Takashi Kozu <takkozu@amazon.com>
> ---
> drivers/net/ethernet/intel/igb/igb.h | 3 +++
> drivers/net/ethernet/intel/igb/igb_ethtool.c | 21
> ++++++++++++++++++++
> drivers/net/ethernet/intel/igb/igb_main.c | 8 ++++----
> 3 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/igb/igb.h
> b/drivers/net/ethernet/intel/igb/igb.h
> index 0fff1df81b7b..8c9b02058cec 100644
> --- a/drivers/net/ethernet/intel/igb/igb.h
> +++ b/drivers/net/ethernet/intel/igb/igb.h
> @@ -495,6 +495,7 @@ struct hwmon_buff {
> #define IGB_N_PEROUT 2
> #define IGB_N_SDP 4
> #define IGB_RETA_SIZE 128
> +#define IGB_RSS_KEY_SIZE 40
>
> enum igb_filter_match_flags {
> IGB_FILTER_FLAG_ETHER_TYPE = 0x1,
> @@ -655,6 +656,7 @@ struct igb_adapter {
> struct i2c_client *i2c_client;
> u32 rss_indir_tbl_init;
> u8 rss_indir_tbl[IGB_RETA_SIZE];
> + u8 rss_key[IGB_RSS_KEY_SIZE];
>
> unsigned long link_check_timeout;
> int copper_tries;
> @@ -735,6 +737,7 @@ void igb_down(struct igb_adapter *); void
> igb_reinit_locked(struct igb_adapter *); void igb_reset(struct
> igb_adapter *); int igb_reinit_queues(struct igb_adapter *);
> +void igb_write_rss_key(struct igb_adapter *adapter);
> void igb_write_rss_indir_tbl(struct igb_adapter *); int
> igb_set_spd_dplx(struct igb_adapter *, u32, u8); int
> igb_setup_tx_resources(struct igb_ring *); diff --git
> a/drivers/net/ethernet/intel/igb/igb_ethtool.c
> b/drivers/net/ethernet/intel/igb/igb_ethtool.c
> index 10e2445e0ded..5107b0de4fa3 100644
> --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
> +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
> @@ -3016,6 +3016,27 @@ static int igb_set_rxnfc(struct net_device
> *dev, struct ethtool_rxnfc *cmd)
> return ret;
> }
>
> +/**
> + * igb_write_rss_key - Program the RSS key into device registers
> + * @adapter: board private structure
> + *
> + * Write the RSS key stored in adapter->rss_key to the E1000 hardware
> registers.
> + * Each 32-bit chunk of the key is read using get_unaligned_le32()
> and
> +written
> + * to the appropriate register.
> + */
> +void igb_write_rss_key(struct igb_adapter *adapter) {
Opening brace placement violates kernel coding style. For functions,
the opening brace should be on the next line, not on the same line as the function declaration.
Or is it my mail-client issue?
> + ASSERT_RTNL();
> +
> + struct e1000_hw *hw = &adapter->hw;
Declarations should be at the start of the block.
I think ASSERT_RTNL(); can be moved down safely?
> +
> + for (int i = 0; i < IGB_RSS_KEY_SIZE / 4; i++) {
> + u32 val = get_unaligned_le32(&adapter->rss_key[i * 4]);
> +
> + wr32(E1000_RSSRK(i), val);
> + }
> +}
> +
> static int igb_get_eee(struct net_device *netdev, struct ethtool_keee
> *edata) {
> struct igb_adapter *adapter = netdev_priv(netdev); diff --git
> a/drivers/net/ethernet/intel/igb/igb_main.c
> b/drivers/net/ethernet/intel/igb/igb_main.c
> index 85f9589cc568..568f491053ce 100644
...
--
> 2.52.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set support
2026-01-19 10:19 ` Loktionov, Aleksandr
@ 2026-01-20 4:09 ` Takashi Kozu
0 siblings, 0 replies; 5+ messages in thread
From: Takashi Kozu @ 2026-01-20 4:09 UTC (permalink / raw)
To: aleksandr.loktionov
Cc: andrew+netdev, anthony.l.nguyen, davem, edumazet, intel-wired-lan,
kuba, netdev, pabeni, piotr.kwapulinski, pmenzel,
przemyslaw.kitszel, takkozu, enjuk
> From: "Loktionov, Aleksandr" <aleksandr.loktionov@intel.com>
> To: Takashi Kozu <takkozu@amazon.com>,
> "Nguyen, Anthony L" <anthony.l.nguyen@intel.com>
> Cc: "Kitszel, Przemyslaw" <przemyslaw.kitszel@intel.com>,
> "andrew+netdev@lunn.ch" <andrew+netdev@lunn.ch>,
> "davem@davemloft.net" <davem@davemloft.net>,
> "edumazet@google.com" <edumazet@google.com>,
> "kuba@kernel.org" <kuba@kernel.org>,
> "pabeni@redhat.com" <pabeni@redhat.com>,
> "intel-wired-lan@lists.osuosl.org"
> <intel-wired-lan@lists.osuosl.org>,
> "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
> "pmenzel@molgen.mpg.de" <pmenzel@molgen.mpg.de>,
> "Kwapulinski, Piotr" <piotr.kwapulinski@intel.com>
> Subject: Re: [Intel-wired-lan] [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set support
> Date: Mon, 19 Jan 2026 10:19:02 +0000 [thread overview]
> Message-ID: <IA3PR11MB898693239F08B055E714E430E588A@IA3PR11MB8986.namprd11.prod.outlook.com> (raw)
> In-Reply-To: <20260119084511.95287-6-takkozu@amazon.com>
>
>
>
> > -----Original Message-----
> > From: Takashi Kozu <takkozu@amazon.com>
> > Sent: Monday, January 19, 2026 9:45 AM
> > To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> > Cc: Kitszel, Przemyslaw <przemyslaw.kitszel@intel.com>;
> > andrew+netdev@lunn.ch; davem@davemloft.net; edumazet@google.com;
> > kuba@kernel.org; pabeni@redhat.com; intel-wired-lan@lists.osuosl.org;
> > netdev@vger.kernel.org; Loktionov, Aleksandr
> > <aleksandr.loktionov@intel.com>; pmenzel@molgen.mpg.de; Kwapulinski,
> > Piotr <piotr.kwapulinski@intel.com>; Takashi Kozu <takkozu@amazon.com>
> > Subject: [PATCH iwl-next v3 1/3] igb: prepare for RSS key get/set
> > support
> >
> > Store the RSS key inside struct igb_adapter and introduce the
> > igb_write_rss_key() helper function. This allows the driver to program
> > the E1000 registers using a persistent RSS key, instead of using a
> > stack-local buffer in igb_setup_mrqc().
> >
> > Signed-off-by: Takashi Kozu <takkozu@amazon.com>
> > ---
> > drivers/net/ethernet/intel/igb/igb.h | 3 +++
> > drivers/net/ethernet/intel/igb/igb_ethtool.c | 21
> > ++++++++++++++++++++
> > drivers/net/ethernet/intel/igb/igb_main.c | 8 ++++----
> > 3 files changed, 28 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/intel/igb/igb.h
> > b/drivers/net/ethernet/intel/igb/igb.h
> > index 0fff1df81b7b..8c9b02058cec 100644
> > --- a/drivers/net/ethernet/intel/igb/igb.h
> > +++ b/drivers/net/ethernet/intel/igb/igb.h
> > @@ -495,6 +495,7 @@ struct hwmon_buff {
> > #define IGB_N_PEROUT 2
> > #define IGB_N_SDP 4
> > #define IGB_RETA_SIZE 128
> > +#define IGB_RSS_KEY_SIZE 40
> >
> > enum igb_filter_match_flags {
> > IGB_FILTER_FLAG_ETHER_TYPE = 0x1,
> > @@ -655,6 +656,7 @@ struct igb_adapter {
> > struct i2c_client *i2c_client;
> > u32 rss_indir_tbl_init;
> > u8 rss_indir_tbl[IGB_RETA_SIZE];
> > + u8 rss_key[IGB_RSS_KEY_SIZE];
> >
> > unsigned long link_check_timeout;
> > int copper_tries;
> > @@ -735,6 +737,7 @@ void igb_down(struct igb_adapter *); void
> > igb_reinit_locked(struct igb_adapter *); void igb_reset(struct
> > igb_adapter *); int igb_reinit_queues(struct igb_adapter *);
> > +void igb_write_rss_key(struct igb_adapter *adapter);
> > void igb_write_rss_indir_tbl(struct igb_adapter *); int
> > igb_set_spd_dplx(struct igb_adapter *, u32, u8); int
> > igb_setup_tx_resources(struct igb_ring *); diff --git
> > a/drivers/net/ethernet/intel/igb/igb_ethtool.c
> > b/drivers/net/ethernet/intel/igb/igb_ethtool.c
> > index 10e2445e0ded..5107b0de4fa3 100644
> > --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
> > +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
> > @@ -3016,6 +3016,27 @@ static int igb_set_rxnfc(struct net_device
> > *dev, struct ethtool_rxnfc *cmd)
> > return ret;
> > }
> >
> > +/**
> > + info.plist igb_write_rss_key - Program the RSS key into device registers
> > + info.plist @adapter: board private structure
> > + info.plist
> > + info.plist Write the RSS key stored in adapter->rss_key to the E1000 hardware
> > registers.
> > + info.plist Each 32-bit chunk of the key is read using get_unaligned_le32()
> > and
> > +written
> > + info.plist to the appropriate register.
> > + */
> > +void igb_write_rss_key(struct igb_adapter *adapter) {
> Opening brace placement violates kernel coding style. For functions,
> the opening brace should be on the next line, not on the same line as the function declaration.
> Or is it my mail-client issue?
From my side, the opening brace is correctly on the next line.
```
+void igb_write_rss_key(struct igb_adapter *adapter)
+{
```
> > + ASSERT_RTNL();
> > +
> > + struct e1000_hw *hw = &adapter->hw;
> Declarations should be at the start of the block.
> I think ASSERT_RTNL(); can be moved down safely?
Thanks for pointing out. I'll fix this.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-01-20 4:09 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-19 8:45 [PATCH iwl-next v3 0/3] igb: add RSS key get/set support Takashi Kozu
2026-01-19 8:45 ` [PATCH iwl-next v3 1/3] igb: prepare for " Takashi Kozu
2026-01-19 10:19 ` Loktionov, Aleksandr
2026-01-20 4:09 ` [Intel-wired-lan] " Takashi Kozu
2026-01-19 8:45 ` [PATCH iwl-next v3 2/3] igb: expose RSS key via ethtool get_rxfh Takashi Kozu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox