• Jesper Dangaard Brouer's avatar
    xdp: rss hash types representation · 0cd917a4
    Jesper Dangaard Brouer authored
    The RSS hash type specifies what portion of packet data NIC hardware used
    when calculating RSS hash value. The RSS types are focused on Internet
    traffic protocols at OSI layers L3 and L4. L2 (e.g. ARP) often get hash
    value zero and no RSS type. For L3 focused on IPv4 vs. IPv6, and L4
    primarily TCP vs UDP, but some hardware supports SCTP.
    
    Hardware RSS types are differently encoded for each hardware NIC. Most
    hardware represent RSS hash type as a number. Determining L3 vs L4 often
    requires a mapping table as there often isn't a pattern or sorting
    according to ISO layer.
    
    The patch introduce a XDP RSS hash type (enum xdp_rss_hash_type) that
    contains both BITs for the L3/L4 types, and combinations to be used by
    drivers for their mapping tables. The enum xdp_rss_type_bits get exposed
    to BPF via BTF, and it is up to the BPF-programmer to match using these
    defines.
    
    This proposal change the kfunc API bpf_xdp_metadata_rx_hash() adding
    a pointer value argument for provide the RSS hash type.
    Change signature for all xmo_rx_hash calls in drivers to make it compile.
    
    The RSS type implementations for each driver comes as separate patches.
    
    Fixes: 3d76a4d3 ("bpf: XDP metadata RX kfuncs")
    Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
    Acked-by: default avatarStanislav Fomichev <sdf@google.com>
    Link: https://lore.kernel.org/r/168132892042.340624.582563003880565460.stgit@firesoulSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    0cd917a4
xdp.c 19 KB