Skip to content

Commit

Permalink
net/tap: fix RSS for fragmented packets
Browse files Browse the repository at this point in the history
[ upstream commit db6a3ddb166bb53ac7929e4b5c4cad94f6fa6871 ]

As per analysis on Tap PMD, the existing RSS algorithm considering
4-tuple (Src-IP, Dst-IP, Src-port and Dst-port) and identification of
fragment packets is not done, thus we are seeing all the fragmented
chunks of single packet differs in RSS hash value and distributed across
multiple queues.
The RSS algorithm assumes that, all the incoming IP packets are based on
L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and
Dst-port) for each incoming packet, but for the fragmented chunks these
L4-header will not be present (except for first packet) and should not
consider in RSS hash for L4 header fields in-case of fragmented chunks.
Which is a bug in the RSS algorithm implemented in the BPF functionality
under TAP PMD.

So, modified the RSS eBPF C-program and generated the structure of
C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code
instructions format.

Bugzilla ID: 870
Fixes: cdc07e8 ("net/tap: add eBPF program file")

Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
  • Loading branch information
Madhuker Mythri authored and kevintraynor committed Nov 16, 2023
1 parent 4c22ff4 commit 97cf69e
Show file tree
Hide file tree
Showing 2 changed files with 1,540 additions and 1,464 deletions.

0 comments on commit 97cf69e

Please sign in to comment.