Fix regression of setting device to admin-down state 14/6714/2
authorJohn Lo <loj@cisco.com>
Mon, 15 May 2017 23:21:15 +0000 (19:21 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 16 May 2017 10:09:47 +0000 (10:09 +0000)
Change-Id: I0ffa572839405efe1170d6ddb073e53e9af02db7
Signed-off-by: John Lo <loj@cisco.com>
src/plugins/dpdk/device/device.c

index 6a0b1ac..c68ecbd 100644 (file)
@@ -618,22 +618,21 @@ dpdk_interface_admin_up_down (vnet_main_t * vnm, u32 hw_if_index, u32 flags)
 
   if (is_up)
     {
-      f64 now = vlib_time_now (dm->vlib_main);
-
+      vnet_hw_interface_set_flags (vnm, xd->hw_if_index,
+                                  VNET_HW_INTERFACE_FLAG_LINK_UP);
       if ((xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) == 0)
        dpdk_device_start (xd);
-
       xd->flags |= DPDK_DEVICE_FLAG_ADMIN_UP;
+      f64 now = vlib_time_now (dm->vlib_main);
       dpdk_update_counters (xd, now);
       dpdk_update_link_state (xd, now);
     }
   else
     {
-      xd->flags &= ~DPDK_DEVICE_FLAG_ADMIN_UP;
       vnet_hw_interface_set_flags (vnm, xd->hw_if_index, 0);
-
       if ((xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) != 0)
        dpdk_device_stop (xd);
+      xd->flags &= ~DPDK_DEVICE_FLAG_ADMIN_UP;
     }
 
   return /* no error */ 0;