• Tirthendu Sarkar's avatar
    xsk: introduce wrappers and helpers for supporting multi-buffer in Tx path · b7f72a30
    Tirthendu Sarkar authored
    In Tx path, xsk core reserves space for each desc to be transmitted in
    the completion queue and it's address contained in it is stored in the
    skb destructor arg. After successful transmission the skb destructor
    submits the addr marking completion.
    
    To handle multiple descriptors per packet, now along with reserving
    space for each descriptor, the corresponding address is also stored in
    completion queue. The number of pending descriptors are stored in skb
    destructor arg and is used by the skb destructor to update completions.
    
    Introduce 'skb' in xdp_sock to store a partially built packet when
    __xsk_generic_xmit() must return before it sees the EOP descriptor for
    the current packet so that packet building can resume in next call of
    __xsk_generic_xmit().
    
    Helper functions are introduced to set and get the pending descriptors
    in the skb destructor arg. Also, wrappers are introduced for storing
    descriptor addresses, submitting and cancelling (for unsuccessful
    transmissions) the number of completions.
    Signed-off-by: default avatarTirthendu Sarkar <tirthendu.sarkar@intel.com>
    Link: https://lore.kernel.org/r/20230719132421.584801-7-maciej.fijalkowski@intel.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    b7f72a30
xsk_queue.h 11.4 KB