From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by dpdk.org (Postfix) with ESMTP id 77471D4E0 for ; Thu, 5 Jan 2017 11:43:19 +0100 (CET) X-QQ-mid: bizesmtp2t1483612994t3yu5snen Received: from local.opencloud.tech.localdomai (unknown [106.120.127.11]) by esmtp4.qq.com (ESMTP) with id ; Thu, 05 Jan 2017 18:43:13 +0800 (CST) X-QQ-SSF: 0110000000200070F650B00A0000000 X-QQ-FEAT: HqsAE+iGIGhPLU4C3bMiE8ZbhAdSkmKxZGQcDcTB0Fi0CnYrO5Sgpq0X9009t k7sMdk/a9c8szjxnUBmgxRX9GhBdlwl6qJW1VQM+AxDswdwnrOOwiLugeISz94w2TX9HLn1 MlWRYSOQB4gg4eVTdCdwOli6W5fqkNXutimE4WYAYWLmUntqqp0Gtbd5xvFtdC3XRYkDm8G PBBdkjOv0bjS/LoMa1SKFDwj7Hi6eR5WIshIXdmn7ZMA1D1MZbSRNJd9Gh8oMTgnukTGBYS GMOhazrjk2J7ut X-QQ-GoodBg: 0 From: nickcooper-zhangtonghao To: dev@dpdk.org Cc: nickcooper-zhangtonghao Date: Thu, 5 Jan 2017 02:43:03 -0800 Message-Id: <1483612983-3545-5-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 5/5] vmxnet3: Avoid segfault caused by vmxnet3_dev_tx_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: , X-List-Received-Date: Thu, 05 Jan 2017 10:43:20 -0000 We should allocate Tx ring for max possible mumber of hardware descriptors. If we config Tx queue with 2048 Tx queue size, and 4096 soon, there will be segment fault. Signed-off-by: nickcooper-zhangtonghao --- drivers/net/vmxnet3/vmxnet3_rxtx.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index 077baac..2302c8a 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -874,9 +874,10 @@ comp_ring->next2proc = 0; comp_ring->gen = VMXNET3_INIT_GEN; - size = sizeof(struct Vmxnet3_TxDesc) * ring->size; - size += sizeof(struct Vmxnet3_TxCompDesc) * comp_ring->size; - size += sizeof(struct Vmxnet3_TxDataDesc) * data_ring->size; + /* Allocate Tx ring for max possible mumber of hardware descriptors. */ + size = sizeof(struct Vmxnet3_TxDesc) * VMXNET3_TX_RING_MAX_SIZE; + size += sizeof(struct Vmxnet3_TxCompDesc) * VMXNET3_TX_RING_MAX_SIZE; + size += sizeof(struct Vmxnet3_TxDataDesc) * VMXNET3_TX_RING_MAX_SIZE; mz = ring_dma_zone_reserve(dev, "txdesc", queue_idx, size, socket_id); if (mz == NULL) { -- 1.8.3.1