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



Reply via email to