We should allocate RX ring for max possible mumber of hardware descriptors. If we config RX queue with 2048 RX queue size, and 4096 soon, there will be segment fault when calling other ethernet API (e.g. rte_eth_dev_start).
Signed-off-by: nickcooper-zhangtonghao <n...@opencloud.tech> --- drivers/net/vmxnet3/vmxnet3_rxtx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index e83ac05..9822fa0 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -977,8 +977,11 @@ comp_ring->next2proc = 0; comp_ring->gen = VMXNET3_INIT_GEN; - size = sizeof(struct Vmxnet3_RxDesc) * (ring0->size + ring1->size); - size += sizeof(struct Vmxnet3_RxCompDesc) * comp_ring->size; + /* Allocate RX ring for max possible mumber of hardware descriptors. */ + size = sizeof(struct Vmxnet3_RxDesc) * + (VMXNET3_RX_RING_MAX_SIZE * VMXNET3_RX_CMDRING_SIZE); + size += sizeof(struct Vmxnet3_RxCompDesc) * + (VMXNET3_RX_RING_MAX_SIZE * VMXNET3_RX_CMDRING_SIZE); mz = ring_dma_zone_reserve(dev, "rxdesc", queue_idx, size, socket_id); if (mz == NULL) { -- 1.8.3.1