On Thu, 8 Jan 2026 14:20:15 +0900 Takashi Kozu wrote: > diff --git a/drivers/net/ethernet/intel/igb/igb_main.c > b/drivers/net/ethernet/intel/igb/igb_main.c > index da0f550de605..d42b3750f0b1 100644 > --- a/drivers/net/ethernet/intel/igb/igb_main.c > +++ b/drivers/net/ethernet/intel/igb/igb_main.c > @@ -4526,7 +4526,8 @@ static void igb_setup_mrqc(struct igb_adapter *adapter) > u32 mrqc, rxcsum; > u32 j, num_rx_queues; > > - netdev_rss_key_fill(adapter->rss_key, sizeof(adapter->rss_key)); > + if (!adapter->has_user_rss_key) > + netdev_rss_key_fill(adapter->rss_key, sizeof(adapter->rss_key)); > igb_write_rss_key(adapter);
This is an unusual construct. adapter->rss_key is driver state, does something wipe it? It's normal to have to write the key into the device after reset but initializing the driver state is usually done at probe, just once. Then you don't have to worry whether the state is coming from random or user. Note that netdev_rss_key_fill() initializes its state once per boot so it will not change its 'return' value without reboot. Last but not least - would you be able to run: tools/testing/selftests/drivers/net/hw/toeplitz.py tools/testing/selftests/drivers/net/hw/rss_api.py against this device? Some more help: https://github.com/linux-netdev/nipa/wiki/Running-driver-tests
