FIB path preference
[vpp.git] / src / vnet / interface_cli.c
index e18a80f..fe7ae38 100644 (file)
@@ -1186,6 +1186,9 @@ set_hw_interface_rx_mode (vnet_main_t * vnm, u32 hw_if_index,
   vnet_hw_interface_rx_mode old_mode;
   int rv;
 
+  if (mode == VNET_HW_INTERFACE_RX_MODE_DEFAULT)
+    mode = hw->default_rx_mode;
+
   rv = vnet_hw_interface_get_rx_mode (vnm, hw_if_index, queue_id, &old_mode);
   switch (rv)
     {
@@ -1272,12 +1275,15 @@ set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input,
   hw = vnet_get_hw_interface (vnm, hw_if_index);
 
   if (queue_id == ~0)
-    for (i = 0; i < vec_len (hw->dq_runtime_index_by_queue); i++)
-      {
-       error = set_hw_interface_rx_mode (vnm, hw_if_index, i, mode);
-       if (error)
-         break;
-      }
+    {
+      for (i = 0; i < vec_len (hw->dq_runtime_index_by_queue); i++)
+       {
+         error = set_hw_interface_rx_mode (vnm, hw_if_index, i, mode);
+         if (error)
+           break;
+       }
+      hw->default_rx_mode = mode;
+    }
   else
     error = set_hw_interface_rx_mode (vnm, hw_if_index, queue_id, mode);
 
@@ -1333,8 +1339,10 @@ show_interface_rx_placement_fn (vlib_main_t * vm, unformat_input_t * input,
 
         vec_foreach (dq, rt->devices_and_queues)
          {
+           vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm,
+                                                            dq->hw_if_index);
            s = format (s, "    %U queue %u (%U)\n",
-                       format_vnet_sw_if_index_name, vnm, dq->hw_if_index,
+                       format_vnet_sw_if_index_name, vnm, hi->sw_if_index,
                        dq->queue_id,
                        format_vnet_hw_interface_rx_mode, dq->mode);
          }
@@ -1445,8 +1453,10 @@ set_interface_rx_placement (vlib_main_t * vm, unformat_input_t * input,
 /* *INDENT-OFF* */
 VLIB_CLI_COMMAND (cmd_set_if_rx_placement,static) = {
     .path = "set interface rx-placement",
-    .short_help = "set interface rx-placement <hw-interface> [queue <n>] [thread <n> | main]",
+    .short_help = "set interface rx-placement <hw-interface> [queue <n>] "
+      "[worker <n> | main]",
     .function = set_interface_rx_placement,
+    .is_mp_safe = 1,
 };
 
 /* *INDENT-ON* */