From c3731ac89ddefe0b212511aeeb6bc116a1220816 Mon Sep 17 00:00:00 2001 From: Andy Gospodarek Date: Tue, 12 Nov 2019 17:55:01 -0500 Subject: [PATCH] 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 Change-Id: I735a991c4cae4fa77e5605094facea54b781a1db --- build/external/packages/dpdk.mk | 1 + src/plugins/dpdk/device/dpdk.h | 3 ++- src/plugins/dpdk/device/format.c | 4 ++++ src/plugins/dpdk/device/init.c | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) 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 " -- 2.16.6