• Tirthendu Sarkar's avatar
    xsk: introduce XSK_USE_SG bind flag for xsk socket · 81470b5c
    Tirthendu Sarkar authored
    As of now xsk core drops any xdp_buff with data size greater than the
    xsk frame_size as set by the af_xdp application. With multi-buffer
    support introduced in the next patch xsk core can now split those
    buffers into multiple descriptors provided the af_xdp application can
    handle them. Such capability of the application needs to be independent
    of the xdp_prog's frag support capability since there are cases where
    even a single xdp_buffer may need to be split into multiple descriptors
    owing to a smaller xsk frame size.
    
    For e.g., with NIC rx_buffer size set to 4kB, a 3kB packet will
    constitute of a single buffer and so will be sent as such to AF_XDP layer
    irrespective of 'xdp.frags' capability of the XDP program. Now if the xsk
    frame size is set to 2kB by the AF_XDP application, then the packet will
    need to be split into 2 descriptors if AF_XDP application can handle
    multi-buffer, else it needs to be dropped.
    
    Applications can now advertise their frag handling capability to xsk core
    so that xsk core can decide if it should drop or split xdp_buffs that
    exceed xsk frame size. This is done using a new 'XSK_USE_SG' bind flag
    for the xdp socket.
    Signed-off-by: default avatarTirthendu Sarkar <tirthendu.sarkar@intel.com>
    Link: https://lore.kernel.org/r/20230719132421.584801-3-maciej.fijalkowski@intel.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    81470b5c
xsk.c 33.3 KB