From patchwork Wed Jul 17 10:41:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56590 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 778DD2BF4; Wed, 17 Jul 2019 12:41:53 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 216312BD5; Wed, 17 Jul 2019 12:41:49 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 8CCE630C0A6; Wed, 17 Jul 2019 03:41:47 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 8CCE630C0A6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360107; bh=Ro/SekQyR8MiaiEUT1gyQZfGN6OGT96BKMFUGzIF5qA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lzt1EZs7YgSUa679/5mrTsNjfvE74wHys5vHiHlHi1lhH9Aef+mtWqZlHTKmVOwYy a6pYGgxmAoee1mBCrNd++wQlBiBLZdFuDlrIj5eQ/EALjxS+RrbpDZ5JBrBHxxFh69 oV1I8pmb2RNZJEO1PeldJmz0BTmq+B8H/DOb8/4s= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 9EEFAAC0749; Wed, 17 Jul 2019 03:41:45 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kalesh AP , stable@dpdk.org, Ajit Kumar Khaparde Date: Wed, 17 Jul 2019 16:11:25 +0530 Message-Id: <20190717104139.21155-2-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 01/15] net/bnxt: fix extended port counter statistics 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" From: Kalesh AP 1. refactor stats allocation code to new routine 2. check for extended statistics support depends on "hwrm_spec_code" which is set in bnxt_hwrm_ver_get called later. Hence we were never querying extended port stats as flags field was not updated. Fixed this by moving the stats allocation after the call to bnxt_hwrm_ver_get. 3. we were incorrectly passing the host address used for port statistics to PORT_QSTATS_EXT command. Fixed this by passing the correct extended stats address. Fixes: f55e12f33416 ("net/bnxt: support extended port counters") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Kumar Khaparde --- v1->v2: Use PCI_PRI_FMT to format PCI address. --- drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_ethdev.c | 226 +++++++++++++++++---------------- drivers/net/bnxt/bnxt_hwrm.c | 7 +- 3 files changed, 125 insertions(+), 109 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 942da7ff0..45e7359b2 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -350,6 +350,7 @@ struct bnxt { #define BNXT_FLAG_TRUSTED_VF_EN (1 << 11) #define BNXT_FLAG_DFLT_VNIC_SET (1 << 12) #define BNXT_FLAG_THOR_CHIP (1 << 13) +#define BNXT_FLAG_EXT_STATS_SUPPORTED (1 << 29) #define BNXT_FLAG_NEW_RM (1 << 30) #define BNXT_FLAG_INIT_DONE (1U << 31) #define BNXT_PF(bp) (!((bp)->flags & BNXT_FLAG_VF)) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 14b69a480..da0486c62 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3639,6 +3639,120 @@ int bnxt_alloc_ctx_mem(struct bnxt *bp) return 0; } +static int bnxt_alloc_stats_mem(struct bnxt *bp) +{ + struct rte_pci_device *pci_dev = bp->pdev; + char mz_name[RTE_MEMZONE_NAMESIZE]; + const struct rte_memzone *mz = NULL; + uint32_t total_alloc_len; + rte_iova_t mz_phys_addr; + + if (pci_dev->id.device_id == BROADCOM_DEV_ID_NS2) + return 0; + + snprintf(mz_name, RTE_MEMZONE_NAMESIZE, + "bnxt_" PCI_PRI_FMT "-%s", pci_dev->addr.domain, + pci_dev->addr.bus, pci_dev->addr.devid, + pci_dev->addr.function, "rx_port_stats"); + mz_name[RTE_MEMZONE_NAMESIZE - 1] = 0; + mz = rte_memzone_lookup(mz_name); + total_alloc_len = + RTE_CACHE_LINE_ROUNDUP(sizeof(struct rx_port_stats) + + sizeof(struct rx_port_stats_ext) + 512); + if (!mz) { + mz = rte_memzone_reserve(mz_name, total_alloc_len, + SOCKET_ID_ANY, + RTE_MEMZONE_2MB | + RTE_MEMZONE_SIZE_HINT_ONLY | + RTE_MEMZONE_IOVA_CONTIG); + if (mz == NULL) + return -ENOMEM; + } + memset(mz->addr, 0, mz->len); + mz_phys_addr = mz->iova; + if ((unsigned long)mz->addr == mz_phys_addr) { + PMD_DRV_LOG(WARNING, + "Memzone physical address same as virtual.\n"); + PMD_DRV_LOG(WARNING, + "Using rte_mem_virt2iova()\n"); + mz_phys_addr = rte_mem_virt2iova(mz->addr); + if (mz_phys_addr == 0) { + PMD_DRV_LOG(ERR, + "Can't map address to physical memory\n"); + return -ENOMEM; + } + } + + bp->rx_mem_zone = (const void *)mz; + bp->hw_rx_port_stats = mz->addr; + bp->hw_rx_port_stats_map = mz_phys_addr; + + snprintf(mz_name, RTE_MEMZONE_NAMESIZE, + "bnxt_" PCI_PRI_FMT "-%s", pci_dev->addr.domain, + pci_dev->addr.bus, pci_dev->addr.devid, + pci_dev->addr.function, "tx_port_stats"); + mz_name[RTE_MEMZONE_NAMESIZE - 1] = 0; + mz = rte_memzone_lookup(mz_name); + total_alloc_len = + RTE_CACHE_LINE_ROUNDUP(sizeof(struct tx_port_stats) + + sizeof(struct tx_port_stats_ext) + 512); + if (!mz) { + mz = rte_memzone_reserve(mz_name, + total_alloc_len, + SOCKET_ID_ANY, + RTE_MEMZONE_2MB | + RTE_MEMZONE_SIZE_HINT_ONLY | + RTE_MEMZONE_IOVA_CONTIG); + if (mz == NULL) + return -ENOMEM; + } + memset(mz->addr, 0, mz->len); + mz_phys_addr = mz->iova; + if ((unsigned long)mz->addr == mz_phys_addr) { + PMD_DRV_LOG(WARNING, + "Memzone physical address same as virtual\n"); + PMD_DRV_LOG(WARNING, + "Using rte_mem_virt2iova()\n"); + mz_phys_addr = rte_mem_virt2iova(mz->addr); + if (mz_phys_addr == 0) { + PMD_DRV_LOG(ERR, + "Can't map address to physical memory\n"); + return -ENOMEM; + } + } + + bp->tx_mem_zone = (const void *)mz; + bp->hw_tx_port_stats = mz->addr; + bp->hw_tx_port_stats_map = mz_phys_addr; + bp->flags |= BNXT_FLAG_PORT_STATS; + + /* Display extended statistics if FW supports it */ + if (bp->hwrm_spec_code < HWRM_SPEC_CODE_1_8_4 || + bp->hwrm_spec_code == HWRM_SPEC_CODE_1_9_0 || + !(bp->flags & BNXT_FLAG_EXT_STATS_SUPPORTED)) + return 0; + + bp->hw_rx_port_stats_ext = (void *) + ((uint8_t *)bp->hw_rx_port_stats + + sizeof(struct rx_port_stats)); + bp->hw_rx_port_stats_ext_map = bp->hw_rx_port_stats_map + + sizeof(struct rx_port_stats); + bp->flags |= BNXT_FLAG_EXT_RX_PORT_STATS; + + if (bp->hwrm_spec_code < HWRM_SPEC_CODE_1_9_2 || + bp->flags & BNXT_FLAG_EXT_STATS_SUPPORTED) { + bp->hw_tx_port_stats_ext = (void *) + ((uint8_t *)bp->hw_tx_port_stats + + sizeof(struct tx_port_stats)); + bp->hw_tx_port_stats_ext_map = + bp->hw_tx_port_stats_map + + sizeof(struct tx_port_stats); + bp->flags |= BNXT_FLAG_EXT_TX_PORT_STATS; + } + + return 0; +} + #define ALLOW_FUNC(x) \ { \ uint32_t arg = (x); \ @@ -3649,11 +3763,7 @@ static int bnxt_dev_init(struct rte_eth_dev *eth_dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); - char mz_name[RTE_MEMZONE_NAMESIZE]; - const struct rte_memzone *mz = NULL; static int version_printed; - uint32_t total_alloc_len; - rte_iova_t mz_phys_addr; struct bnxt *bp; uint16_t mtu; int rc; @@ -3692,109 +3802,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - if (pci_dev->id.device_id != BROADCOM_DEV_ID_NS2) { - snprintf(mz_name, RTE_MEMZONE_NAMESIZE, - "bnxt_%04x:%02x:%02x:%02x-%s", pci_dev->addr.domain, - pci_dev->addr.bus, pci_dev->addr.devid, - pci_dev->addr.function, "rx_port_stats"); - mz_name[RTE_MEMZONE_NAMESIZE - 1] = 0; - mz = rte_memzone_lookup(mz_name); - total_alloc_len = RTE_CACHE_LINE_ROUNDUP( - sizeof(struct rx_port_stats) + - sizeof(struct rx_port_stats_ext) + - 512); - if (!mz) { - mz = rte_memzone_reserve(mz_name, total_alloc_len, - SOCKET_ID_ANY, - RTE_MEMZONE_2MB | - RTE_MEMZONE_SIZE_HINT_ONLY | - RTE_MEMZONE_IOVA_CONTIG); - if (mz == NULL) - return -ENOMEM; - } - memset(mz->addr, 0, mz->len); - mz_phys_addr = mz->iova; - if ((unsigned long)mz->addr == mz_phys_addr) { - PMD_DRV_LOG(INFO, - "Memzone physical address same as virtual using rte_mem_virt2iova()\n"); - mz_phys_addr = rte_mem_virt2iova(mz->addr); - if (mz_phys_addr == 0) { - PMD_DRV_LOG(ERR, - "unable to map address to physical memory\n"); - return -ENOMEM; - } - } - - bp->rx_mem_zone = (const void *)mz; - bp->hw_rx_port_stats = mz->addr; - bp->hw_rx_port_stats_map = mz_phys_addr; - - snprintf(mz_name, RTE_MEMZONE_NAMESIZE, - "bnxt_%04x:%02x:%02x:%02x-%s", pci_dev->addr.domain, - pci_dev->addr.bus, pci_dev->addr.devid, - pci_dev->addr.function, "tx_port_stats"); - mz_name[RTE_MEMZONE_NAMESIZE - 1] = 0; - mz = rte_memzone_lookup(mz_name); - total_alloc_len = RTE_CACHE_LINE_ROUNDUP( - sizeof(struct tx_port_stats) + - sizeof(struct tx_port_stats_ext) + - 512); - if (!mz) { - mz = rte_memzone_reserve(mz_name, - total_alloc_len, - SOCKET_ID_ANY, - RTE_MEMZONE_2MB | - RTE_MEMZONE_SIZE_HINT_ONLY | - RTE_MEMZONE_IOVA_CONTIG); - if (mz == NULL) - return -ENOMEM; - } - memset(mz->addr, 0, mz->len); - mz_phys_addr = mz->iova; - if ((unsigned long)mz->addr == mz_phys_addr) { - PMD_DRV_LOG(WARNING, - "Memzone physical address same as virtual.\n"); - PMD_DRV_LOG(WARNING, - "Using rte_mem_virt2iova()\n"); - mz_phys_addr = rte_mem_virt2iova(mz->addr); - if (mz_phys_addr == 0) { - PMD_DRV_LOG(ERR, - "unable to map address to physical memory\n"); - return -ENOMEM; - } - } - - bp->tx_mem_zone = (const void *)mz; - bp->hw_tx_port_stats = mz->addr; - bp->hw_tx_port_stats_map = mz_phys_addr; - - bp->flags |= BNXT_FLAG_PORT_STATS; - - /* Display extended statistics if FW supports it */ - if (bp->hwrm_spec_code < HWRM_SPEC_CODE_1_8_4 || - bp->hwrm_spec_code == HWRM_SPEC_CODE_1_9_0) - goto skip_ext_stats; - - bp->hw_rx_port_stats_ext = (void *) - ((uint8_t *)bp->hw_rx_port_stats + - sizeof(struct rx_port_stats)); - bp->hw_rx_port_stats_ext_map = bp->hw_rx_port_stats_map + - sizeof(struct rx_port_stats); - bp->flags |= BNXT_FLAG_EXT_RX_PORT_STATS; - - - if (bp->hwrm_spec_code < HWRM_SPEC_CODE_1_9_2) { - bp->hw_tx_port_stats_ext = (void *) - ((uint8_t *)bp->hw_tx_port_stats + - sizeof(struct tx_port_stats)); - bp->hw_tx_port_stats_ext_map = - bp->hw_tx_port_stats_map + - sizeof(struct tx_port_stats); - bp->flags |= BNXT_FLAG_EXT_TX_PORT_STATS; - } - } - -skip_ext_stats: rc = bnxt_alloc_hwrm_resources(bp); if (rc) { PMD_DRV_LOG(ERR, @@ -3823,6 +3830,11 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) PMD_DRV_LOG(ERR, "hwrm query capability failure rc: %x\n", rc); goto error_free; } + + rc = bnxt_alloc_stats_mem(bp); + if (rc) + goto error_free; + if (bp->max_tx_rings == 0) { PMD_DRV_LOG(ERR, "No TX rings available!\n"); rc = -EBUSY; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 8f0d33dca..f691922bd 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -611,6 +611,9 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) } } + if (flags & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_EXT_STATS_SUPPORTED) + bp->flags |= BNXT_FLAG_EXT_STATS_SUPPORTED; + HWRM_UNLOCK(); return rc; @@ -4495,13 +4498,13 @@ int bnxt_hwrm_ext_port_qstats(struct bnxt *bp) req.port_id = rte_cpu_to_le_16(pf->port_id); if (bp->flags & BNXT_FLAG_EXT_TX_PORT_STATS) { req.tx_stat_host_addr = - rte_cpu_to_le_64(bp->hw_tx_port_stats_map); + rte_cpu_to_le_64(bp->hw_tx_port_stats_ext_map); req.tx_stat_size = rte_cpu_to_le_16(sizeof(struct tx_port_stats_ext)); } if (bp->flags & BNXT_FLAG_EXT_RX_PORT_STATS) { req.rx_stat_host_addr = - rte_cpu_to_le_64(bp->hw_rx_port_stats_map); + rte_cpu_to_le_64(bp->hw_rx_port_stats_ext_map); req.rx_stat_size = rte_cpu_to_le_16(sizeof(struct rx_port_stats_ext)); } From patchwork Wed Jul 17 10:41:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56591 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1E7944C94; Wed, 17 Jul 2019 12:41:56 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id DBB152BF4; Wed, 17 Jul 2019 12:41:50 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id A741830C0AA; Wed, 17 Jul 2019 03:41:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com A741830C0AA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360109; bh=/6/f620v5HbHoe3vofFArNvqxSkZW5dicqvLwzWhzvg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wOk41mqfvnZJ8WwkvedvfbCiPic6qWFUx64Oa/vg7rjEdi97m2Xf8mrGR2Q4l9j2Q IkiSaAM8FHu/ZT6231pNbyqAtyUrPRgeG6FMPsCavYouiB5c74/UJ1Z1YC1edvfqHS cRteQtsnNlMiD9GQXy+oYI9fOc5Eaj38ZNMNIAQ4= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id EE725AC0749; Wed, 17 Jul 2019 03:41:47 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kalesh AP , stable@dpdk.org Date: Wed, 17 Jul 2019 16:11:26 +0530 Message-Id: <20190717104139.21155-3-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 02/15] net/bnxt: fix possible segfault in case of probe failure 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" From: Kalesh AP Fixed couple of possible segfaults due to NULL pointer dereference in case of probe failure. Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_irq.c | 3 +++ drivers/net/bnxt/bnxt_vnic.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c index 0bb3eb4fa..61f7498a5 100644 --- a/drivers/net/bnxt/bnxt_irq.c +++ b/drivers/net/bnxt/bnxt_irq.c @@ -52,6 +52,9 @@ void bnxt_free_int(struct bnxt *bp) { struct bnxt_irq *irq; + if (bp->irq_tbl == NULL) + return; + irq = bp->irq_tbl; if (irq) { if (irq->requested) { diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c index 262cfc18d..20e5bf2d1 100644 --- a/drivers/net/bnxt/bnxt_vnic.c +++ b/drivers/net/bnxt/bnxt_vnic.c @@ -89,6 +89,9 @@ void bnxt_free_vnic_attributes(struct bnxt *bp) struct bnxt_vnic_info *vnic; unsigned int i; + if (bp->vnic_info == NULL) + return; + for (i = 0; i < bp->max_vnics; i++) { vnic = &bp->vnic_info[i]; if (vnic->rss_table) { From patchwork Wed Jul 17 10:41:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56592 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3FAA31B957; Wed, 17 Jul 2019 12:41:59 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 3DD284D27; Wed, 17 Jul 2019 12:41:53 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 14E4B30C08D; Wed, 17 Jul 2019 03:41:52 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 14E4B30C08D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360112; bh=qcF/RuDYjlwoEiWXyJp8Qiy/XUEYKhrCT0H7OzW4bBQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MIR6709g9oXnEBSA0cJeZFSGJ+X11vJymNhp4LUbN9/CoodN7TJOymjYdywOvhmm8 UUZa28oTbNLbelkN/mNcR13uJFc/b4eMKFzBylyGv625EbVrlZBsL8g8b9LBAzJK2y h0LkkdSX5NpR2rhkuvExBKBOqTOum9YAZmH8lHm4= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 406CCAC0749; Wed, 17 Jul 2019 03:41:49 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kalesh AP , stable@dpdk.org Date: Wed, 17 Jul 2019 16:11:27 +0530 Message-Id: <20190717104139.21155-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 03/15] net/bnxt: do not fail VF probe when the MAC address is zero 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" From: Kalesh AP VF driver should not fail probe if the host PF driver has not assigned any MAC address for the VF. It should generate a random MAC address and configure the MAC and then continue probing the device. Fixes: be160484a48d ("net/bnxt: check if MAC address is all zeros") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 62 +++++++++++++++++++++++----------- drivers/net/bnxt/bnxt_hwrm.c | 25 ++++++++++++++ drivers/net/bnxt/bnxt_hwrm.h | 1 + drivers/net/bnxt/bnxt_util.c | 11 ++++++ drivers/net/bnxt/bnxt_util.h | 1 + 5 files changed, 80 insertions(+), 20 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index da0486c62..e44df1881 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3753,6 +3753,46 @@ static int bnxt_alloc_stats_mem(struct bnxt *bp) return 0; } +static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) +{ + struct bnxt *bp = eth_dev->data->dev_private; + int rc = 0; + + eth_dev->data->mac_addrs = rte_zmalloc("bnxt_mac_addr_tbl", + RTE_ETHER_ADDR_LEN * + bp->max_l2_ctx, + 0); + if (eth_dev->data->mac_addrs == NULL) { + PMD_DRV_LOG(ERR, "Failed to alloc MAC addr tbl\n"); + return -ENOMEM; + } + + if (bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN)) { + if (BNXT_PF(bp)) + return -EINVAL; + + /* Generate a random MAC address, if none was assigned by PF */ + PMD_DRV_LOG(INFO, "VF MAC address not assigned by Host PF\n"); + bnxt_eth_hw_addr_random(bp->mac_addr); + PMD_DRV_LOG(INFO, + "Assign random MAC:%02X:%02X:%02X:%02X:%02X:%02X\n", + bp->mac_addr[0], bp->mac_addr[1], bp->mac_addr[2], + bp->mac_addr[3], bp->mac_addr[4], bp->mac_addr[5]); + + rc = bnxt_hwrm_set_mac(bp); + if (!rc) + memcpy(&bp->eth_dev->data->mac_addrs[0], bp->mac_addr, + RTE_ETHER_ADDR_LEN); + return rc; + } + + /* Copy the permanent MAC from the FUNC_QCAPS response */ + memcpy(bp->mac_addr, bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN); + memcpy(ð_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN); + + return rc; +} + #define ALLOW_FUNC(x) \ { \ uint32_t arg = (x); \ @@ -3840,28 +3880,10 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) rc = -EBUSY; goto error_free; } - eth_dev->data->mac_addrs = rte_zmalloc("bnxt_mac_addr_tbl", - RTE_ETHER_ADDR_LEN * bp->max_l2_ctx, 0); - if (eth_dev->data->mac_addrs == NULL) { - PMD_DRV_LOG(ERR, - "Failed to alloc %u bytes needed to store MAC addr tbl", - RTE_ETHER_ADDR_LEN * bp->max_l2_ctx); - rc = -ENOMEM; - goto error_free; - } - if (bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN)) { - PMD_DRV_LOG(ERR, - "Invalid MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n", - bp->dflt_mac_addr[0], bp->dflt_mac_addr[1], - bp->dflt_mac_addr[2], bp->dflt_mac_addr[3], - bp->dflt_mac_addr[4], bp->dflt_mac_addr[5]); - rc = -EINVAL; + rc = bnxt_setup_mac_addr(eth_dev); + if (rc) goto error_free; - } - /* Copy the permanent MAC from the qcap response address now. */ - memcpy(bp->mac_addr, bp->dflt_mac_addr, sizeof(bp->mac_addr)); - memcpy(ð_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN); /* THOR does not support ring groups. * But we will use the array to save RSS context IDs. diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index f691922bd..a9356c6b8 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -4607,3 +4607,28 @@ int bnxt_hwrm_tunnel_redirect_info(struct bnxt *bp, uint8_t tun_type, return rc; } + +int bnxt_hwrm_set_mac(struct bnxt *bp) +{ + struct hwrm_func_vf_cfg_output *resp = bp->hwrm_cmd_resp_addr; + struct hwrm_func_vf_cfg_input req = {0}; + int rc = 0; + + if (!BNXT_VF(bp)) + return 0; + + HWRM_PREP(req, FUNC_VF_CFG, BNXT_USE_CHIMP_MB); + + req.enables = + rte_cpu_to_le_32(HWRM_FUNC_VF_CFG_INPUT_ENABLES_DFLT_MAC_ADDR); + memcpy(req.dflt_mac_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN); + + rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB); + + HWRM_CHECK_RESULT(); + + memcpy(bp->dflt_mac_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN); + HWRM_UNLOCK(); + + return rc; +} diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index e35462cb4..37aaa1a9e 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -196,4 +196,5 @@ int bnxt_hwrm_tunnel_redirect_free(struct bnxt *bp, uint8_t type); int bnxt_hwrm_tunnel_redirect_query(struct bnxt *bp, uint32_t *type); int bnxt_hwrm_tunnel_redirect_info(struct bnxt *bp, uint8_t tun_type, uint16_t *dst_fid); +int bnxt_hwrm_set_mac(struct bnxt *bp); #endif diff --git a/drivers/net/bnxt/bnxt_util.c b/drivers/net/bnxt/bnxt_util.c index 7d3342719..dda40af28 100644 --- a/drivers/net/bnxt/bnxt_util.c +++ b/drivers/net/bnxt/bnxt_util.c @@ -4,6 +4,7 @@ */ #include +#include #include "bnxt_util.h" @@ -16,3 +17,13 @@ int bnxt_check_zero_bytes(const uint8_t *bytes, int len) return 0; return 1; } + +void bnxt_eth_hw_addr_random(uint8_t *mac_addr) +{ + rte_eth_random_addr(mac_addr); + + /* Set Organizationally Unique Identifier (OUI) prefix */ + mac_addr[0] = 0x00; + mac_addr[1] = 0x0a; + mac_addr[2] = 0xf7; +} diff --git a/drivers/net/bnxt/bnxt_util.h b/drivers/net/bnxt/bnxt_util.h index 2378833cc..9f1868a78 100644 --- a/drivers/net/bnxt/bnxt_util.h +++ b/drivers/net/bnxt/bnxt_util.h @@ -7,5 +7,6 @@ #define _BNXT_UTIL_H_ int bnxt_check_zero_bytes(const uint8_t *bytes, int len); +void bnxt_eth_hw_addr_random(uint8_t *mac_addr); #endif /* _BNXT_UTIL_H_ */ From patchwork Wed Jul 17 10:41:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56593 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ECFC41B951; Wed, 17 Jul 2019 12:42:01 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 4A4331B464 for ; Wed, 17 Jul 2019 12:41:55 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 1C4BD30C0AB; Wed, 17 Jul 2019 03:41:54 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 1C4BD30C0AB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360114; bh=I3+8jESPj0Boi9YTkP3yr92JrvazMKau01y6JE27hbY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Bi6mL4ETLy7WPrMmcewZyJsDQ2tnslx5xs7sV6W/YQBGOvOgPesBwxGLmO78KJq5P 4rS2595YI4DNjmj0vft+YP+zoydRSknvThYFBHPHIwHkpiWbvvnX7DT7xKxvfxOcax FixvTm8h9D0XRDohpIs1+RVZy8fwAPpzEGIPKf8U= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 75C9EAC0749; Wed, 17 Jul 2019 03:41:52 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Lance Richardson , Kalesh Anakkur Purayil Date: Wed, 17 Jul 2019 16:11:28 +0530 Message-Id: <20190717104139.21155-5-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 04/15] net/bnxt: fix Tx hang after port stop/start 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" From: Lance Richardson Initialize the state of the the completion valid indicator when a completion ring is freed, otherwise completions may not be processed when a new ring is allocated. Fixes: 5735eb241947 ("net/bnxt: support Tx batching") Reviewed-by: Kalesh Anakkur Purayil Signed-off-by: Lance Richardson Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index a9356c6b8..b6f9ec0a0 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -2089,6 +2089,7 @@ static void bnxt_free_cp_ring(struct bnxt *bp, struct bnxt_cp_ring_info *cpr) memset(cpr->cp_desc_ring, 0, cpr->cp_ring_struct->ring_size * sizeof(*cpr->cp_desc_ring)); cpr->cp_raw_cons = 0; + cpr->valid = 0; } void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index) From patchwork Wed Jul 17 10:41:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56594 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A0CA91B9AA; Wed, 17 Jul 2019 12:42:04 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 5D43D1B951 for ; Wed, 17 Jul 2019 12:41:57 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 326EC30C097; Wed, 17 Jul 2019 03:41:56 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 326EC30C097 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360116; bh=+z5OozQof1Wno4aBXTw0wYccje/kZfP8dZZ+6Jyp0Lg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rXvmisO1EujzXdGcu7XdiI7TQxyg+0AbjOqB99ztWXwgWuo1g1Y2QoJPWFhR4wKQ4 aQ1ef3hjMDzob56Rrj3Kpo9GnTQQ/mscfxcHYkD2wdjkwHKD7WtTld09EhnlXyVQ3N EAVMq6JFEOj4reRwsvcXWWco/kPmPWWtitp7Wspw= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 81F56AC0749; Wed, 17 Jul 2019 03:41:54 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Lance Richardson , Christopher Reder Date: Wed, 17 Jul 2019 16:11:29 +0530 Message-Id: <20190717104139.21155-6-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 05/15] net/bnxt: reset Rx allocation state on port restart 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" From: Lance Richardson Move call site of bnxt_rxq_vec_setup() to ensure that rxq->rxrearm_nb and rxq->rxrearm_start are reinitialized correctly when a port is restarted. Fixes: bc4a000f2f53 ("net/bnxt: implement SSE vector mode") Reviewed-by: Christopher Reder Signed-off-by: Lance Richardson Signed-off-by: Ajit Khaparde --- v1->v2: Move bnxt_rxq_vec_setup under RTE_ARCH_X86. --- drivers/net/bnxt/bnxt_ring.c | 3 +++ drivers/net/bnxt/bnxt_rxq.c | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index 16327dbe9..7453d4b56 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -613,6 +613,9 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp) bnxt_db_write(&rxr->rx_db, rxr->rx_prod); bnxt_db_write(&rxr->ag_db, rxr->ag_prod); rxq->index = i; +#ifdef RTE_ARCH_X86 + bnxt_rxq_vec_setup(rxq); +#endif } for (i = 0; i < bp->tx_cp_nr_rings; i++) { diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 6919acbb4..c94cac5a9 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -356,10 +356,6 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, eth_dev->data->rx_queue_state[queue_idx] = queue_state; rte_spinlock_init(&rxq->lock); -#ifdef RTE_ARCH_X86 - bnxt_rxq_vec_setup(rxq); -#endif - out: return rc; } From patchwork Wed Jul 17 10:41:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56595 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 07D0A1B970; Wed, 17 Jul 2019 12:42:07 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 5DCFD1B959; Wed, 17 Jul 2019 12:41:59 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 18B1430C0A1; Wed, 17 Jul 2019 03:41:58 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 18B1430C0A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360118; bh=k/jgXiWhbpQiVPGfB1NU7HKTzdHmaXjeZCn+L/0MWL4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BAIfTFHatx7vJ2oTqimqgUjvtU6yhOP/Lh+KntofqbxumzoJ5CjhemlfTlgDWfgXP ZztDNUhXH2OdKjlzXMfLc49IYRGy9YemqYcthGE0VUDQVunTHFf6aZ4BvpjO51qbzB Uub/SR6s+QbPBsBl2uRhT90OOqkvWGKC6YvDNTkc= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 94308AC0749; Wed, 17 Jul 2019 03:41:56 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Rahul Gupta , stable@dpdk.org Date: Wed, 17 Jul 2019 16:11:30 +0530 Message-Id: <20190717104139.21155-7-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 06/15] net/bnxt: fix L4 checksum error indication in Rx path 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" From: Rahul Gupta Update ol_flags correctly for checksum errors in case of tunnel and non-tunnel packet. Fixes: 65ee636872eb ("net/bnxt: fix Rx checksum flags") Cc: stable@dpdk.org Signed-off-by: Rahul Gupta Signed-off-by: Ajit Khaparde --- v1->v3: Fix check-git-log output. --- drivers/net/bnxt/bnxt_rxr.c | 43 ++++++++++--- drivers/net/bnxt/bnxt_rxr.h | 120 ++++++++++++++++++++++++++++++------ 2 files changed, 133 insertions(+), 30 deletions(-) diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 44303f3b0..54a2cf5fd 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -362,6 +362,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, int rc = 0; uint8_t agg_buf = 0; uint16_t cmp_type; + uint32_t flags2_f = 0; rxcmp = (struct rx_pkt_cmpl *) &cpr->cp_desc_ring[cp_cons]; @@ -440,19 +441,41 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, mbuf->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; } - if (likely(RX_CMP_IP_CS_OK(rxcmp1))) - mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD; - else if (likely(RX_CMP_IP_CS_UNKNOWN(rxcmp1))) - mbuf->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN; - else + flags2_f = flags2_0xf(rxcmp1); + /* IP Checksum */ + if (unlikely(((IS_IP_NONTUNNEL_PKT(flags2_f)) && + (RX_CMP_IP_CS_ERROR(rxcmp1))) || + (IS_IP_TUNNEL_PKT(flags2_f) && + (RX_CMP_IP_OUTER_CS_ERROR(rxcmp1))))) { mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD; + } else if (unlikely(RX_CMP_IP_CS_UNKNOWN(rxcmp1))) { + mbuf->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN; + } else { + mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD; + } - if (likely(RX_CMP_L4_CS_OK(rxcmp1))) - mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD; - else if (likely(RX_CMP_L4_CS_UNKNOWN(rxcmp1))) + /* L4 Checksum */ + if (likely(IS_L4_NONTUNNEL_PKT(flags2_f))) { + if (unlikely(RX_CMP_L4_INNER_CS_ERR2(rxcmp1))) + mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD; + else + mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD; + } else if (IS_L4_TUNNEL_PKT(flags2_f)) { + if (unlikely(RX_CMP_L4_INNER_CS_ERR2(rxcmp1))) + mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD; + else + mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD; + if (unlikely(RX_CMP_L4_OUTER_CS_ERR2(rxcmp1))) { + mbuf->ol_flags |= PKT_RX_OUTER_L4_CKSUM_BAD; + } else if (unlikely(IS_L4_TUNNEL_PKT_ONLY_INNER_L4_CS + (flags2_f))) { + mbuf->ol_flags |= PKT_RX_OUTER_L4_CKSUM_UNKNOWN; + } else { + mbuf->ol_flags |= PKT_RX_OUTER_L4_CKSUM_GOOD; + } + } else if (unlikely(RX_CMP_L4_CS_UNKNOWN(rxcmp1))) { mbuf->ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN; - else - mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD; + } mbuf->packet_type = bnxt_parse_pkt_type(rxcmp, rxcmp1); diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h index 6523b94c6..6a80c37c8 100644 --- a/drivers/net/bnxt/bnxt_rxr.h +++ b/drivers/net/bnxt/bnxt_rxr.h @@ -24,36 +24,116 @@ #define BNXT_TPA_OUTER_L3_OFF(hdr_info) \ ((hdr_info) & 0x1ff) -#define RX_CMP_L4_CS_BITS \ - rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_L4_CS_CALC | \ - RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC) - -#define RX_CMP_L4_CS_ERR_BITS \ - rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_L4_CS_ERROR | \ - RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR) +#define flags2_0xf(rxcmp1) \ + (((rxcmp1)->flags2) & 0xf) -#define RX_CMP_L4_CS_OK(rxcmp1) \ - (((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS) && \ - !((rxcmp1)->errors_v2 & RX_CMP_L4_CS_ERR_BITS)) +/* IP non tunnel can be with or without L4- + * Ether / (vlan) / IP|IP6 / UDP|TCP|SCTP Or + * Ether / (vlan) / outer IP|IP6 / ICMP + * we use '==' instead of '&' because tunnel pkts have all 4 fields set. + */ +#define IS_IP_NONTUNNEL_PKT(flags2_f) \ + ( \ + ((flags2_f) == \ + (rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC))) || \ + ((flags2_f) == \ + (rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_L4_CS_CALC))) \ + ) + +/* IP Tunnel pkt must have atleast tunnel-IP-calc set. + * again tunnel ie outer L4 is optional bcoz of + * Ether / (vlan) / outer IP|IP6 / GRE / Ether / IP|IP6 / UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / outer UDP / VxLAN / Ether / IP|IP6 / + * UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / outer UDP / VXLAN-GPE / Ether / IP|IP6 / + * UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / outer UDP / VXLAN-GPE / IP|IP6 / + * UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / GRE / IP|IP6 / UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / IP|IP6 / UDP|TCP|SCTP + * also inner L3 chksum error is not taken into consideration by DPDK. + */ +#define IS_IP_TUNNEL_PKT(flags2_f) \ + ((flags2_f) & rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC)) -#define RX_CMP_L4_CS_UNKNOWN(rxcmp1) \ - !((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS) +/* RX_PKT_CMPL_ERRORS_IP_CS_ERROR only for Non-tunnel pkts. + * For tunnel pkts RX_PKT_CMPL_ERRORS_IP_CS_ERROR is not accounted and treated + * as good csum pkt. + */ +#define RX_CMP_IP_CS_ERROR(rxcmp1) \ + ((rxcmp1)->errors_v2 & \ + rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_IP_CS_ERROR)) -#define RX_CMP_IP_CS_ERR_BITS \ - rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_IP_CS_ERROR | \ - RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR) +#define RX_CMP_IP_OUTER_CS_ERROR(rxcmp1) \ + ((rxcmp1)->errors_v2 & \ + rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR)) #define RX_CMP_IP_CS_BITS \ rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \ RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC) -#define RX_CMP_IP_CS_OK(rxcmp1) \ - (((rxcmp1)->flags2 & RX_CMP_IP_CS_BITS) && \ - !((rxcmp1)->errors_v2 & RX_CMP_IP_CS_ERR_BITS)) - -#define RX_CMP_IP_CS_UNKNOWN(rxcmp1) \ +#define RX_CMP_IP_CS_UNKNOWN(rxcmp1) \ !((rxcmp1)->flags2 & RX_CMP_IP_CS_BITS) +/* L4 non tunnel pkt- + * Ether / (vlan) / IP6 / UDP|TCP|SCTP + */ +#define IS_L4_NONTUNNEL_PKT(flags2_f) \ + ( \ + ((flags2_f) == \ + (rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_L4_CS_CALC)))) + +/* L4 tunnel pkt- + * Outer L4 is not mandatory. Eg: GRE- + * Ether / (vlan) / outer IP|IP6 / GRE / Ether / IP|IP6 / UDP|TCP|SCTP + * Ether / (vlan) / outer IP|IP6 / outer UDP / VxLAN / Ether / IP|IP6 / + * UDP|TCP|SCTP + */ +#define IS_L4_TUNNEL_PKT_INNER_OUTER_L4_CS(flags2_f) \ + ((flags2_f) == \ + (rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_L4_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC))) + +#define IS_L4_TUNNEL_PKT_ONLY_INNER_L4_CS(flags2_f) \ + ((flags2_f) == \ + (rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_L4_CS_CALC | \ + RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC))) + +#define IS_L4_TUNNEL_PKT(flags2_f) \ + ( \ + IS_L4_TUNNEL_PKT_INNER_OUTER_L4_CS(flags2_f) || \ + IS_L4_TUNNEL_PKT_ONLY_INNER_L4_CS(flags2_f) \ + ) + +#define RX_CMP_L4_CS_BITS \ + rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_L4_CS_CALC) + +#define RX_CMP_L4_CS_UNKNOWN(rxcmp1) \ + !((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS) + +#define RX_CMP_T_L4_CS_BITS \ + rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC) + +#define RX_CMP_T_L4_CS_UNKNOWN(rxcmp1) \ + !((rxcmp1)->flags2 & RX_CMP_T_L4_CS_BITS) + +/* Outer L4 chksum error + */ +#define RX_CMP_L4_OUTER_CS_ERR2(rxcmp1) \ + ((rxcmp1)->errors_v2 & \ + rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR)) + +/* Inner L4 chksum error + */ +#define RX_CMP_L4_INNER_CS_ERR2(rxcmp1) \ + ((rxcmp1)->errors_v2 & \ + rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_L4_CS_ERROR)) + #define BNXT_RX_POST_THRESH 32 enum pkt_hash_types { From patchwork Wed Jul 17 10:41:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56596 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A0A491B9D9; Wed, 17 Jul 2019 12:42:09 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 7CD4D1B959; Wed, 17 Jul 2019 12:42:01 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 4072F30C0AE; Wed, 17 Jul 2019 03:42:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 4072F30C0AE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360120; bh=4iRo+4w/p7cyFBJe6VxPybW/cdPImYGndM2AMRc9cMI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CP9GP6TggigqQepTRHqOoUA6XYw/1YH/4B+SxB72nsDhjohMKFiOFP6VApqmNq8mJ rRsMXJ/IQg2xSwcGSqPXlJ8QY8XXQC8kZWeMjO+ZZwGveSAGyzfGxFYXfAZRCa1iCc njDwLPSandSMD5sNUZKe+/rd7kusznIdCMxnQZN4= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 7B540AC0749; Wed, 17 Jul 2019 03:41:58 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, stable@dpdk.org, Rahul Gupta Date: Wed, 17 Jul 2019 16:11:31 +0530 Message-Id: <20190717104139.21155-8-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 07/15] net/bnxt: fix for doorbell register offset for Tx ring 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" For Tx-ring # 104 and higher, the doorbell register was incorrectly configured due to which FW was not able to receive the notification of packet to transmit. With this fix, user can run traffic upto 256 rings. Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code") Cc: stable@dpdk.org Signed-off-by: Rahul Gupta Signed-off-by: Ajit Khaparde --- v1->v3: Fix output of check-git-log. --- drivers/net/bnxt/bnxt_ring.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index 7453d4b56..9b19459b6 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -639,12 +639,12 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp) ring_type = HWRM_RING_ALLOC_INPUT_RING_TYPE_TX; rc = bnxt_hwrm_ring_alloc(bp, ring, ring_type, - idx, cpr->hw_stats_ctx_id, + i, cpr->hw_stats_ctx_id, cp_ring->fw_ring_id); if (rc) goto err_out; - bnxt_set_db(bp, &txr->tx_db, ring_type, idx, ring->fw_ring_id); + bnxt_set_db(bp, &txr->tx_db, ring_type, i, ring->fw_ring_id); txq->index = idx; bnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id); } From patchwork Wed Jul 17 10:41:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56597 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1B3EE1B9FA; Wed, 17 Jul 2019 12:42:13 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 77DED1B959; Wed, 17 Jul 2019 12:42:03 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 434DA30C0A6; Wed, 17 Jul 2019 03:42:02 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 434DA30C0A6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360122; bh=AyxPNS6OTEw6KzR++BISRUVA41IcBbt3PjKcTT/dsPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fAjAfedYdpf6Vh7qHr0BtxUHaokhs359cjoYkmN8GuG/7nyfD8zi9db+qL5ot6+I5 wI3xlCvtE1jtozEHIjN0qpNddMFQmjOxeOECiE4HJHvyuvbY4OT9sIDeZsxIdGRZsW /lsYKQ7mY64eGWqnMrB19LV5nncne1IyDPByTP68= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id A4935AC0749; Wed, 17 Jul 2019 03:42:00 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, stable@dpdk.org, Kalesh Anakkur Purayil Date: Wed, 17 Jul 2019 16:11:32 +0530 Message-Id: <20190717104139.21155-9-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 08/15] net/bnxt: save the number of EM flow count 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" Save the number of EM flow count returned by the FW in HWRM_FUNC_QCFG and use it to calculate the overall pool of L2 contexts supported by FW. Fixes: 6d8109bcb398 ("net/bnxt: check VF resources if resource manager is enabled") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Kalesh Anakkur Purayil --- drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_hwrm.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 45e7359b2..cd809b385 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -429,6 +429,7 @@ struct bnxt { uint16_t max_rx_rings; uint16_t max_nq_rings; uint16_t max_l2_ctx; + uint16_t max_rx_em_flows; uint16_t max_vnics; uint16_t max_stat_ctx; uint16_t first_vf_id; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index b6f9ec0a0..84cda5e6c 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -589,8 +589,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->max_cp_rings = rte_le_to_cpu_16(resp->max_cmpl_rings); bp->max_tx_rings = rte_le_to_cpu_16(resp->max_tx_rings); bp->max_rx_rings = rte_le_to_cpu_16(resp->max_rx_rings); - bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); bp->first_vf_id = rte_le_to_cpu_16(resp->first_vf_id); + bp->max_rx_em_flows = rte_le_to_cpu_16(resp->max_rx_em_flows); + bp->max_l2_ctx = + rte_le_to_cpu_16(resp->max_l2_ctxs) + bp->max_rx_em_flows; /* TODO: For now, do not support VMDq/RFS on VFs. */ if (BNXT_PF(bp)) { if (bp->pf.max_vfs) @@ -796,7 +798,12 @@ int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp) bp->max_tx_rings = rte_le_to_cpu_16(resp->max_tx_rings); bp->max_rx_rings = rte_le_to_cpu_16(resp->max_rx_rings); bp->max_ring_grps = rte_le_to_cpu_32(resp->max_hw_ring_grps); - bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); + /* func_resource_qcaps does not return max_rx_em_flows. + * So use the value provided by func_qcaps. + */ + bp->max_l2_ctx = + rte_le_to_cpu_16(resp->max_l2_ctxs) + + bp->max_rx_em_flows; bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); bp->max_stat_ctx = rte_le_to_cpu_16(resp->max_stat_ctx); } From patchwork Wed Jul 17 10:41:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56598 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 363EB1BC20; Wed, 17 Jul 2019 12:42:15 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 4ED221B9AF for ; Wed, 17 Jul 2019 12:42:05 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 1FB5A30C0AB; Wed, 17 Jul 2019 03:42:04 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 1FB5A30C0AB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360124; bh=5ATZ2wUafOqbMn9qs7E3ffeQiiRY472jGYlEmFiN+vY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AiayFuUUB+/PCgFD+Bj8deR/5dehGD0sgJMpBcu24cK6TTEOc1/Zr+HXQKw7a5iwg d7leFAaJgzI93TjG2DT551ijWs0nbng7tIQQ4P5XLQYU8ixK3ZNH9Ul3eLtxB8ttAk BpViL6kqjmFCTTmInnVaCKuPkedZ0x+ZnL5Lq+5w= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id A9990AC0749; Wed, 17 Jul 2019 03:42:02 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Lance Richardson Date: Wed, 17 Jul 2019 16:11:33 +0530 Message-Id: <20190717104139.21155-10-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 09/15] net/bnxt: nq doorbell cleanups 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" From: Lance Richardson Simplify nq doorbell handling code by removing redundant db parameter and consolidating NQ doorbell macro into the inline function that uses it. Add "enable interrupt" variant of nq write. This will be used in a subsequent commit. When initializing nq doorbell, don't assume that only the "disable interrupt" form will be used. Fixes: f8168ca0e690 ("net/bnxt: support thor controller") Signed-off-by: Lance Richardson Reviewed-by: Ajit Khaparde Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_ring.c | 2 +- drivers/net/bnxt/bnxt_ring.h | 23 ++++++++++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index cd809b385..3ccf784e5 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -246,6 +246,7 @@ struct bnxt_coal { #define DBR_TYPE_SRQ (0x2ULL << 60) #define DBR_TYPE_CQ (0x4ULL << 60) #define DBR_TYPE_NQ (0xaULL << 60) +#define DBR_TYPE_NQ_ARM (0xbULL << 60) #define BNXT_RSS_TBL_SIZE_THOR 512 #define BNXT_RSS_ENTRIES_PER_CTX_THOR 64 diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index 9b19459b6..faf861cc1 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -341,7 +341,7 @@ static void bnxt_set_db(struct bnxt *bp, db->db_key64 = DBR_PATH_L2 | DBR_TYPE_CQ; break; case HWRM_RING_ALLOC_INPUT_RING_TYPE_NQ: - db->db_key64 = DBR_PATH_L2 | DBR_TYPE_NQ; + db->db_key64 = DBR_PATH_L2; break; } db->db_key64 |= (uint64_t)fid << DBR_XID_SFT; diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h index af2c5762f..e5cef3a1d 100644 --- a/drivers/net/bnxt/bnxt_ring.h +++ b/drivers/net/bnxt/bnxt_ring.h @@ -84,15 +84,28 @@ static inline void bnxt_db_write(struct bnxt_db_info *db, uint32_t idx) rte_write32(db->db_key32 | idx, db->doorbell); } +/* Ring an NQ doorbell and disable interrupts for the ring. */ static inline void bnxt_db_nq(struct bnxt_cp_ring_info *cpr) { - struct bnxt_db_info *db = &cpr->cp_db; + if (unlikely(!cpr->cp_db.db_64)) + return; + + rte_smp_wmb(); + rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ | + RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons), + cpr->cp_db.doorbell); +} + +/* Ring an NQ doorbell and enable interrupts for the ring. */ +static inline void bnxt_db_nq_arm(struct bnxt_cp_ring_info *cpr) +{ + if (unlikely(!cpr->cp_db.db_64)) + return; rte_smp_wmb(); - if (likely(db->db_64)) - rte_write64(db->db_key64 | DBR_TYPE_NQ | - RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons), - db->doorbell); + rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM | + RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons), + cpr->cp_db.doorbell); } static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr) From patchwork Wed Jul 17 10:41:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56599 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C518E1BDE7; Wed, 17 Jul 2019 12:42:17 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 1F3761B9AF for ; Wed, 17 Jul 2019 12:42:07 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id DCECB30C0A1; Wed, 17 Jul 2019 03:42:05 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com DCECB30C0A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360125; bh=vz1g52IDXz8RUniqKzoQVwPk10PbTpi9WL5Fev2MDTQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WphXDjno2Q3aZQTRRsPPvpIV/kFNPpBs22elX2AMo8XB02PLXGnxUWBQNGJSD/7e/ V3YIxmFKL++tphw89e3kzDoGvx8OlOMgfYqN5MLi2JXZko6JdsZulA7Qilb4/1vC5S c4npNj68lsDVfB7LUbDwjlsOYLNSS13lpsncYkLs= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 819A1AC0749; Wed, 17 Jul 2019 03:42:04 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Lance Richardson Date: Wed, 17 Jul 2019 16:11:34 +0530 Message-Id: <20190717104139.21155-11-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 10/15] net/bnxt: avoid null pointer dereference 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" From: Lance Richardson Avoid null pointer dereference when allocating an insolated completion ring by basing nq ring allocation on whether an nq ring was requested instead of whether the device supports nq rings. Fixes: f8168ca0e690 ("net/bnxt: support thor controller") Signed-off-by: Lance Richardson Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index faf861cc1..ada748c05 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -280,7 +280,7 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx, } cp_ring_info->hw_stats_ctx_id = HWRM_NA_SIGNATURE; - if (BNXT_HAS_NQ(bp)) { + if (nq_ring_info) { struct bnxt_ring *nq_ring = nq_ring_info->cp_ring_struct; nq_ring->bd = (char *)mz->addr + nq_ring_start; From patchwork Wed Jul 17 10:41:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56600 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C45D31BDF0; Wed, 17 Jul 2019 12:42:21 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 77DD21B9C9; Wed, 17 Jul 2019 12:42:09 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 2D09330C0AA; Wed, 17 Jul 2019 03:42:08 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 2D09330C0AA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360128; bh=hrnwpygoYPA7zIqrva3PL+SBGwnrP394NK0PDDu2M5Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Yc6gBiFs8NjUUibRxmeE9zNltQayAbW/BdJNm6QCaTlSNYdIX6zojf9UXsZwUkKgC vClXHuGVx1dPvJeT9YyWhlRb4AQBF0Swp7EQMSpCstYH070V66F4bU2KsAmQvNHZof smNjwujgxfBdKJeWVvWP4kFXLwznyuA+8SRgYsyY= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 5C16EAC0749; Wed, 17 Jul 2019 03:42:06 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Wed, 17 Jul 2019 16:11:35 +0530 Message-Id: <20190717104139.21155-12-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 11/15] net/bnxt: fix to enable disable interrupts correctly 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" From: Kalesh AP 1. disable interrupts in dev_stop_op() 2. enable interrupts in dev_start_op() 3. Clean queue intr-vector mapping in dev_stop_op() and thus fix a possible memory leak. Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde Signed-off-by: Ajit Khaparde --- v1->v3: Fix errors reported by check-git-log script. --- drivers/net/bnxt/bnxt_ethdev.c | 17 ++++++++++++++++- drivers/net/bnxt/bnxt_irq.c | 2 -- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index e44df1881..538bed1a5 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -779,6 +779,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) eth_dev->rx_pkt_burst = bnxt_receive_function(eth_dev); eth_dev->tx_pkt_burst = bnxt_transmit_function(eth_dev); + bnxt_enable_int(bp); bp->flags |= BNXT_FLAG_INIT_DONE; return 0; @@ -818,6 +819,13 @@ static int bnxt_dev_set_link_down_op(struct rte_eth_dev *eth_dev) static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + + bnxt_disable_int(bp); + + /* disable uio/vfio intr/eventfd mapping */ + rte_intr_disable(intr_handle); bp->flags &= ~BNXT_FLAG_INIT_DONE; if (bp->eth_dev->data->dev_started) { @@ -825,6 +833,14 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) eth_dev->data->dev_link.link_status = 0; } bnxt_set_hwrm_link_config(bp, false); + + /* Clean queue intr-vector mapping */ + rte_intr_efd_disable(intr_handle); + if (intr_handle->intr_vec != NULL) { + rte_free(intr_handle->intr_vec); + intr_handle->intr_vec = NULL; + } + bnxt_hwrm_port_clr_stats(bp); bnxt_free_tx_mbufs(bp); bnxt_free_rx_mbufs(bp); @@ -3991,7 +4007,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) if (rc) goto error_free_int; - bnxt_enable_int(bp); bnxt_init_nic(bp); return 0; diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c index 61f7498a5..6c4dce401 100644 --- a/drivers/net/bnxt/bnxt_irq.c +++ b/drivers/net/bnxt/bnxt_irq.c @@ -58,7 +58,6 @@ void bnxt_free_int(struct bnxt *bp) irq = bp->irq_tbl; if (irq) { if (irq->requested) { - rte_intr_disable(&bp->pdev->intr_handle); rte_intr_callback_unregister(&bp->pdev->intr_handle, irq->handler, (void *)bp->eth_dev); @@ -123,7 +122,6 @@ int bnxt_request_int(struct bnxt *bp) rte_intr_callback_register(&bp->pdev->intr_handle, irq->handler, (void *)bp->eth_dev); - rte_intr_enable(&bp->pdev->intr_handle); irq->requested = 1; return rc; From patchwork Wed Jul 17 10:41:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56601 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 61AE71BDF5; Wed, 17 Jul 2019 12:42:24 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id CED241B9A8; Wed, 17 Jul 2019 12:42:11 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 9C7E230C0B4; Wed, 17 Jul 2019 03:42:10 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 9C7E230C0B4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360130; bh=KXc2up0syqLnUSk+OQJ1r+Xmr+SNa5mcoggniCZXH7M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YEY4/AmPbVqzSZzJ/VLh0cSf61/2l1FDmm6SruHbMBnIoEO2JEGY80CVG4E/tOc/V 41MBRl9TQ7GKPUjUD+XLKCya/iWRbJdvWbM32ccjw3rHZS5Z3HE2w38sfU6di6IG9K SjX8vpGyoMccc1L2mGbpwmBT66oCODAHvyvfRuAA= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 9243AAC0749; Wed, 17 Jul 2019 03:42:08 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Wed, 17 Jul 2019 16:11:36 +0530 Message-Id: <20190717104139.21155-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 12/15] net/bnxt: fix to check for invalid VNIC in cleanup path 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" From: Kalesh AP The cleanup/rollback operation post rte_eth_dev_start failure might end up invoking an HWRM cmd even on an invalid vNIC resulting in error messages being logged needlessly. Fix to check for the same before issuing the HWRM cmd. Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 84cda5e6c..1a0265f8a 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -2325,6 +2325,11 @@ void bnxt_free_all_hwrm_resources(struct bnxt *bp) for (i = bp->nr_vnics - 1; i >= 0; i--) { struct bnxt_vnic_info *vnic = &bp->vnic_info[i]; + if (vnic->fw_vnic_id == INVALID_HW_RING_ID) { + PMD_DRV_LOG(DEBUG, "Invalid vNIC ID\n"); + return; + } + bnxt_clear_hwrm_vnic_flows(bp, vnic); bnxt_clear_hwrm_vnic_filters(bp, vnic); From patchwork Wed Jul 17 10:41:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56602 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 012D21BE04; Wed, 17 Jul 2019 12:42:27 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id B539B1B9B5; Wed, 17 Jul 2019 12:42:13 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 8852530C0A2; Wed, 17 Jul 2019 03:42:12 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 8852530C0A2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360132; bh=1SikrHm+nqwwXc6F9l2FdZ+0SCBLWrhAwhzfdulcbSw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hdlpXAlv2vwNzzJ2zvqYLEgr6P8bFzBeTxdFH5nAedFQb6NjZeHV9vV6Ts5RznPzX 6FHmLgkigQaqtMpvGswrFPaMGWCYFcMSSrH0AcljSKkj2qw6OjN0L1koHhyWaXHPC9 SglRNXvN2lf1jiMI73R4t4lyafy/+zRVemUkHyf0= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id E4423AC079B; Wed, 17 Jul 2019 03:42:10 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, stable@dpdk.org, Rahul Gupta Date: Wed, 17 Jul 2019 16:11:37 +0530 Message-Id: <20190717104139.21155-14-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 13/15] net/bnxt: fix a compilation warning 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" Compiler complains of an uninitialized variable. Initializing it to avoid the issue. Fixes: db678d5c2b54 ("net/bnxt: add HWRM VNIC configure") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Rahul Gupta --- drivers/net/bnxt/bnxt_hwrm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 1a0265f8a..a4e0c2e0c 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1523,8 +1523,8 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic) int rc = 0; struct hwrm_vnic_cfg_input req = {.req_type = 0 }; struct hwrm_vnic_cfg_output *resp = bp->hwrm_cmd_resp_addr; + struct bnxt_plcmodes_cfg pmodes = { 0 }; uint32_t ctx_enable_flag = 0; - struct bnxt_plcmodes_cfg pmodes; uint32_t enables = 0; if (vnic->fw_vnic_id == INVALID_HW_RING_ID) { From patchwork Wed Jul 17 10:41:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56603 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0DF5E2BE1; Wed, 17 Jul 2019 12:42:35 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 8F5F41BDE4; Wed, 17 Jul 2019 12:42:16 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 6592B30C0AC; Wed, 17 Jul 2019 03:42:15 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 6592B30C0AC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360135; bh=9gJCGX9SpmEPhGcwSkxSZsA9l0GN8Vo2+u6PqDMh5iM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ro4nptRoq1imw/BmIrMbY21qSHHtQNQF1xFsgKiiw+U0sQC1Rb/ew0m/YlHLekl8v ttJQ5Cu4aPs7j7QEzhDHkdAPJuRGpPAmBuuzASIIP4Jjgio6oU8rWMfoFefqVgXElv sediQm7fSUDbCGqOQgediMjD+p34tC736m1GCQ3I= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 1841DAC0749; Wed, 17 Jul 2019 03:42:12 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Qingmin Liu , stable@dpdk.org, Randy Schacher , Somnath Kotur Date: Wed, 17 Jul 2019 16:11:38 +0530 Message-Id: <20190717104139.21155-15-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 14/15] net/bnxt: fix rxq count if ntuple filtering is disabled 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" From: Qingmin Liu If ntuple filtering is disabled, FW will return max_vnics=1. Due to this only single Rxq is created. Change to max_rx_rings = RTE_MIN(bp->max_rx_rings, bp->max_stat_ctx) to fix it. Fixes: 6d8109bcb398 ("net/bnxt: check VF resources if resource manager is enabled") Cc: stable@dpdk.org Signed-off-by: Qingmin Liu Reviewed-by: Ajit Khaparde Reviewed-by: Randy Schacher Reviewed-by: Somnath Kotur Tested-by: Qingmin Liu Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 538bed1a5..cd87d0dbc 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -493,7 +493,7 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev, /* PF/VF specifics */ if (BNXT_PF(bp)) dev_info->max_vfs = bp->pdev->max_vfs; - max_rx_rings = RTE_MIN(bp->max_vnics, bp->max_stat_ctx); + max_rx_rings = RTE_MIN(bp->max_rx_rings, bp->max_stat_ctx); /* For the sake of symmetry, max_rx_queues = max_tx_queues */ dev_info->max_rx_queues = max_rx_rings; dev_info->max_tx_queues = max_rx_rings; From patchwork Wed Jul 17 10:41:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 56604 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7A4251BDF9; Wed, 17 Jul 2019 12:42:40 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id ED6D01B9E9; Wed, 17 Jul 2019 12:42:18 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id BBC4330C0A6; Wed, 17 Jul 2019 03:42:17 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com BBC4330C0A6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1563360137; bh=sFmml4Bz7LTPfwf46yCJ2npFi1oJKTPqj+16iwN0oS0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KnrU+GTZg/rP2Tvhh6F8sOLT+mcPhScrFbM+2I+/G8JyPoxlIEeqi0dOTeGf4dIhY 7TCZo7HggOpsBtxBfqV7t6fWIAtkgeBIhCOLnyl7wDLUbaf8mopQEalY976n+4dd7k Kwn7dnO5sjsxy5Roq309Msd6lUUNenJGSDy1b/r0= Received: from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net [10.122.43.105]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id CA5DCAC0749; Wed, 17 Jul 2019 03:42:15 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Jay Ding , stable@dpdk.org, Randy Schacher Date: Wed, 17 Jul 2019 16:11:39 +0530 Message-Id: <20190717104139.21155-16-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190717104139.21155-1-ajit.khaparde@broadcom.com> References: <0c1b327c-2c36-652f-c88d-cbca8f873c13@intel.com> <20190717104139.21155-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 15/15] net/bnxt: fix to avoid sending invalid VNIC id to firmware 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" From: Jay Ding Add checking for vinc id before sending message to chimp in bnxt_hwrm_vnic_plcmode_cfg(). Fixes: db678d5c2b54 ("net/bnxt: add HWRM VNIC configure") Cc: stable@dpdk.org Reviewed-by: Ajit Khaparde Reviewed-by: Randy Schacher Signed-off-by: Jay Ding Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index a4e0c2e0c..313459aaf 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1497,6 +1497,11 @@ static int bnxt_hwrm_vnic_plcmodes_cfg(struct bnxt *bp, struct hwrm_vnic_plcmodes_cfg_input req = {.req_type = 0 }; struct hwrm_vnic_plcmodes_cfg_output *resp = bp->hwrm_cmd_resp_addr; + if (vnic->fw_vnic_id == INVALID_HW_RING_ID) { + PMD_DRV_LOG(DEBUG, "VNIC ID %x\n", vnic->fw_vnic_id); + return rc; + } + HWRM_PREP(req, VNIC_PLCMODES_CFG, BNXT_USE_CHIMP_MB); req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);