Skip to content

gatekeeper: support variable sizes of RSS hash keys#622

Merged
AltraMayor merged 6 commits intomasterfrom
long-rss
Oct 31, 2022
Merged

gatekeeper: support variable sizes of RSS hash keys#622
AltraMayor merged 6 commits intomasterfrom
long-rss

Conversation

@AltraMayor
Copy link
Owner

@AltraMayor AltraMayor commented Oct 28, 2022

The original code assumes all RSS hash keys are 10 * 4 = 40 bytes. While this assumption has held well through the years, recent NICs have keys that are 13 * 4 = 52 bytes long. The length of RSS hash keys is always a multiple of 4 (i.e. sizeof(uint32_t).

This pull request enables front and back interfaces to have different RSS hash keys of different lengths. However, if an interface is
bonded, all the keys of the ports must have the same length. Otherwise, there would not be a way to find the RSS hash of
a packet in software since there would be multiple values depending on where the packet arrived at the server.

@AltraMayor AltraMayor added the Production requirement Either the issue is solved, or Gatekeeper doesn't work in production label Oct 28, 2022
@AltraMayor AltraMayor added this to the Version 1.1 milestone Oct 28, 2022
@AltraMayor AltraMayor force-pushed the long-rss branch 2 times, most recently from 46b8e19 to 1fe422a Compare October 31, 2022 13:17
The original code assumes all RSS hash keys are
10 * 4 = 40 bytes. While this assumption has held well through
the years, recent NICs have keys that are 13 * 4 = 52 bytes long.

This commit enables front and back interfaces to have different
RSS hash keys of different lengths. However, if an interface is
bonded, all the keys of the ports must have the same length.
Otherwise, there would not be a way to find the RSS hash of
a packet in software since there would be multiple values
depending on where the packet arrived at the server.
When randomize_rss_key() was first written,
the system call getrandom(2) had no wrapper.

This commit replaces syscall(2) with getrandom(2).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Production requirement Either the issue is solved, or Gatekeeper doesn't work in production

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant