dpdk: Enable bnxt PMD 89/23389/5
authorAndy Gospodarek <gospo@broadcom.com>
Tue, 12 Nov 2019 22:55:01 +0000 (17:55 -0500)
committerDamjan Marion <dmarion@me.com>
Thu, 14 Nov 2019 19:31:50 +0000 (19:31 +0000)
This adds support to compile the bnxt PMD that supports Broadcom's
10/25/40/50/100/200 Gbps NICs.  Tested with modified DPDK driver on
x86_64 and aarch64 targets that is pending upstream acceptance, but
should compile just fine today.

Type: feature

Signed-off-by: Andy Gospodarek <gospo@broadcom.com>
Change-Id: I735a991c4cae4fa77e5605094facea54b781a1db

build/external/packages/dpdk.mk
src/plugins/dpdk/device/dpdk.h
src/plugins/dpdk/device/format.c
src/plugins/dpdk/device/init.c

index 5b64703..a068210 100644 (file)
@@ -194,6 +194,7 @@ $(B)/custom-config: $(B)/.dpdk-patch.ok Makefile
        $(call set,RTE_LIBRTE_PMD_AESNI_GCM,$(AESNI))
        $(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD))
        $(call set,RTE_LIBRTE_MLX5_PMD,$(DPDK_MLX5_PMD))
+       $(call set,RTE_LIBRTE_BNXT_PMD,y)
        $(call set,RTE_LIBRTE_PMD_SOFTNIC,n)
        $(call set,RTE_IBVERBS_LINK_DLOPEN,y)
        $(call set,RTE_LIBRTE_PMD_TAP,$(DPDK_TAP_PMD))
index 07c333d..d58d2da 100644 (file)
@@ -83,7 +83,8 @@ extern vlib_node_registration_t admin_up_down_process_node;
   _ ("net_failsafe", FAILSAFE)    \
   _ ("net_liovf", LIOVF_ETHER)    \
   _ ("net_qede", QEDE)           \
-  _ ("net_netvsc", NETVSC)
+  _ ("net_netvsc", NETVSC)        \
+  _ ("net_bnxt", BNXT)
 
 typedef enum
 {
index 942def6..292c083 100644 (file)
@@ -362,6 +362,10 @@ format_dpdk_device_type (u8 * s, va_list * args)
       dev_type = "Microsoft Hyper-V Netvsc";
       break;
 
+    case VNET_DPDK_PMD_BNXT:
+      dev_type = "Broadcom NetXtreme E/S-Series";
+      break;
+
     default:
     case VNET_DPDK_PMD_UNKNOWN:
       dev_type = "### UNKNOWN ###";
index 4cf827c..25f9e95 100644 (file)
@@ -455,6 +455,7 @@ dpdk_lib_init (dpdk_main_t * dm)
            case VNET_DPDK_PMD_MLX4:
            case VNET_DPDK_PMD_MLX5:
            case VNET_DPDK_PMD_QEDE:
+           case VNET_DPDK_PMD_BNXT:
              xd->port_type = port_type_from_speed_capa (&dev_info);
              break;
 
@@ -969,6 +970,19 @@ dpdk_bind_devices_to_uio (dpdk_config_main_t * conf)
       {
         continue;
       }
+    /* Broadcom NetXtreme S, and E series only */
+    else if (d->vendor_id == 0x14e4 &&
+       ((d->device_id >= 0x16c0 &&
+               d->device_id != 0x16c6 && d->device_id != 0x16c7 &&
+               d->device_id != 0x16dd && d->device_id != 0x16f7 &&
+               d->device_id != 0x16fd && d->device_id != 0x16fe &&
+               d->device_id != 0x170d && d->device_id != 0x170c &&
+               d->device_id != 0x170e && d->device_id != 0x1712 &&
+               d->device_id != 0x1713) ||
+       (d->device_id == 0x1604 || d->device_id == 0x1605 ||
+        d->device_id == 0x1614 || d->device_id == 0x1606 ||
+        d->device_id == 0x1609 || d->device_id == 0x1614)))
+      ;
     else
       {
         dpdk_log_warn ("Unsupported PCI device 0x%04x:0x%04x found "