• Maxim Mikityanskiy's avatar
    net/mlx5e: Add AF_XDP need_wakeup support · a7bd4018
    Maxim Mikityanskiy authored
    This commit adds support for the new need_wakeup feature of AF_XDP. The
    applications can opt-in by using the XDP_USE_NEED_WAKEUP bind() flag.
    When this feature is enabled, some behavior changes:
    
    RX side: If the Fill Ring is empty, instead of busy-polling, set the
    flag to tell the application to kick the driver when it refills the Fill
    Ring.
    
    TX side: If there are pending completions or packets queued for
    transmission, set the flag to tell the application that it can skip the
    sendto() syscall and save time.
    
    The performance testing was performed on a machine with the following
    configuration:
    
    - 24 cores of Intel Xeon E5-2620 v3 @ 2.40 GHz
    - Mellanox ConnectX-5 Ex with 100 Gbit/s link
    
    The results with retpoline disabled:
    
           | without need_wakeup  | with need_wakeup     |
           |----------------------|----------------------|
           | one core | two cores | one core | two cores |
    -------|----------|-----------|----------|-----------|
    txonly | 20.1     | 33.5      | 29.0     | 34.2      |
    rxdrop | 0.065    | 14.1      | 12.0     | 14.1      |
    l2fwd  | 0.032    | 7.3       | 6.6      | 7.2       |
    
    "One core" means the application and NAPI run on the same core. "Two
    cores" means they are pinned to different cores.
    Signed-off-by: default avatarMaxim Mikityanskiy <maximmi@mellanox.com>
    Reviewed-by: default avatarTariq Toukan <tariqt@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>
    a7bd4018
rx.h 1.19 KB