[PATCH v4 0/4] RSS support for VirtioNet.

From: Andrew Melnychenko
Date: Tue Feb 22 2022 - 07:02:10 EST


Virtio-net supports "hardware" RSS with toeplitz key.
Also, it allows receiving calculated hash in vheader
that may be used with RPS.
Added ethtools callbacks to manipulate RSS.

Technically hash calculation may be set only for
SRC+DST and SRC+DST+PORTSRC+PORTDST hashflows.
The completely disabling hash calculation for TCP or UDP
would disable hash calculation for IP.

RSS/RXHASH is disabled by default.

Changes since v3:
* Moved hunks a bit.
* Added indirection table zero size check
for hash report only feature.
* Added virtio_skb_set_hash() helper instead of in-place routine.

Changes since v2:
* Fixed issue with calculating padded header length.
During review/tests, there was found an issue that
will crash the kernel if VIRTIO_NET_F_MRG_RXBUF
was not set. (thx to Jason Wang <jasowang@xxxxxxxxxx>)
* Refactored the code according to review.

Changes since v1:
* Refactored virtnet_set_hashflow.
* Refactored virtio_net_ctrl_rss.
* Moved hunks between patches a bit.

Changes since rfc:
* Code refactored.
* Patches reformatted.
* Added feature validation.

Andrew Melnychenko (4):
drivers/net/virtio_net: Fixed padded vheader to use v1 with hash.
drivers/net/virtio_net: Added basic RSS support.
drivers/net/virtio_net: Added RSS hash report.
drivers/net/virtio_net: Added RSS hash report control.

drivers/net/virtio_net.c | 389 +++++++++++++++++++++++++++++++++++++--
1 file changed, 376 insertions(+), 13 deletions(-)

--
2.34.1