session: pre-alloc required dma batches 76/38476/2
authorMarvin Liu <yong.liu@intel.com>
Tue, 14 Mar 2023 15:56:31 +0000 (23:56 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 14 Mar 2023 16:40:41 +0000 (16:40 +0000)
Specify the number of max_batches when applying for dma config.
Skip this round when no batch available from vlib_dma_batch_new.

Type: improvement

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Change-Id: Ic6e0acf81ba4fc3ed33aea6ac6990ef841021c59

src/vnet/session/session.c
src/vnet/session/session_node.c

index 3747c87..fe05dd2 100644 (file)
@@ -2023,6 +2023,7 @@ session_dma_completion_cb (vlib_main_t *vm, struct vlib_dma_batch *batch)
 static void
 session_prepare_dma_args (vlib_dma_config_t *args)
 {
+  args->max_batches = 16;
   args->max_transfers = DMA_TRANS_SIZE;
   args->max_transfer_size = 65536;
   args->features = 0;
index c67d63f..f1a0067 100644 (file)
@@ -1936,6 +1936,8 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
       if (wrk->trans_head == ((wrk->trans_tail + 1) & (wrk->trans_size - 1)))
        return 0;
       wrk->batch = vlib_dma_batch_new (vm, wrk->config_index);
+      if (!wrk->batch)
+       return 0;
     }
 
   /*