aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Gospodarek <gospo@broadcom.com>2019-11-12 17:55:01 -0500
committerDamjan Marion <dmarion@me.com>2019-11-14 19:31:50 +0000
commitc3731ac89ddefe0b212511aeeb6bc116a1220816 (patch)
tree4be2d338f8fc5342261c202e23430e051f2973e7
parentf41244f423a44c6d295895b011eec4bbeef08a8d (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.mk1
-rw-r--r--src/plugins/dpdk/device/dpdk.h3
-rw-r--r--src/plugins/dpdk/device/format.c4
-rw-r--r--src/plugins/dpdk/device/init.c14
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 "