[dpdk-dev] enic: add support for enic in nic_uio driver for FreeBSD

Message ID 1430970549-14965-1-git-send-email-ssujith@cisco.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Sujith Sankar May 7, 2015, 3:49 a.m. UTC
  This patch adds support for enic in the nic_uio driver so that enic could be used on FreeBSD.

Signed-off-by: Sujith Sankar <ssujith@cisco.com>
---
 lib/librte_eal/bsdapp/nic_uio/nic_uio.c         |  1 +
 lib/librte_eal/common/include/rte_pci_dev_ids.h | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)
  

Comments

Bruce Richardson May 7, 2015, 9:23 a.m. UTC | #1
On Thu, May 07, 2015 at 09:19:09AM +0530, Sujith Sankar wrote:
> This patch adds support for enic in the nic_uio driver so that enic could be used on FreeBSD.
> 
> Signed-off-by: Sujith Sankar <ssujith@cisco.com>

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

> ---
>  lib/librte_eal/bsdapp/nic_uio/nic_uio.c         |  1 +
>  lib/librte_eal/common/include/rte_pci_dev_ids.h | 17 +++++++++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
> index 5ae8560..e649e32 100644
> --- a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
> +++ b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
> @@ -113,6 +113,7 @@ struct pci_bdf {
>  #define RTE_PCI_DEV_ID_DECL_I40EVF(vend, dev)  {vend, dev},
>  #define RTE_PCI_DEV_ID_DECL_VIRTIO(vend, dev)  {vend, dev},
>  #define RTE_PCI_DEV_ID_DECL_VMXNET3(vend, dev) {vend, dev},
> +#define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev)    {vend, dev},
>  
>  const struct device devices[] = {
>  #include <rte_pci_dev_ids.h>
> diff --git a/lib/librte_eal/common/include/rte_pci_dev_ids.h b/lib/librte_eal/common/include/rte_pci_dev_ids.h
> index 21d2eed..5d1b285 100644
> --- a/lib/librte_eal/common/include/rte_pci_dev_ids.h
> +++ b/lib/librte_eal/common/include/rte_pci_dev_ids.h
> @@ -140,6 +140,10 @@
>  #define RTE_PCI_DEV_ID_DECL_FM10KVF(vend, dev)
>  #endif
>  
> +#ifndef RTE_PCI_DEV_ID_DECL_ENIC
> +#define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev)
> +#endif
> +
>  #ifndef PCI_VENDOR_ID_INTEL
>  /** Vendor ID used by Intel devices */
>  #define PCI_VENDOR_ID_INTEL 0x8086
> @@ -155,6 +159,11 @@
>  #define PCI_VENDOR_ID_VMWARE 0x15AD
>  #endif
>  
> +#ifndef PCI_VENDOR_ID_CISCO
> +/** Vendor ID used by Cisco VIC devices */
> +#define PCI_VENDOR_ID_CISCO 0x1137
> +#endif
> +
>  /******************** Physical EM devices from e1000_hw.h ********************/
>  
>  #define E1000_DEV_ID_82542                    0x1000
> @@ -548,6 +557,14 @@ RTE_PCI_DEV_ID_DECL_VMXNET3(PCI_VENDOR_ID_VMWARE, VMWARE_DEV_ID_VMXNET3)
>  
>  RTE_PCI_DEV_ID_DECL_FM10KVF(PCI_VENDOR_ID_INTEL, FM10K_DEV_ID_VF)
>  
> +/****************** Cisco VIC devices ******************/
> +
> +#define PCI_DEVICE_ID_CISCO_VIC_ENET         0x0043  /* ethernet vnic */
> +#define PCI_DEVICE_ID_CISCO_VIC_ENET_VF      0x0071  /* enet SRIOV VF */
> +
> +RTE_PCI_DEV_ID_DECL_ENIC(PCI_VENDOR_ID_CISCO, PCI_DEVICE_ID_CISCO_VIC_ENET)
> +RTE_PCI_DEV_ID_DECL_ENIC(PCI_VENDOR_ID_CISCO, PCI_DEVICE_ID_CISCO_VIC_ENET_VF)
> +
>  /*
>   * Undef all RTE_PCI_DEV_ID_DECL_* here.
>   */
> -- 
> 1.9.1
>
  
David Marchand May 7, 2015, 10:57 a.m. UTC | #2
On Thu, May 7, 2015 at 11:23 AM, Bruce Richardson <
bruce.richardson@intel.com> wrote:

> On Thu, May 07, 2015 at 09:19:09AM +0530, Sujith Sankar wrote:
> > This patch adds support for enic in the nic_uio driver so that enic
> could be used on FreeBSD.
> >
> > Signed-off-by: Sujith Sankar <ssujith@cisco.com>
>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
>
>
Well this is not really bsd specific, as people who rely on
rte_pci_dev_ids.h header to find devices that must be bound to igb_uio and
consort, will also benefit from this fix.
By the way, I am working on removing these device ids from the eal, since
the pmds should be the only one that maintain their devices ids list.
Will send some patches soon.

Acked-by: David Marchand <david.marchand@6wind.com>
  
Thomas Monjalon May 11, 2015, 9:20 a.m. UTC | #3
2015-05-07 12:57, David Marchand:
> On Thu, May 7, 2015 at 11:23 AM, Bruce Richardson wrote:
> > On Thu, May 07, 2015 at 09:19:09AM +0530, Sujith Sankar wrote:
> > > This patch adds support for enic in the nic_uio driver so that enic
> > could be used on FreeBSD.
> > >
> > > Signed-off-by: Sujith Sankar <ssujith@cisco.com>
> >
> > Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> 
> Well this is not really bsd specific, as people who rely on
> rte_pci_dev_ids.h header to find devices that must be bound to igb_uio and
> consort, will also benefit from this fix.
> By the way, I am working on removing these device ids from the eal, since
> the pmds should be the only one that maintain their devices ids list.

Agree

> Will send some patches soon.
> 
> Acked-by: David Marchand <david.marchand@6wind.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
index 5ae8560..e649e32 100644
--- a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
+++ b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
@@ -113,6 +113,7 @@  struct pci_bdf {
 #define RTE_PCI_DEV_ID_DECL_I40EVF(vend, dev)  {vend, dev},
 #define RTE_PCI_DEV_ID_DECL_VIRTIO(vend, dev)  {vend, dev},
 #define RTE_PCI_DEV_ID_DECL_VMXNET3(vend, dev) {vend, dev},
+#define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev)    {vend, dev},
 
 const struct device devices[] = {
 #include <rte_pci_dev_ids.h>
diff --git a/lib/librte_eal/common/include/rte_pci_dev_ids.h b/lib/librte_eal/common/include/rte_pci_dev_ids.h
index 21d2eed..5d1b285 100644
--- a/lib/librte_eal/common/include/rte_pci_dev_ids.h
+++ b/lib/librte_eal/common/include/rte_pci_dev_ids.h
@@ -140,6 +140,10 @@ 
 #define RTE_PCI_DEV_ID_DECL_FM10KVF(vend, dev)
 #endif
 
+#ifndef RTE_PCI_DEV_ID_DECL_ENIC
+#define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev)
+#endif
+
 #ifndef PCI_VENDOR_ID_INTEL
 /** Vendor ID used by Intel devices */
 #define PCI_VENDOR_ID_INTEL 0x8086
@@ -155,6 +159,11 @@ 
 #define PCI_VENDOR_ID_VMWARE 0x15AD
 #endif
 
+#ifndef PCI_VENDOR_ID_CISCO
+/** Vendor ID used by Cisco VIC devices */
+#define PCI_VENDOR_ID_CISCO 0x1137
+#endif
+
 /******************** Physical EM devices from e1000_hw.h ********************/
 
 #define E1000_DEV_ID_82542                    0x1000
@@ -548,6 +557,14 @@  RTE_PCI_DEV_ID_DECL_VMXNET3(PCI_VENDOR_ID_VMWARE, VMWARE_DEV_ID_VMXNET3)
 
 RTE_PCI_DEV_ID_DECL_FM10KVF(PCI_VENDOR_ID_INTEL, FM10K_DEV_ID_VF)
 
+/****************** Cisco VIC devices ******************/
+
+#define PCI_DEVICE_ID_CISCO_VIC_ENET         0x0043  /* ethernet vnic */
+#define PCI_DEVICE_ID_CISCO_VIC_ENET_VF      0x0071  /* enet SRIOV VF */
+
+RTE_PCI_DEV_ID_DECL_ENIC(PCI_VENDOR_ID_CISCO, PCI_DEVICE_ID_CISCO_VIC_ENET)
+RTE_PCI_DEV_ID_DECL_ENIC(PCI_VENDOR_ID_CISCO, PCI_DEVICE_ID_CISCO_VIC_ENET_VF)
+
 /*
  * Undef all RTE_PCI_DEV_ID_DECL_* here.
  */