gso: remove the interface count
[vpp.git] / src / vnet / devices / virtio / vhost_user_inline.h
index 544e2d3..e4a1d59 100644 (file)
@@ -214,13 +214,17 @@ format_vhost_trace (u8 * s, va_list * va)
   CLIB_UNUSED (vnet_main_t * vnm) = vnet_get_main ();
   vhost_user_main_t *vum = &vhost_user_main;
   vhost_trace_t *t = va_arg (*va, vhost_trace_t *);
-  vhost_user_intf_t *vui = pool_elt_at_index (vum->vhost_user_interfaces,
-                                             t->device_index);
-
-  vnet_sw_interface_t *sw = vnet_get_sw_interface (vnm, vui->sw_if_index);
-
-  u32 indent = format_get_indent (s);
+  vhost_user_intf_t *vui = vum->vhost_user_interfaces + t->device_index;
+  vnet_sw_interface_t *sw;
+  u32 indent;
 
+  if (pool_is_free (vum->vhost_user_interfaces, vui))
+    {
+      s = format (s, "vhost-user interface is deleted");
+      return s;
+    }
+  sw = vnet_get_sw_interface (vnm, vui->sw_if_index);
+  indent = format_get_indent (s);
   s = format (s, "%U %U queue %d\n", format_white_space, indent,
              format_vnet_sw_interface_name, vnm, sw, t->qid);
 
@@ -270,6 +274,24 @@ vui_is_link_up (vhost_user_intf_t * vui)
   return vui->admin_up && vui->is_ready;
 }
 
+static_always_inline void
+vhost_user_update_gso_interface_count (vhost_user_intf_t * vui, u8 add)
+{
+  vhost_user_main_t *vum = &vhost_user_main;
+
+  if (vui->enable_gso)
+    {
+      if (add)
+       {
+         vum->gso_count++;
+       }
+      else
+       {
+         ASSERT (vum->gso_count > 0);
+         vum->gso_count--;
+       }
+    }
+}
 #endif
 
 /*