Allow empty DPDK device init config
[vpp.git] / vnet / vnet / devices / dpdk / init.c
index 64623c1..e06d6bf 100644 (file)
@@ -221,7 +221,6 @@ dpdk_device_lock_init (dpdk_device_t * xd)
                                             CLIB_CACHE_LINE_BYTES);
       memset ((void *) xd->lockp[q], 0, CLIB_CACHE_LINE_BYTES);
     }
-  xd->need_txlock = 1;
 }
 
 void
@@ -233,7 +232,6 @@ dpdk_device_lock_free (dpdk_device_t * xd)
     clib_mem_free ((void *) xd->lockp[q]);
   vec_free (xd->lockp);
   xd->lockp = 0;
-  xd->need_txlock = 0;
 }
 
 static clib_error_t *
@@ -433,7 +431,11 @@ dpdk_lib_init (dpdk_main_t * dm)
 
       /* workaround for drivers not setting driver_name */
       if ((!dev_info.driver_name) && (dev_info.pci_dev))
+#if RTE_VERSION < RTE_VERSION_NUM(16, 11, 0, 0)
        dev_info.driver_name = dev_info.pci_dev->driver->name;
+#else
+       dev_info.driver_name = dev_info.pci_dev->driver->driver.name;
+#endif
       ASSERT (dev_info.driver_name);
 
       if (!xd->pmd)
@@ -610,17 +612,6 @@ dpdk_lib_init (dpdk_main_t * dm)
            }
        }
 
-#if RTE_VERSION < RTE_VERSION_NUM(16, 4, 0, 0)
-      /*
-       * Older VMXNET3 driver doesn't support jumbo / multi-buffer pkts
-       */
-      if (xd->pmd == VNET_DPDK_PMD_VMXNET3)
-       {
-         xd->port_conf.rxmode.max_rx_pkt_len = 1518;
-         xd->port_conf.rxmode.jumbo_frame = 0;
-       }
-#endif
-
       if (xd->pmd == VNET_DPDK_PMD_AF_PACKET)
        {
          f64 now = vlib_time_now (vm);
@@ -796,14 +787,6 @@ dpdk_lib_init (dpdk_main_t * dm)
            clib_warning ("VLAN strip cannot be supported by interface\n");
        }
 
-#if RTE_VERSION < RTE_VERSION_NUM(16, 4, 0, 0)
-      /*
-       * Older VMXNET3 driver doesn't support jumbo / multi-buffer pkts
-       */
-      else if (xd->pmd == VNET_DPDK_PMD_VMXNET3)
-       hi->max_packet_bytes = 1518;
-#endif
-
       hi->max_l3_packet_bytes[VLIB_RX] = hi->max_l3_packet_bytes[VLIB_TX] =
        xd->port_conf.rxmode.max_rx_pkt_len - sizeof (ethernet_header_t);
 
@@ -814,9 +797,6 @@ dpdk_lib_init (dpdk_main_t * dm)
     clib_warning ("%d mbufs allocated but total rx/tx ring size is %d\n",
                  dm->conf->num_mbufs, nb_desc);
 
-  /* init next vhost-user if index */
-  dm->next_vu_if_id = 0;
-
   return 0;
 }
 
@@ -926,6 +906,7 @@ dpdk_device_config (dpdk_config_main_t * conf, vlib_pci_addr_t pci_addr,
   if (!input)
     return 0;
 
+  unformat_skip_white_space (input);
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       if (unformat (input, "num-rx-queues %u", &devconf->num_rx_queues))
@@ -1012,9 +993,6 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
 
   conf->device_config_index_by_pci_addr = hash_create (0, sizeof (uword));
 
-  // MATT-FIXME: inverted virtio-vhost logic to use virtio by default
-  conf->use_virtio_vhost = 1;
-
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       /* Prime the pump */
@@ -1072,18 +1050,6 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
        ;
       else if (unformat (input, "socket-mem %s", &socket_mem))
        ;
-      else
-       if (unformat
-           (input, "vhost-user-coalesce-frames %d",
-            &conf->vhost_coalesce_frames))
-       ;
-      else
-       if (unformat
-           (input, "vhost-user-coalesce-time %f",
-            &conf->vhost_coalesce_time))
-       ;
-      else if (unformat (input, "enable-vhost-user"))
-       conf->use_virtio_vhost = 0;
       else if (unformat (input, "no-pci"))
        {
          no_pci = 1;
@@ -1485,7 +1451,6 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
          break;
        }
     }
-#if RTE_VERSION >= RTE_VERSION_NUM(16, 4, 0, 0)
   if (hw_flags_chg || (xd->link.link_speed != prev_link.link_speed))
     {
       hw_flags_chg = 1;
@@ -1513,35 +1478,6 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
          break;
        }
     }
-#else
-  if (hw_flags_chg || (xd->link.link_speed != prev_link.link_speed))
-    {
-      hw_flags_chg = 1;
-      switch (xd->link.link_speed)
-       {
-       case ETH_LINK_SPEED_10:
-         hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10M;
-         break;
-       case ETH_LINK_SPEED_100:
-         hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_100M;
-         break;
-       case ETH_LINK_SPEED_1000:
-         hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_1G;
-         break;
-       case ETH_LINK_SPEED_10000:
-         hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10G;
-         break;
-       case ETH_LINK_SPEED_40G:
-         hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_40G;
-         break;
-       case 0:
-         break;
-       default:
-         clib_warning ("unknown link speed %d", xd->link.link_speed);
-         break;
-       }
-    }
-#endif
   if (hw_flags_chg)
     {
       if (LINK_STATE_ELOGS)
@@ -1576,9 +1512,6 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
   ethernet_main_t *em = &ethernet_main;
   dpdk_device_t *xd;
   vlib_thread_main_t *tm = vlib_get_thread_main ();
-#if DPDK_VHOST_USER
-  void *vu_state;
-#endif
   int i;
 
   error = dpdk_lib_init (dm);
@@ -1603,10 +1536,6 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
   if (error)
     clib_error_report (error);
 
-#if DPDK_VHOST_USER
-  dpdk_vhost_user_process_init (&vu_state);
-#endif
-
   tm->worker_thread_release = 1;
 
   f64 now = vlib_time_now (vm);
@@ -1630,7 +1559,11 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
            struct rte_eth_dev_info dev_info;
            rte_eth_dev_info_get (i, &dev_info);
            if (!dev_info.driver_name)
+#if RTE_VERSION < RTE_VERSION_NUM(16, 11, 0, 0)
              dev_info.driver_name = dev_info.pci_dev->driver->name;
+#else
+             dev_info.driver_name = dev_info.pci_dev->driver->driver.name;
+#endif
            ASSERT (dev_info.driver_name);
            if (strncmp (dev_info.driver_name, "rte_bond_pmd", 12) == 0)
              {
@@ -1729,18 +1662,9 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
        if ((now - xd->time_last_link_update) >= dm->link_state_poll_interval)
          dpdk_update_link_state (xd, now);
 
-#if DPDK_VHOST_USER
-       if (xd->flags & DPDK_DEVICE_FLAG_VHOST_USER)
-         if (dpdk_vhost_user_process_if (vm, xd, vu_state) != 0)
-           continue;
-#endif
       }
     }
 
-#if DPDK_VHOST_USER
-  dpdk_vhost_user_process_cleanup (vu_state);
-#endif
-
   return 0;
 }
 
@@ -1784,10 +1708,15 @@ dpdk_init (vlib_main_t * vm)
   vlib_thread_main_t *tm = vlib_get_thread_main ();
 
   /* verify that structs are cacheline aligned */
-  ASSERT (offsetof (dpdk_device_t, cacheline0) == 0);
-  ASSERT (offsetof (dpdk_device_t, cacheline1) == CLIB_CACHE_LINE_BYTES);
-  ASSERT (offsetof (dpdk_worker_t, cacheline0) == 0);
-  ASSERT (offsetof (frame_queue_trace_t, cacheline0) == 0);
+  STATIC_ASSERT (offsetof (dpdk_device_t, cacheline0) == 0,
+                "Cache line marker must be 1st element in dpdk_device_t");
+  STATIC_ASSERT (offsetof (dpdk_device_t, cacheline1) ==
+                CLIB_CACHE_LINE_BYTES,
+                "Data in cache line 0 is bigger than cache line size");
+  STATIC_ASSERT (offsetof (dpdk_worker_t, cacheline0) == 0,
+                "Cache line marker must be 1st element in dpdk_worker_t");
+  STATIC_ASSERT (offsetof (frame_queue_trace_t, cacheline0) == 0,
+                "Cache line marker must be 1st element in frame_queue_trace_t");
 
   dm->vlib_main = vm;
   dm->vnet_main = vnet_get_main ();
@@ -1817,10 +1746,6 @@ dpdk_init (vlib_main_t * vm)
   dm->efd.consec_full_frames_hi_thresh =
     DPDK_EFD_DEFAULT_CONSEC_FULL_FRAMES_HI_THRESH;
 
-  /* vhost-user coalescence frames defaults */
-  dm->conf->vhost_coalesce_frames = 32;
-  dm->conf->vhost_coalesce_time = 1e-3;
-
   /* Default vlib_buffer_t flags, DISABLES tcp/udp checksumming... */
   dm->buffer_flags_template =
     (VLIB_BUFFER_TOTAL_LENGTH_VALID