diff --git a/build/external/packages/dpdk.mk b/build/external/packages/dpdk.mk
index 8ee65faac..44cbdfc13 100644
--- a/build/external/packages/dpdk.mk
+++ b/build/external/packages/dpdk.mk
@@ -38,7 +38,7 @@ dpdk_depends		     := $(if $(ARCH_X86_64), ipsec-mb)
 else
 dpdk_depends		     := rdma-core $(if $(ARCH_X86_64), ipsec-mb)
 endif
-DPDK_MLX_DEFAULT             := $(shell if grep -q "rdma=$(rdma-core_version) dpdk=$(dpdk_version)" mlx_rdma_dpdk_matrix.txt; then echo 'y'; else echo 'n'; fi)
+DPDK_MLX_DEFAULT             := y
 DPDK_MLX4_PMD                ?= $(DPDK_MLX_DEFAULT)
 DPDK_MLX5_PMD                ?= $(DPDK_MLX_DEFAULT)
 DPDK_MLX5_COMMON_PMD         ?= $(DPDK_MLX_DEFAULT)
diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c
index 453d9cff7..c93870cdc 100644
--- a/src/plugins/dpdk/device/init.c
+++ b/src/plugins/dpdk/device/init.c
@@ -306,6 +306,8 @@ dpdk_lib_init (dpdk_main_t * dm)
   vnet_hw_interface_t *hi;
   dpdk_device_t *xd;
   char *if_num_fmt;
+  u8 mlx4_devlist[64];
+  int mlx4_devlist_idx = 0;
 
   /* vlib_buffer_t template */
   vec_validate_aligned (dm->per_thread_data, tm->n_vlib_mains - 1,
@@ -426,7 +428,27 @@ dpdk_lib_init (dpdk_main_t * dm)
 		xd->name = format (xd->name, "Ethernet");
 	    }
 
-	  if (dr && dr->interface_number_from_port_id)
+	  int mlx4_port_num = 0;
+
+	  if (strstr (di.driver_name, "net_mlx4") &&
+	      (pci_dev = dpdk_get_pci_device (&di)))
+	    {
+	      for (int i = 0; i < sizeof (mlx4_devlist); i++)
+		{
+		  if (mlx4_devlist[i] == pci_dev->addr.bus)
+		    {
+		      dpdk_log_warn ("Dev ID %u with driver %s already "
+				     "existing, giving next port",
+				     pci_dev->addr.bus, di.driver_name);
+		      mlx4_port_num++;
+		    }
+		}
+	      mlx4_devlist[mlx4_devlist_idx] = pci_dev->addr.bus;
+	      mlx4_devlist_idx++;
+	      xd->name = format (xd->name, "%u/%u/%u", pci_dev->addr.bus,
+				 pci_dev->addr.devid, mlx4_port_num);
+	    }
+	  else if (dr && dr->interface_number_from_port_id)
 	    xd->name = format (xd->name, "%u", port_id);
 	  else if ((pci_dev = dpdk_get_pci_device (&di)))
 	    xd->name = format (xd->name, if_num_fmt, pci_dev->addr.bus,