From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by dpdk.org (Postfix) with ESMTP id 337F2324B for ; Tue, 24 Jul 2018 18:09:07 +0200 (CEST) Received: by mail-wr1-f43.google.com with SMTP id q10-v6so4702628wrd.4 for ; Tue, 24 Jul 2018 09:09:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PPmNIydoVIwb+4BFCyp6B0tIX8aB2PyRWBuuA/haN6E=; b=PTPYrJDv6A5J3tSCzxYZ11KtTSze6oEn4oDf9S6HCcVOmaCle2Ygnabb3Dn9cOVeyh 3Yrr86xdpY8f5uat+R6GGxMrBGMMAyaZx04qQ4a4xAlqqfuQVd8TLLOuTysub+fxaoP9 Nxn9ql8ORFwzwgb+lBUTaAXfE3TbCKOJv7Ktf0TVOuPLXtLAAZg2+CmNlOjxpINMds+X eH3RGINYuOO2jwvCk3bAWdq5THrYcRjrXQX0eYCNR+YeTDAaFlomyXpb/6srCdkv1o4J s5TcRVfb92KJEB6Apt8GXNP2UW0ylP6wBP55ph3TjAigA8vbIbihDdV3fE9+qOdnV9PO uQ6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PPmNIydoVIwb+4BFCyp6B0tIX8aB2PyRWBuuA/haN6E=; b=Nvz+Hk6lrtx7IpxvO1OOlfzHujVafkN4MAGsupMv4Pav3UriVMdqUtVZHhWtB4u7MU dL2CxaYPaulrMQ5yQtx3itpTdGbagV3j58kiivII/Ubk+8KMS4SANa8x9NZTFSv7c16H fLsBsLtU4dyWv6JhOsRZF5Drnp0jT0CnZDEtuGmehQDk4VZrlmnddUE05LcO67bt6tGB R7ETDCCDWssQG2RO7Dj8RfGkZs/Yr9QeOx4k2PMpOEs81U+Gg6rx1AqvqCz5z6WRkWII 9zlG/jjA/du4bkkR4za8FZr6XdenJ6hsVFTnYspsvpfcIKXcqjKakdFt0D2u7fd360o6 jshA== X-Gm-Message-State: AOUpUlHluvIKpEJBrp5LTRZonFtmdgzKfAMFEIYaQQJTBAxaW7BdkS9r XSjyqYO5JCuHhBdRmWnfHVs= X-Google-Smtp-Source: AAOMgpfcz6vURv8HLxU8rqXmihT5Q1UFpSHlcBccgZDnrGYy10O2bX4stf1KFlmfRf4GxlzNFXziiw== X-Received: by 2002:adf:a541:: with SMTP id j1-v6mr13119586wrb.155.1532448546927; Tue, 24 Jul 2018 09:09:06 -0700 (PDT) Received: from localhost ([2a00:23c5:be94:4600:7b12:f8a0:fd52:f87d]) by smtp.gmail.com with ESMTPSA id x129-v6sm2971718wme.11.2018.07.24.09.09.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Jul 2018 09:09:05 -0700 (PDT) From: luca.boccassi@gmail.com To: Ajit Khaparde Cc: dpdk stable Date: Tue, 24 Jul 2018 17:07:42 +0100 Message-Id: <20180724160752.20287-24-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180724160752.20287-1-luca.boccassi@gmail.com> References: <20180724160752.20287-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'net/bnxt: fix Rx ring count limitation' has been queued to LTS release 16.11.8 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jul 2018 16:09:07 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.8 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/26/18. So please shout if anyone has objections. Thanks. Luca Boccassi --- >>From 0f38b0f096eaf089a955e59c2af98e93d6acdba8 Mon Sep 17 00:00:00 2001 From: Ajit Khaparde Date: Thu, 28 Jun 2018 13:15:48 -0700 Subject: [PATCH] net/bnxt: fix Rx ring count limitation [ upstream commit 0a256e4a548b849be5c13f5c18046f3910584245 ] Fixed size of fw_grp_ids in VNIC is limiting the number of Rx rings being created. With this patch we are allocating fw_grp_ids dynamically, allowing us to get over this artificial limit. Fixes: 9738793f28ec ("net/bnxt: add VNIC functions and structs") Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 11 +++++++++++ drivers/net/bnxt/bnxt_hwrm.c | 4 +++- drivers/net/bnxt/bnxt_vnic.c | 5 +---- drivers/net/bnxt/bnxt_vnic.h | 6 +----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 3a0b1ce44..0aef27ae7 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -222,6 +222,17 @@ static int bnxt_init_chip(struct bnxt *bp) /* VNIC configuration */ for (i = 0; i < bp->nr_vnics; i++) { struct bnxt_vnic_info *vnic = &bp->vnic_info[i]; + uint32_t size = sizeof(*vnic->fw_grp_ids) * bp->max_ring_grps; + + vnic->fw_grp_ids = rte_zmalloc("vnic_fw_grp_ids", size, 0); + if (!vnic->fw_grp_ids) { + RTE_LOG(ERR, PMD, + "Failed to alloc %d bytes for group ids\n", + size); + rc = -ENOMEM; + goto err_out; + } + memset(vnic->fw_grp_ids, -1, size); rc = bnxt_hwrm_vnic_alloc(bp, vnic); if (rc) { diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index d790b991c..5d85eeda3 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -837,7 +837,7 @@ int bnxt_hwrm_vnic_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic) struct hwrm_vnic_alloc_output *resp = bp->hwrm_cmd_resp_addr; /* map ring groups to this vnic */ - for (i = vnic->start_grp_id, j = 0; i <= vnic->end_grp_id; i++, j++) { + for (i = vnic->start_grp_id, j = 0; i < vnic->end_grp_id; i++, j++) { if (bp->grp_info[i].fw_grp_id == (uint16_t)HWRM_NA_SIGNATURE) { RTE_LOG(ERR, PMD, "Not enough ring groups avail:%x req:%x\n", j, @@ -1271,6 +1271,8 @@ void bnxt_free_all_hwrm_resources(struct bnxt *bp) bnxt_hwrm_vnic_ctx_free(bp, vnic); bnxt_hwrm_vnic_free(bp, vnic); + + rte_free(vnic->fw_grp_ids); } /* Ring resources */ bnxt_free_all_hwrm_rings(bp); diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c index 33fdde2fc..58fa4beec 100644 --- a/drivers/net/bnxt/bnxt_vnic.c +++ b/drivers/net/bnxt/bnxt_vnic.c @@ -67,7 +67,7 @@ void bnxt_init_vnics(struct bnxt *bp) { struct bnxt_vnic_info *vnic; uint16_t max_vnics; - int i, j; + int i; if (BNXT_PF(bp)) { struct bnxt_pf_info *pf = &bp->pf; @@ -85,9 +85,6 @@ void bnxt_init_vnics(struct bnxt *bp) vnic->fw_rss_cos_lb_ctx = (uint16_t)HWRM_NA_SIGNATURE; vnic->ctx_is_rss_cos_lb = HW_CONTEXT_NONE; - for (j = 0; j < MAX_QUEUES_PER_VNIC; j++) - vnic->fw_grp_ids[j] = (uint16_t)HWRM_NA_SIGNATURE; - prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE); STAILQ_INIT(&vnic->filter); STAILQ_INSERT_TAIL(&bp->free_vnic_list, vnic, next); diff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h index 9671ba42a..1f9e19389 100644 --- a/drivers/net/bnxt/bnxt_vnic.h +++ b/drivers/net/bnxt/bnxt_vnic.h @@ -44,13 +44,9 @@ struct bnxt_vnic_info { uint16_t fw_vnic_id; /* returned by Chimp during alloc */ uint16_t fw_rss_cos_lb_ctx; uint16_t ctx_is_rss_cos_lb; -#define MAX_NUM_TRAFFIC_CLASSES 8 -#define MAX_NUM_RSS_QUEUES_PER_VNIC 16 -#define MAX_QUEUES_PER_VNIC (MAX_NUM_RSS_QUEUES_PER_VNIC + \ - MAX_NUM_TRAFFIC_CLASSES) uint16_t start_grp_id; uint16_t end_grp_id; - uint16_t fw_grp_ids[MAX_QUEUES_PER_VNIC]; + uint16_t *fw_grp_ids; uint16_t hash_type; phys_addr_t rss_table_dma_addr; uint16_t *rss_table; -- 2.18.0