net: Update API for VF vlan protocol 802.1ad support
Introduce new rtnl UAPI that exposes a list of vlans per VF, giving the ability for user-space application to specify it for the VF, as an option to support 802.1ad. We adjusted IP Link tool to support this option. For future use cases, the new UAPI supports multiple vlans. For now we limit the list size to a single vlan in kernel. Add IFLA_VF_VLAN_LIST in addition to IFLA_VF_VLAN to keep backward compatibility with older versions of IP Link tool. Add a vlan protocol parameter to the ndo_set_vf_vlan callback. We kept 802.1Q as the drivers' default vlan protocol. Suitable ip link tool command examples: Set vf vlan protocol 802.1ad: ip link set eth0 vf 1 vlan 100 proto 802.1ad Set vf to VST (802.1Q) mode: ip link set eth0 vf 1 vlan 100 proto 802.1Q Or by omitting the new parameter ip link set eth0 vf 1 vlan 100 Signed-off-by: Moshe Shemesh <moshe@mellanox.com> Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
0815fe3a86
commit
79aab093a0
@@ -25,5 +25,6 @@ struct ifla_vf_info {
|
||||
__u32 max_tx_rate;
|
||||
__u32 rss_query_en;
|
||||
__u32 trusted;
|
||||
__be16 vlan_proto;
|
||||
};
|
||||
#endif /* _LINUX_IF_LINK_H */
|
||||
|
@@ -946,7 +946,8 @@ struct netdev_xdp {
|
||||
*
|
||||
* SR-IOV management functions.
|
||||
* int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac);
|
||||
* int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos);
|
||||
* int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan,
|
||||
* u8 qos, __be16 proto);
|
||||
* int (*ndo_set_vf_rate)(struct net_device *dev, int vf, int min_tx_rate,
|
||||
* int max_tx_rate);
|
||||
* int (*ndo_set_vf_spoofchk)(struct net_device *dev, int vf, bool setting);
|
||||
@@ -1187,7 +1188,8 @@ struct net_device_ops {
|
||||
int (*ndo_set_vf_mac)(struct net_device *dev,
|
||||
int queue, u8 *mac);
|
||||
int (*ndo_set_vf_vlan)(struct net_device *dev,
|
||||
int queue, u16 vlan, u8 qos);
|
||||
int queue, u16 vlan,
|
||||
u8 qos, __be16 proto);
|
||||
int (*ndo_set_vf_rate)(struct net_device *dev,
|
||||
int vf, int min_tx_rate,
|
||||
int max_tx_rate);
|
||||
|
Reference in New Issue
Block a user