Fix crash whith bonded ethernet / DPDK 16.11 89/4089/2
authorAlexander Popovsky <apopovsk@cisco.com>
Sun, 4 Dec 2016 23:26:58 +0000 (15:26 -0800)
committerAlexander Popovsky <apopovsk@cisco.com>
Mon, 5 Dec 2016 00:04:06 +0000 (16:04 -0800)
In DPDK 16.11 bonded PMD is still using old naming ‘rte_bond_pmd’.
See: dpdk-16.11/drivers/net/bonding/rte_eth_bond_api.c
Fixed crash when VPP is generating a name for ‘unknown’ non-PCI interface

Change-Id: I59e15f009e1a11949a19abf5234d09425a81c6ce
Signed-off-by: Alexander Popovsky <apopovsk@cisco.com>
vnet/vnet/devices/dpdk/dpdk.h
vnet/vnet/devices/dpdk/format.c

index 19c521b..554b95f 100644 (file)
@@ -80,7 +80,7 @@ extern vlib_node_registration_t handoff_dispatch_node;
   _ ("net_enic", ENIC)            \
   _ ("net_vmxnet3", VMXNET3)      \
   _ ("net_af_packet", AF_PACKET)  \
-  _ ("net_bonding", BOND)         \
+  _ ("rte_bond_pmd", BOND)        \
   _ ("net_fm10k", FM10K)          \
   _ ("net_cxgbe", CXGBE)          \
   _ ("net_dpaa2", DPAA2)
index b0e624c..212f109 100644 (file)
@@ -183,9 +183,13 @@ format_dpdk_device_name (u8 * s, va_list * args)
     }
 
   rte_eth_dev_info_get (i, &dev_info);
-  ret = format (s, devname_format, device_name, dev_info.pci_dev->addr.bus,
-               dev_info.pci_dev->addr.devid,
-               dev_info.pci_dev->addr.function);
+
+  if (dev_info.pci_dev)
+    ret = format (s, devname_format, device_name, dev_info.pci_dev->addr.bus,
+                 dev_info.pci_dev->addr.devid,
+                 dev_info.pci_dev->addr.function);
+  else
+    ret = format (s, "%s%d", device_name, dm->devices[i].device_index);
 
   if (dm->devices[i].interface_name_suffix)
     return format (ret, "/%s", dm->devices[i].interface_name_suffix);