diff options
author | Andy Gospodarek <gospo@broadcom.com> | 2019-11-12 17:55:01 -0500 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-11-14 19:31:50 +0000 |
commit | c3731ac89ddefe0b212511aeeb6bc116a1220816 (patch) | |
tree | 4be2d338f8fc5342261c202e23430e051f2973e7 | |
parent | f41244f423a44c6d295895b011eec4bbeef08a8d (diff) |
dpdk: Enable bnxt PMD
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
-rw-r--r-- | build/external/packages/dpdk.mk | 1 | ||||
-rw-r--r-- | src/plugins/dpdk/device/dpdk.h | 3 | ||||
-rw-r--r-- | src/plugins/dpdk/device/format.c | 4 | ||||
-rw-r--r-- | src/plugins/dpdk/device/init.c | 14 |
4 files changed, 21 insertions, 1 deletions
diff --git a/build/external/packages/dpdk.mk b/build/external/packages/dpdk.mk index 5b64703ed22..a068210a5bb 100644 --- a/build/external/packages/dpdk.mk +++ b/build/external/packages/dpdk.mk @@ -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)) diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h index 07c333d4781..d58d2daa768 100644 --- a/src/plugins/dpdk/device/dpdk.h +++ b/src/plugins/dpdk/device/dpdk.h @@ -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 { diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index 942def63b0a..292c083fca5 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -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 ###"; diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 4cf827c7949..25f9e952824 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -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 " |