• Wojciech Drewek's avatar
    ice: Implement basic eswitch bridge setup · f6e8fb55
    Wojciech Drewek authored
    With this patch, ice driver is able to track if the port
    representors or uplink port were added to the linux bridge in
    switchdev mode. Listen for NETDEV_CHANGEUPPER events in order to
    detect this. ice_esw_br data structure reflects the linux bridge
    and stores all the ports of the bridge (ice_esw_br_port) in
    xarray, it's created when the first port is added to the bridge and
    freed once the last port is removed. Note that only one bridge is
    supported per eswitch.
    
    Bridge port (ice_esw_br_port) can be either a VF port representor
    port or uplink port (ice_esw_br_port_type). In both cases bridge port
    holds a reference to the VSI, VF's VSI in case of the PR and uplink
    VSI in case of the uplink. VSI's index is used as an index to the
    xarray in which ports are stored.
    
    Add a check which prevents configuring switchdev mode if uplink is
    already added to any bridge. This is needed because we need to listen
    for NETDEV_CHANGEUPPER events to record if the uplink was added to
    the bridge. Netdevice notifier is registered after eswitch mode
    is changed to switchdev.
    Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
    Signed-off-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
    Tested-by: default avatarSujai Buvaneswaran <sujai.buvaneswaran@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    f6e8fb55
ice_eswitch.c 17.5 KB