• Jakub Kicinski's avatar
    sfc: convert to new udp_tunnel infrastructure · 205a55f4
    Jakub Kicinski authored
    Check MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED, before setting
    the info, which will hopefully protect us from -EPERM errors
    the previous code was gracefully ignoring. Ed reports this
    is not the 100% correct bit, but it's the best approximation
    we have. Shared code reports the port information back to user
    space, so we really want to know what was added and what failed.
    Ignoring -EPERM is not an option.
    
    The driver does not call udp_tunnel_get_rx_info(), so its own
    management of table state is not really all that problematic,
    we can leave it be. This allows the driver to continue with its
    copious table syncing, and matching the ports to TX frames,
    which it will reportedly do one day.
    
    Leave the feature checking in the callbacks, as the device may
    remove the capabilities on reset.
    
    Inline the loop from __efx_ef10_udp_tnl_lookup_port() into
    efx_ef10_udp_tnl_has_port(), since it's the only caller now.
    
    With new infra this driver gains port replace - when space frees
    up in a full table a new port will be selected for offload.
    Plus efx will no longer sleep in an atomic context.
    
    v2:
     - amend the commit message about TRUSTED not being 100%
     - add TUNNEL_ENCAP_UDP_PORT_ENTRY_INVALID to mark unsed
       entries
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    Acked-By: default avatarEdward Cree <ecree@solarflare.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    205a55f4
efx.c 34.5 KB