session: pre-alloc required dma batches
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
This commit is contained in:
@ -2023,6 +2023,7 @@ session_dma_completion_cb (vlib_main_t *vm, struct vlib_dma_batch *batch)
|
|||||||
static void
|
static void
|
||||||
session_prepare_dma_args (vlib_dma_config_t *args)
|
session_prepare_dma_args (vlib_dma_config_t *args)
|
||||||
{
|
{
|
||||||
|
args->max_batches = 16;
|
||||||
args->max_transfers = DMA_TRANS_SIZE;
|
args->max_transfers = DMA_TRANS_SIZE;
|
||||||
args->max_transfer_size = 65536;
|
args->max_transfer_size = 65536;
|
||||||
args->features = 0;
|
args->features = 0;
|
||||||
|
@ -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)))
|
if (wrk->trans_head == ((wrk->trans_tail + 1) & (wrk->trans_size - 1)))
|
||||||
return 0;
|
return 0;
|
||||||
wrk->batch = vlib_dma_batch_new (vm, wrk->config_index);
|
wrk->batch = vlib_dma_batch_new (vm, wrk->config_index);
|
||||||
|
if (!wrk->batch)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user