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 BC8DA1E2F for ; Mon, 9 Jan 2017 03:59:49 +0100 (CET) X-QQ-mid: bizesmtp3t1483930785tqsyw2gbr Received: from local.opencloud.tech.localdomai (unknown [106.120.127.11]) by esmtp4.qq.com (ESMTP) with id ; Mon, 09 Jan 2017 10:59:43 +0800 (CST) X-QQ-SSF: 01100000002000F0F870000A0000000 X-QQ-FEAT: 3jlOKZxptE43PM/xEyomtqHQ4g7VjD++Rtw+iyWKuv0M6sS7YWUQqJ+DUAOyU doABHxI5XFWWX7fcyFfPkJ+HKAr0eNi0wtAKMS4HJdeJlhJs3B2TuCE3N2UyIP2mTuek554 Ng3woFPSH6p5NZst4blcOOW6axH4DRGntbZ6P9mhOsZ9+AkRu1KzMpNrBJCpCdwZSNneEyf 4T9W6eHYkiWXmOTHBYAeQGDHaKq87ZV63Sc8ffW7J+DZ+8MQT1lKVhVR3N0QX6IDVm66jjh HsBfEXq69owbgC+lyyo2r7aoQ= 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:38 -0800 Message-Id: <1483930780-7064-2-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 2/4] 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: , X-List-Received-Date: Mon, 09 Jan 2017 02:59:50 -0000 When we config RX queue with 2048 RX queue size, and stop the device, changed queue size to 4096 and then start the device, there will be segment fault. We should allocate RX ring for max possible number of hardware descriptors. Signed-off-by: Nick Zhang --- 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