sfc: add ndo_set_vf_vlan() function for EF10
The max vlan tags that can be offloaded is 2, including any upstream VLAN aggregator. Currently there is no way for the net driver to know whether the upstream vswitch (if any) is using vlan tags, so there is no way to know how many tags we can request. Along with the implementation for the ndo_set_vf_vlan callback, this patch also adds 2 VLAN tags for the driver created VEB switch if possible, that way it is possible to offload as many tags as are allowed. Signed-off-by: Shradha Shah <sshah@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
087e902550
commit
2d432f20d2
@@ -18,12 +18,15 @@
|
||||
* @vport_id: vport ID for the VF
|
||||
* @vport_assigned: record whether the vport is currently assigned to the VF
|
||||
* @mac: MAC address for the VF, zero when address is removed from the vport
|
||||
* @vlan: Default VLAN for the VF or #EFX_EF10_NO_VLAN
|
||||
*/
|
||||
struct ef10_vf {
|
||||
struct efx_nic *efx;
|
||||
unsigned int vport_id;
|
||||
unsigned int vport_assigned;
|
||||
u8 mac[ETH_ALEN];
|
||||
u16 vlan;
|
||||
#define EFX_EF10_NO_VLAN 0
|
||||
};
|
||||
|
||||
static inline bool efx_ef10_sriov_wanted(struct efx_nic *efx)
|
||||
@@ -43,11 +46,8 @@ static inline void efx_ef10_sriov_flr(struct efx_nic *efx, unsigned vf_i) {}
|
||||
|
||||
int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf, u8 *mac);
|
||||
|
||||
static inline int efx_ef10_sriov_set_vf_vlan(struct efx_nic *efx, int vf,
|
||||
u16 vlan, u8 qos)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
int efx_ef10_sriov_set_vf_vlan(struct efx_nic *efx, int vf_i,
|
||||
u16 vlan, u8 qos);
|
||||
|
||||
static inline int efx_ef10_sriov_set_vf_spoofchk(struct efx_nic *efx, int vf,
|
||||
bool spoofchk)
|
||||
|
Reference in New Issue
Block a user