avf: fix init when num_rx_queues > num_tx_queues 26/22226/2
authorDamjan Marion <[email protected]>
Tue, 20 Aug 2019 15:51:22 +0000 (17:51 +0200)
committerDamjan Marion <[email protected]>
Tue, 24 Sep 2019 20:55:40 +0000 (20:55 +0000)
Type: fix
Fixes: ae91180

Change-Id: Id93b0f4d23ad7022e341e305bbd93ef2fff5787d
Signed-off-by: Damjan Marion <[email protected]>
(cherry picked from commit 017002ae357a05ca1ae1b7d8fbc7bbc8063c9e34)

src/plugins/avf/device.c

index d7e91d9..b11de27 100644 (file)
@@ -661,11 +661,11 @@ avf_op_config_vsi_queues (vlib_main_t * vm, avf_device_t * ad)
                     i, rxq->max_pkt_size, rxq->ring_len,
                     rxq->databuffer_size, rxq->dma_ring_addr);
 
-      avf_txq_t *q = vec_elt_at_index (ad->txqs, i);
       txq->vsi_id = ad->vsi_id;
+      txq->queue_id = i;
       if (i < vec_len (ad->txqs))
        {
-         txq->queue_id = i;
+         avf_txq_t *q = vec_elt_at_index (ad->txqs, i);
          txq->ring_len = q->size;
          txq->dma_ring_addr = avf_dma_addr (vm, ad, (void *) q->descs);
        }
@@ -857,8 +857,8 @@ avf_device_init (vlib_main_t * vm, avf_main_t * am, avf_device_t * ad,
 
   avf_adminq_init (vm, ad);
 
-  /* request more queues only if we need them */
-  if ((error = avf_request_queues (vm, ad, tm->n_vlib_mains)))
+  if ((error = avf_request_queues (vm, ad, clib_max (tm->n_vlib_mains,
+                                                    args->rxq_num))))
     {
       /* we failed to get more queues, but still we want to proceed */
       clib_error_free (error);