• Michal Swiatkowski's avatar
    ice: implement bridge port vlan · 2946204b
    Michal Swiatkowski authored
    Port VLAN in this case means push and pop VLAN action on specific vid.
    There are a few limitation in hardware:
    - push and pop can't be used separately
    - if port VLAN is used there can't be any trunk VLANs, because pop
      action is done on all traffic received by VSI in port VLAN mode
    - port VLAN mode on uplink port isn't supported
    
    Reflect these limitations in code using dev_info to inform the user
    about unsupported configuration.
    
    In bridge mode there is a need to configure port vlan without resetting
    VFs. To do that implement ice_port_vlan_on/off() functions. They are
    only configuring correct vlan_ops to allow setting port vlan.
    
    We also need to clear port vlan without resetting the VF which is not
    supported right now. Change it by implementing clear_port_vlan ops.
    As previous VLAN configuration isn't always the same, store current
    config while creating port vlan and restore it in clear function.
    
    Configuration steps:
    - configure switchdev with bridge
    - #bridge vlan add dev eth0 vid 120 pvid untagged
    - #bridge vlan add dev eth1 vid 120 pvid untagged
    - ping from VF0 to VF1
    Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
    Signed-off-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.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>
    2946204b
ice_vsi_vlan_lib.c 22.2 KB