From patchwork Thu Jan 5 10:43:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: nickcooper-zhangtonghao X-Patchwork-Id: 18902 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 CAF8237A6; Thu, 5 Jan 2017 11:43:15 +0100 (CET) Received: from smtpproxy19.qq.com (smtpproxy19.qq.com [184.105.206.84]) by dpdk.org (Postfix) with ESMTP id D6B1E2C36 for ; Thu, 5 Jan 2017 11:43:14 +0100 (CET) X-QQ-mid: bizesmtp2t1483612991trzgkkkdw Received: from local.opencloud.tech.localdomai (unknown [106.120.127.11]) by esmtp4.qq.com (ESMTP) with id ; Thu, 05 Jan 2017 18:43:11 +0800 (CST) X-QQ-SSF: 0110000000200070F650B00A0000000 X-QQ-FEAT: 6dXuswn9i1VbCVMeY5sCKY35cWp1ii9nzaaakFnPuvUULRTdoy7A7tHvHNphN eOOSmayZQVrnoiWM7QtGKF+sDcp+DWuqDdhvJWru96peYx64eExj9Ox8ySKIQzH9LliTVhn C6g2G+UTdXx2JvWLdjiYjSvkX5jx/FNa4vjYrPu6qDPBeQ5RyESnebGOJrcUTNg48J9fgjC LJTVFxBY8gP0+33TF/g476UhfojMnrxp8t8c2Zuv3lLX1zrbBnmg/EyEMWRaQaJyofOXD4z AeBqCiGMS5q/Gh X-QQ-GoodBg: 0 From: nickcooper-zhangtonghao To: dev@dpdk.org Cc: nickcooper-zhangtonghao Date: Thu, 5 Jan 2017 02:43:01 -0800 Message-Id: <1483612983-3545-3-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1483612983-3545-1-git-send-email-nic@opencloud.tech> References: <1483612983-3545-1-git-send-email-nic@opencloud.tech> X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Subject: [dpdk-dev] [PATCH 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 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 --- 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) {