Page MenuHomeFreeBSD

D45427.id.diff
No OneTemporary

D45427.id.diff

diff --git a/sys/dev/mlx5/mlx5_core/mlx5_main.c b/sys/dev/mlx5/mlx5_core/mlx5_main.c
--- a/sys/dev/mlx5/mlx5_core/mlx5_main.c
+++ b/sys/dev/mlx5/mlx5_core/mlx5_main.c
@@ -52,8 +52,12 @@
#include <dev/mlx5/mlx5_core/diag_cnt.h>
#ifdef PCI_IOV
#include <sys/nv.h>
+#include <sys/socket.h>
#include <dev/pci/pci_iov.h>
#include <sys/iov_schema.h>
+#include <sys/iov.h>
+#include <net/if.h>
+#include <net/if_vlan_var.h>
#endif
static const char mlx5_version[] = "Mellanox Core driver "
@@ -225,6 +229,7 @@
#ifdef PCI_IOV
static const char iov_mac_addr_name[] = "mac-addr";
+static const char iov_vlan_name[] = "vlan";
static const char iov_node_guid_name[] = "node-guid";
static const char iov_port_guid_name[] = "port-guid";
#endif
@@ -1714,6 +1719,8 @@
vf_schema = pci_iov_schema_alloc_node();
pci_iov_schema_add_unicast_mac(vf_schema,
iov_mac_addr_name, 0, NULL);
+ pci_iov_schema_add_vlan(vf_schema,
+ iov_vlan_name, 0, 0);
pci_iov_schema_add_uint64(vf_schema, iov_node_guid_name,
0, 0);
pci_iov_schema_add_uint64(vf_schema, iov_port_guid_name,
@@ -1950,6 +1957,25 @@
}
}
+ if (nvlist_exists_number(vf_config, iov_vlan_name)) {
+ uint16_t vlan = nvlist_get_number(vf_config, iov_vlan_name);
+
+ if (vlan == DOT1Q_VID_NULL)
+ error = ENOTSUP;
+ else {
+ if (vlan == VF_VLAN_TRUNK)
+ vlan = DOT1Q_VID_NULL;
+
+ error = -mlx5_eswitch_set_vport_vlan(priv->eswitch,
+ vfnum + 1, vlan, 0);
+ }
+ if (error != 0) {
+ mlx5_core_err(core_dev,
+ "setting VLAN for VF %d failed, error %d\n",
+ vfnum + 1, error);
+ }
+ }
+
if (nvlist_exists_number(vf_config, iov_node_guid_name)) {
node_guid = nvlist_get_number(vf_config, iov_node_guid_name);
error = -mlx5_modify_nic_vport_node_guid(core_dev, vfnum + 1,

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 13, 5:15 PM (46 m, 33 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31418662
Default Alt Text
D45427.id.diff (1 KB)

Event Timeline