From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <stable-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id D3FFAA0093
	for <public@inbox.dpdk.org>; Fri, 22 May 2020 11:41:37 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id B37DF1D973;
	Fri, 22 May 2020 11:41:37 +0200 (CEST)
Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com
 [209.85.128.67]) by dpdk.org (Postfix) with ESMTP id 747431D96F
 for <stable@dpdk.org>; Fri, 22 May 2020 11:41:36 +0200 (CEST)
Received: by mail-wm1-f67.google.com with SMTP id u1so8063949wmn.3
 for <stable@dpdk.org>; Fri, 22 May 2020 02:41:36 -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
 :mime-version:content-transfer-encoding;
 bh=bGRnYgGkF4EMciOZ6IdbiPgt7O3JHZq114JNOlpWwJ0=;
 b=tG7/mg1BqvaTKyUrjpww+kwgjlz0wFzSL0HHb+49+59DNulVaJveoZrtTwuV1r8LMX
 pSJcJbJiQznOu7OEBsTpNjl0lzRnHy562M2EAa3ekQ78Z6jvw4+ufn9tSbuwyqMuinVb
 Xu5azqI7AmNab3WEKSkt8dN/wRwhq0JX0ESC+IkZJAb/ghcfy5qYmDynn4L8HlfU+C0x
 XlJigfa56JuHL8CMv1JGID9aJAjf1hDrYlDI+YuMaigRWuqaK/lFxvhaBAjk5kSZ+f7K
 Vgom0cptXk99cIsNBAncPztS4IrsQ0+vzOWkCwGtoZx89UXcWKlbMl/BnqDUuILr3ebp
 tBAg==
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:mime-version:content-transfer-encoding;
 bh=bGRnYgGkF4EMciOZ6IdbiPgt7O3JHZq114JNOlpWwJ0=;
 b=gTM7f8Pccn/TI4Xj9U+obesvvd2S5ohZEnNxrshDMg7xMm8qTnP6b9kGqhlsEzm80V
 EaSrGcuxKlh9NqZydQL+68PDG2d8+E0DXaH3zLjOetEV+m86wN4TJKLl2W8ZpnpGb/DW
 NoGvCDmzY2hLNPLGqKWIy6VOEiWHggcvlkIDe74aeR6u7JDDco17dkR0JKAlXaqA7FQA
 GHXJn2k/2d5rEJx4i9oEZiocWOUdtF4Jw/nsw0ZygUkeHLpGcgi68Xa7+MTQtd2fsOdX
 isBc/h34ci25kepH9Zk7yQaijIOR3KQb/bjcfnGJB00ysTFIT+85chOFgucj4HzVWK6M
 KpNQ==
X-Gm-Message-State: AOAM530BlvffenfY6fO/YG+Ls14Mji5nf1eRE40GAS+l+rIu8jwzxRaS
 R8RxDtYu2K4bxSh0L9OVujg=
X-Google-Smtp-Source: ABdhPJyxfH5LGGxufkr9KSD8VScrNwzhHQ+PIxM0CDNloeUQJo2TL3eY5w63xzFtC+BR4yHE4pBElw==
X-Received: by 2002:a1c:5fd4:: with SMTP id
 t203mr13318936wmb.175.1590140496112; 
 Fri, 22 May 2020 02:41:36 -0700 (PDT)
Received: from localhost ([88.98.246.218])
 by smtp.gmail.com with ESMTPSA id z7sm9035545wrl.88.2020.05.22.02.41.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 22 May 2020 02:41:35 -0700 (PDT)
From: luca.boccassi@gmail.com
To: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>, dpdk stable <stable@dpdk.org>
Date: Fri, 22 May 2020 10:40:03 +0100
Message-Id: <20200522094022.1025696-24-luca.boccassi@gmail.com>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200522094022.1025696-1-luca.boccassi@gmail.com>
References: <20200519130549.112823-214-luca.boccassi@gmail.com>
 <20200522094022.1025696-1-luca.boccassi@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-stable] patch 'net/bnxt: fix storing MAC address twice' has
	been queued to stable release 19.11.3
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
Errors-To: stable-bounces@dpdk.org
Sender: "stable" <stable-bounces@dpdk.org>

Hi,

FYI, your patch has been queued to stable release 19.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/24/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From 099b9e280c7f85a4345aca8a2e17d9813f0efe27 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Thu, 14 May 2020 22:04:36 -0700
Subject: [PATCH] net/bnxt: fix storing MAC address twice

[ upstream commit 86421846cc20e963e5b6878724727abd427cd1b6 ]

We are maintaining MAC address twice which is unnecessary.
This patch removes the copy which helps reduce size of bnxt structure.

Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        |  3 ++-
 drivers/net/bnxt/bnxt_ethdev.c | 11 ++++-------
 drivers/net/bnxt/bnxt_hwrm.c   |  8 ++++++--
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 995e5980a6..404d58a037 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -527,6 +527,7 @@ struct bnxt {
 #define BNXT_FLAG_FW_CAP_ONE_STEP_TX_TS		BIT(22)
 #define BNXT_FLAG_ADV_FLOW_MGMT			BIT(23)
 #define BNXT_FLAG_NPAR_PF                      BIT(24)
+#define BNXT_FLAG_DFLT_MAC_SET			BIT(26)
 #define BNXT_PF(bp)		(!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)		((bp)->flags & BNXT_FLAG_VF)
 #define BNXT_NPAR(bp)		((bp)->flags & BNXT_FLAG_NPAR_PF)
@@ -539,6 +540,7 @@ struct bnxt {
 #define BNXT_STINGRAY(bp)	((bp)->flags & BNXT_FLAG_STINGRAY)
 #define BNXT_HAS_NQ(bp)		BNXT_CHIP_THOR(bp)
 #define BNXT_HAS_RING_GRPS(bp)	(!BNXT_CHIP_THOR(bp))
+#define BNXT_HAS_DFLT_MAC_SET(bp)      ((bp)->flags & BNXT_FLAG_DFLT_MAC_SET)
 
 	uint32_t		fw_cap;
 #define BNXT_FW_CAP_HOT_RESET		BIT(0)
@@ -621,7 +623,6 @@ struct bnxt {
 	uint8_t                 max_q;
 
 	uint16_t		fw_fid;
-	uint8_t			dflt_mac_addr[RTE_ETHER_ADDR_LEN];
 	uint16_t		max_rsscos_ctx;
 	uint16_t		max_cp_rings;
 	uint16_t		max_tx_rings;
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index aa6ceff13c..f1bd575356 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -4611,7 +4611,7 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
 		return -ENOMEM;
 	}
 
-	if (bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN)) {
+	if (!BNXT_HAS_DFLT_MAC_SET(bp)) {
 		if (BNXT_PF(bp))
 			return -EINVAL;
 
@@ -4624,14 +4624,11 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
 			    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;
+		if (rc)
+			return rc;
 	}
 
 	/* Copy the permanent MAC from the FUNC_QCAPS response */
-	memcpy(bp->mac_addr, bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN);
 	memcpy(&eth_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN);
 
 	return rc;
@@ -4642,7 +4639,7 @@ static int bnxt_restore_dflt_mac(struct bnxt *bp)
 	int rc = 0;
 
 	/* MAC is already configured in FW */
-	if (!bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN))
+	if (BNXT_HAS_DFLT_MAC_SET(bp))
 		return 0;
 
 	/* Restore the old MAC configured */
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 9dad6bd319..33f352fade 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -646,7 +646,12 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
 	}
 
 	bp->fw_fid = rte_le_to_cpu_32(resp->fid);
-	memcpy(bp->dflt_mac_addr, &resp->mac_address, RTE_ETHER_ADDR_LEN);
+	if (!bnxt_check_zero_bytes(resp->mac_address, RTE_ETHER_ADDR_LEN)) {
+		bp->flags |= BNXT_FLAG_DFLT_MAC_SET;
+		memcpy(bp->mac_addr, &resp->mac_address, RTE_ETHER_ADDR_LEN);
+	} else {
+		bp->flags &= ~BNXT_FLAG_DFLT_MAC_SET;
+	}
 	bp->max_rsscos_ctx = rte_le_to_cpu_16(resp->max_rsscos_ctx);
 	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);
@@ -4861,7 +4866,6 @@ int bnxt_hwrm_set_mac(struct bnxt *bp)
 
 	HWRM_CHECK_RESULT();
 
-	memcpy(bp->dflt_mac_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN);
 	HWRM_UNLOCK();
 
 	return rc;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-22 10:37:40.141748846 +0100
+++ 0024-net-bnxt-fix-storing-MAC-address-twice.patch	2020-05-22 10:37:39.136412857 +0100
@@ -1,13 +1,14 @@
-From 86421846cc20e963e5b6878724727abd427cd1b6 Mon Sep 17 00:00:00 2001
+From 099b9e280c7f85a4345aca8a2e17d9813f0efe27 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Thu, 14 May 2020 22:04:36 -0700
 Subject: [PATCH] net/bnxt: fix storing MAC address twice
 
+[ upstream commit 86421846cc20e963e5b6878724727abd427cd1b6 ]
+
 We are maintaining MAC address twice which is unnecessary.
 This patch removes the copy which helps reduce size of bnxt structure.
 
 Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -18,26 +19,26 @@
  3 files changed, 12 insertions(+), 10 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
-index 4093a2f01e..403b23f356 100644
+index 995e5980a6..404d58a037 100644
 --- a/drivers/net/bnxt/bnxt.h
 +++ b/drivers/net/bnxt/bnxt.h
-@@ -560,6 +560,7 @@ struct bnxt {
- #define BNXT_FLAG_FC_THREAD			BIT(23)
- #define BNXT_FLAG_RX_VECTOR_PKT_MODE		BIT(24)
- #define BNXT_FLAG_FLOW_XSTATS_EN		BIT(25)
+@@ -527,6 +527,7 @@ struct bnxt {
+ #define BNXT_FLAG_FW_CAP_ONE_STEP_TX_TS		BIT(22)
+ #define BNXT_FLAG_ADV_FLOW_MGMT			BIT(23)
+ #define BNXT_FLAG_NPAR_PF                      BIT(24)
 +#define BNXT_FLAG_DFLT_MAC_SET			BIT(26)
  #define BNXT_PF(bp)		(!((bp)->flags & BNXT_FLAG_VF))
  #define BNXT_VF(bp)		((bp)->flags & BNXT_FLAG_VF)
  #define BNXT_NPAR(bp)		((bp)->flags & BNXT_FLAG_NPAR_PF)
-@@ -573,6 +574,7 @@ struct bnxt {
+@@ -539,6 +540,7 @@ struct bnxt {
+ #define BNXT_STINGRAY(bp)	((bp)->flags & BNXT_FLAG_STINGRAY)
  #define BNXT_HAS_NQ(bp)		BNXT_CHIP_THOR(bp)
  #define BNXT_HAS_RING_GRPS(bp)	(!BNXT_CHIP_THOR(bp))
- #define BNXT_FLOW_XSTATS_EN(bp)	((bp)->flags & BNXT_FLAG_FLOW_XSTATS_EN)
 +#define BNXT_HAS_DFLT_MAC_SET(bp)      ((bp)->flags & BNXT_FLAG_DFLT_MAC_SET)
  
  	uint32_t		fw_cap;
  #define BNXT_FW_CAP_HOT_RESET		BIT(0)
-@@ -658,7 +660,6 @@ struct bnxt {
+@@ -621,7 +623,6 @@ struct bnxt {
  	uint8_t                 max_q;
  
  	uint16_t		fw_fid;
@@ -46,10 +47,10 @@
  	uint16_t		max_cp_rings;
  	uint16_t		max_tx_rings;
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 4d64a98351..77492f89c7 100644
+index aa6ceff13c..f1bd575356 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -4980,7 +4980,7 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
+@@ -4611,7 +4611,7 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
  		return -ENOMEM;
  	}
  
@@ -58,7 +59,7 @@
  		if (BNXT_PF(bp))
  			return -EINVAL;
  
-@@ -4993,14 +4993,11 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
+@@ -4624,14 +4624,11 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)
  			    bp->mac_addr[3], bp->mac_addr[4], bp->mac_addr[5]);
  
  		rc = bnxt_hwrm_set_mac(bp);
@@ -75,7 +76,7 @@
  	memcpy(&eth_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN);
  
  	return rc;
-@@ -5011,7 +5008,7 @@ static int bnxt_restore_dflt_mac(struct bnxt *bp)
+@@ -4642,7 +4639,7 @@ static int bnxt_restore_dflt_mac(struct bnxt *bp)
  	int rc = 0;
  
  	/* MAC is already configured in FW */
@@ -85,10 +86,10 @@
  
  	/* Restore the old MAC configured */
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index a41d77669b..c1798b59d1 100644
+index 9dad6bd319..33f352fade 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -731,7 +731,12 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
+@@ -646,7 +646,12 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
  	}
  
  	bp->fw_fid = rte_le_to_cpu_32(resp->fid);
@@ -102,7 +103,7 @@
  	bp->max_rsscos_ctx = rte_le_to_cpu_16(resp->max_rsscos_ctx);
  	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);
-@@ -5027,7 +5032,6 @@ int bnxt_hwrm_set_mac(struct bnxt *bp)
+@@ -4861,7 +4866,6 @@ int bnxt_hwrm_set_mac(struct bnxt *bp)
  
  	HWRM_CHECK_RESULT();