From patchwork Thu Jan 5 12:01:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: nickcooper-zhangtonghao X-Patchwork-Id: 18913 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id B8A13F92C; Thu, 5 Jan 2017 13:02:23 +0100 (CET) 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) X-QQ-mid: bizesmtp5t1483617721t8cne837d Received: from local.opencloud.tech.localdomai (unknown [106.120.127.11]) by esmtp4.qq.com (ESMTP) with id ; Thu, 05 Jan 2017 20:02:00 +0800 (CST) X-QQ-SSF: 0110000000200070F650000A0000000 X-QQ-FEAT: jLTfbrzLdoNLr7nZuh0SguaFJ9nbW+M1ZvfbdYOj4DBjy1H6/rXRg4TVMpzsd LIEV3M6XymMdL5iIKNTaWar8AJwC9PRPZJ599ceW1cBy3gp6ePkrnLB29Tc5Kze2OSEx6Ik nUB0qgeCdJa+fn1yRWNX2+bBtxW2ll30IbqaWFEPP0uwMfYRfXmvJI5OpvqkiOe7n5VoHPl 90w4jca8fMqktv52JCIW5O+eScwSAZhr+kyUy8SnuialxzvqCP+yM5pDUIN3iPW0+VOGbeI XWLC9qItoabcpKh5hl+sw2sEg= X-QQ-GoodBg: 0 From: nickcooper-zhangtonghao To: dev@dpdk.org Cc: nickcooper-zhangtonghao Date: Thu, 5 Jan 2017 04:01:47 -0800 Message-Id: <1483617709-7088-3-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1483617709-7088-1-git-send-email-nic@opencloud.tech> References: <1483617709-7088-1-git-send-email-nic@opencloud.tech> X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Subject: [dpdk-dev] [PATCH v2 3/5] vmxnet3: Avoid segfault caused by vmxnet3_dev_rx_queue_setup. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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) {