af_xdp: fix init lock for shared txq 78/33778/5
authorarikachen <eaglesora@gmail.com>
Wed, 22 Sep 2021 03:13:11 +0000 (11:13 +0800)
committerBeno�t Ganne <bganne@cisco.com>
Tue, 28 Sep 2021 13:49:55 +0000 (13:49 +0000)
Type: fix

Signed-off-by: arikachen <eaglesora@gmail.com>
Change-Id: Idb5e66d7a2a7ccb6fb5155341df54586186eb11f

src/plugins/af_xdp/device.c

index c82b700..30d3c95 100644 (file)
@@ -477,12 +477,6 @@ af_xdp_create_if (vlib_main_t * vm, af_xdp_create_if_args_t * args)
                            out */
            }
 
-         if (i < txq_num)
-           {
-             /* we created less txq than threads not an error but initialize lock for shared txq */
-             for (i = 0; i < ad->txq_num; i++)
-               clib_spinlock_init (&vec_elt (ad->txqs, i).lock);
-           }
 
          args->rv = 0;
          clib_error_free (args->error);
@@ -490,6 +484,13 @@ af_xdp_create_if (vlib_main_t * vm, af_xdp_create_if_args_t * args)
        }
     }
 
+  if (ad->txq_num < tm->n_vlib_mains)
+    {
+      /* initialize lock for shared txq */
+      for (i = 0; i < ad->txq_num; i++)
+       clib_spinlock_init (&vec_elt (ad->txqs, i).lock);
+    }
+
   ad->dev_instance = ad - am->devices;
   ad->per_interface_next_index = VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT;
   ad->pool =