Fix: unnecesary uio binding for Mellanox NIC
[vpp.git] / src / plugins / dpdk / device / init.c
index e23542f..acf712f 100755 (executable)
@@ -17,6 +17,7 @@
 #include <vppinfra/error.h>
 #include <vppinfra/format.h>
 #include <vppinfra/bitmap.h>
+#include <vppinfra/linux/sysfs.h>
 #include <vlib/unix/unix.h>
 
 #include <vnet/ethernet/ethernet.h>
@@ -419,6 +420,10 @@ dpdk_lib_init (dpdk_main_t * dm)
              xd->port_type = VNET_DPDK_PORT_TYPE_VIRTIO_USER;
              break;
 
+           case VNET_DPDK_PMD_VHOST_ETHER:
+             xd->port_type = VNET_DPDK_PORT_TYPE_VHOST_ETHER;
+             break;
+
            default:
              xd->port_type = VNET_DPDK_PORT_TYPE_UNKNOWN;
            }
@@ -685,6 +690,11 @@ dpdk_bind_devices_to_uio (dpdk_config_main_t * conf)
     /* Chelsio T4/T5 */
     else if (d->vendor_id == 0x1425 && (d->device_id & 0xe000) == 0x4000)
       ;
+    /* Mellanox  */
+    else if (d->vendor_id == 0x15b3 && d->device_id >= 0x1013 && d->device_id <= 0x101a)
+      {
+        continue;
+      }
     else
       {
         clib_warning ("Unsupported PCI device 0x%04x:0x%04x found "
@@ -1032,7 +1042,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
          mem = mem_by_socket[c];
 
          page_size = 1024;
-         e = vlib_sysfs_get_free_hugepages(c, page_size * 1024, &pages_avail);
+         e = clib_sysfs_get_free_hugepages(c, page_size * 1024, &pages_avail);
 
          if (e != 0 || pages_avail < 0 || page_size * pages_avail < mem)
            use_1g = 0;
@@ -1041,7 +1051,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
           clib_error_free (e);
 
          page_size = 2;
-         e = vlib_sysfs_get_free_hugepages(c, page_size * 1024, &pages_avail);
+         e = clib_sysfs_get_free_hugepages(c, page_size * 1024, &pages_avail);
 
          if (e != 0 || pages_avail < 0 || page_size * pages_avail < mem)
            use_2m = 0;
@@ -1202,6 +1212,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
     conf->eal_init_args_str = format (conf->eal_init_args_str, "%s ",
                                      conf->eal_init_args[i]);
 
+  clib_warning ("EAL init args: %s", conf->eal_init_args_str);
   ret =
     rte_eal_init (vec_len (conf->eal_init_args),
                  (char **) conf->eal_init_args);