[dpdk-dev] [ethdev] Multiple devices with single PCI

이근홍 dlrmsghd at gmail.com
Thu Aug 28 12:54:18 CEST 2014


Hello.
I found that DPDK has an abstraction for having multiple devices with
single PCI.
(RTE_PCI_DRV_MULTIPLE flag)
However, their is a naming collision while registering multiple devices.
Here is my possible solution.

Best regards.
Keunhong.


=====================================================

commit b4fb08c42584283a7c5fbb251ab23f0e2b5f099e
Author: leeopop <dlrmsghd at gmail.com> 2014-07-24 22:28:12
Committer: leeopop <dlrmsghd at gmail.com> 2014-07-24 22:28:12
Parent: bcc733c4780a007f56564277a79309c427367cc2 (ethdev: fix build of
named allocation debug)
Branches: master, github/master

multiple dev support

------------------------ lib/librte_ether/rte_ethdev.c
------------------------
diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index fd1010a..06dda6b 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -204,8 +204,12 @@
  eth_drv = (struct eth_driver *)pci_drv;

  /* Create unique Ethernet device name using PCI address */
- snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "%d:%d.%d",
- pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function);
+ if(pci_drv->drv_flags & RTE_PCI_DRV_MULTIPLE)
+ snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "%d:%d.%d-%d",
+ pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function, nb_ports);
+ else
+ snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "%d:%d.%d",
+ pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function);

  eth_dev = rte_eth_dev_allocate(ethdev_name);
  if (eth_dev == NULL)


More information about the dev mailing list