summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sfc/ef10_sriov.h
diff options
context:
space:
mode:
authorShradha Shah <sshah@solarflare.com>2015-05-20 13:11:54 +0300
committerDavid S. Miller <davem@davemloft.net>2015-05-22 01:43:54 +0300
commit2d432f20d27c1813a2746008e16dd6ce12a14dc1 (patch)
tree5edc6837a9a8f2d8638cb52e6c9c1128a63609d5 /drivers/net/ethernet/sfc/ef10_sriov.h
parent087e90255035f914f5be2eb2a7ae3a3850066138 (diff)
downloadlinux-2d432f20d27c1813a2746008e16dd6ce12a14dc1.tar.xz
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>
Diffstat (limited to 'drivers/net/ethernet/sfc/ef10_sriov.h')
-rw-r--r--drivers/net/ethernet/sfc/ef10_sriov.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/sfc/ef10_sriov.h b/drivers/net/ethernet/sfc/ef10_sriov.h
index 8c92a8df5085..0428265bcff9 100644
--- a/drivers/net/ethernet/sfc/ef10_sriov.h
+++ b/drivers/net/ethernet/sfc/ef10_sriov.h
@@ -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)