• Maxim Mikityanskiy's avatar
    net/mlx5e: Allow XSK frames smaller than a page · 282c0c79
    Maxim Mikityanskiy authored
    Relax the requirements to the XSK frame size to allow it to be smaller
    than a page and even not a power of two. The current implementation can
    work in this mode, both with Striding RQ and without it.
    
    The code that checks `mtu + headroom <= XSK frame size` is modified
    accordingly. Any frame size between 2048 and PAGE_SIZE is accepted.
    
    Functions that worked with pages only now work with XSK frames, even if
    their size is different from PAGE_SIZE.
    
    With XSK queues, regardless of the frame size, Striding RQ uses the
    stride size of PAGE_SIZE, and UMR MTTs are posted using starting
    addresses of frames, but PAGE_SIZE as page size. MTU guarantees that no
    packet data will overlap with other frames. UMR MTT size is made equal
    to the stride size of the RQ, because UMEM frames may come in random
    order, and we need to handle them one by one. PAGE_SIZE is just a power
    of two that is bigger than any allowed XSK frame size, and also it
    doesn't require making additional changes to the code.
    Signed-off-by: default avatarMaxim Mikityanskiy <maximmi@mellanox.com>
    Reviewed-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    282c0c79
params.c 4.58 KB