From mboxrd@z Thu Jan 1 00:00:00 1970 From: nickcooper-zhangtonghao Subject: [PATCH v2 3/5] vmxnet3: Avoid segfault caused by vmxnet3_dev_rx_queue_setup. Date: Thu, 5 Jan 2017 04:01:47 -0800 Message-ID: <1483617709-7088-3-git-send-email-nic@opencloud.tech> References: <1483617709-7088-1-git-send-email-nic@opencloud.tech> Cc: nickcooper-zhangtonghao To: dev@dpdk.org Return-path: Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by dpdk.org (Postfix) with ESMTP id 5FD77F610 for ; Thu, 5 Jan 2017 13:02:08 +0100 (CET) In-Reply-To: <1483617709-7088-1-git-send-email-nic@opencloud.tech> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" We should allocate RX ring for max possible number 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 --- 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 e77374f..d5d7c33 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 number 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