)]}'
{
  "commit": "cee5db680df2b2dcd8cbbb274eb8a8e48ae6ab47",
  "tree": "ad4290aa6c847ac73f5cd516cc042ed395989af6",
  "parents": [
    "42a9fb3382fc2573e92f41d203b095d9a372cfc9",
    "c8103dd8b9b4e0aa599d4ccdfeffb57eb88b5590"
  ],
  "author": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Fri Sep 25 16:29:57 2026 -0700"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Fri Sep 25 16:29:57 2026 -0700"
  },
  "message": "Merge branch \u0027net-ethtool-make-netdev_rss_key_fill-spread-flows-over-all-queues\u0027\n\nEric Dumazet says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nnet: ethtool: make netdev_rss_key_fill() spread flows over all queues\n\nnetdev_rss_key_fill() hands drivers a uniformly random key. Because the\nToeplitz hash is linear over GF(2), a random key is singular for a given\nheader field and queue count with probability 1/2: flows differing only\nin the low order bits of that field (such as a burst of consecutive\nephemeral ports) then cannot reach all RX queues. On one affected 16-queue\nhost, only 4 queues received traffic until the key was replaced.\n\nPatch 1 synchronizes proc_do_rss_key() with netdev_rss_key_fill() using an\nsmp_wmb()/smp_rmb() pair and a boolean flag so readers of\n/proc/sys/net/core/netdev_rss_key print zero bytes until the key is fully\npopulated.\n\nPatch 2 keeps the key random but constrains 1008 of its 2048 bits so that,\nat every 16-bit aligned position and for every power-of-two queue count up\nto 256, consecutive values of a field ending there visit every queue once.\nApplying the fixup on the 16-bit grid covers standard 2-tuple/4-tuple\nhashes as well as encapsulated or bitmap-selected layouts (such as PSP\ninner TCP ports at byte 78) without enumerating them in the core. The\nfixup is a bijection onto the set of valid keys, and redraws in the ~1 in\n5 case where two 32-bit windows a multiple of 8 bits apart alias.\n\nPatch 3 adds RSS key, indirection table, and flow-hash reporting to\nnetdevsim so the selftest can exercise both the host key and ethtool\nnetlink RSS reporting in a virtual machine without hardware.\n\nPatch 4 adds a selftest under tools/testing/selftests/drivers/net/rss_key.py\nchecking /proc/sys/net/core/netdev_rss_key and the live RSS key,\nindirection table, and flow-hash layouts reported by a device via ethtool\nnetlink.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nLink: https://patch.msgid.link/20260922163458.3900996-1-edumazet@google.com\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": []
}
