From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by dpdk.org (Postfix) with ESMTP id EBFC02C58 for ; Mon, 9 Jan 2017 03:59:54 +0100 (CET) X-QQ-mid: bizesmtp3t1483930789txxku3kbz Received: from local.opencloud.tech.localdomai (unknown [106.120.127.11]) by esmtp4.qq.com (ESMTP) with id ; Mon, 09 Jan 2017 10:59:47 +0800 (CST) X-QQ-SSF: 01100000002000F0F870000A0000000 X-QQ-FEAT: sHG46Uoe4Mz9e8JTvNUtzSu1B3Fjs0EKI+tPvOU17n+i7lHPrHK+Qpry85BcK fNzB4wdm/Pj323TQQfY4CvRrQQ2XuhfkV8IRV875NaJ7MiaIXhLUNUW6sHFpmYiW8FUZJBW sxGyiMh5lvnr0SiGhgvDQZ3R3IImY2O18V7JvUZvjaUQloW0ReJ1F21eJ89R1HGzjHSxRy9 rxxKn6K2HpbD3uog3X3aXSpl8ujn/OaCXvakOtNj1OzDJZS2yXbH0B6mBT1MaKU2J09z/1z a75HNbS1B8wPGh X-QQ-GoodBg: 0 From: Nick Zhang To: yongwang@vmware.com Cc: ferruh.yigit@intel.com, dev@dpdk.org, Nick Zhang Date: Sun, 8 Jan 2017 18:59:40 -0800 Message-Id: <1483930780-7064-4-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1483930780-7064-1-git-send-email-nic@opencloud.tech> References: <1483930780-7064-1-git-send-email-nic@opencloud.tech> X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Subject: [dpdk-dev] [PATCH v3 4/4] 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: Mon, 09 Jan 2017 02:59:55 -0000 When we config TX queue with 2048 TX queue size, stop the device, changed queue size to 4096 and then start the device, there will be segment fault. We should allocate TX ring for max possible number of hardware descriptors. Signed-off-by: Nick Zhang --- 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 f00b3b9..5f35a2e 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 number 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