net/octeontx2: fix dmac filtering

Message ID 1591195933-16362-1-git-send-email-hkalra@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series net/octeontx2: fix dmac filtering |

Checks

Context Check Description
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing warning Testing issues
ci/Intel-compilation fail Compilation issues
ci/checkpatch success coding style OK

Commit Message

Harman Kalra June 3, 2020, 2:52 p.m. UTC
  Issue has been observed where packets are getting dropped
at DMAC filtering if a new dmac address is added before
starting of port.

Fixes: c43adf61682f ("net/octeontx2: add unicast MAC filter")
Cc: stable@dpdk.org

Signed-off-by: Harman Kalra <hkalra@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h     | 1 +
 drivers/net/octeontx2/otx2_ethdev_ops.c | 4 +++-
 drivers/net/octeontx2/otx2_mac.c        | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)
  

Comments

Sunil Kumar Kori June 4, 2020, 5:59 a.m. UTC | #1
>-----Original Message-----
>From: dev <dev-bounces@dpdk.org> On Behalf Of Harman Kalra
>Sent: Wednesday, June 3, 2020 8:22 PM
>To: Jerin Kollanukkaran <jerinj@marvell.com>; Nithin Kumar Dabilpuram
><ndabilpuram@marvell.com>; Kiran Kumar Kokkilagadda
><kirankumark@marvell.com>
>Cc: dev@dpdk.org; Harman Kalra <hkalra@marvell.com>; stable@dpdk.org
>Subject: [dpdk-dev] [PATCH] net/octeontx2: fix dmac filtering
>
>Issue has been observed where packets are getting dropped
>at DMAC filtering if a new dmac address is added before
>starting of port.
>
>Fixes: c43adf61682f ("net/octeontx2: add unicast MAC filter")
>Cc: stable@dpdk.org
>
>Signed-off-by: Harman Kalra <hkalra@marvell.com>
>---
> drivers/net/octeontx2/otx2_ethdev.h     | 1 +
> drivers/net/octeontx2/otx2_ethdev_ops.c | 4 +++-
> drivers/net/octeontx2/otx2_mac.c        | 2 ++
> 3 files changed, 6 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/octeontx2/otx2_ethdev.h
>b/drivers/net/octeontx2/otx2_ethdev.h
>index 0fbf68b8e..16b0d8163 100644
>--- a/drivers/net/octeontx2/otx2_ethdev.h
>+++ b/drivers/net/octeontx2/otx2_ethdev.h
>@@ -271,6 +271,7 @@ struct otx2_eth_dev {
> 	uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
> 	uint8_t mkex_pfl_name[MKEX_NAME_LEN];
> 	uint8_t max_mac_entries;
>+	bool dmac_filter_enable;
> 	uint8_t lf_tx_stats;
> 	uint8_t lf_rx_stats;
> 	uint16_t flags;
>diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c
>b/drivers/net/octeontx2/otx2_ethdev_ops.c
>index 80ac2b96e..faecf216c 100644
>--- a/drivers/net/octeontx2/otx2_ethdev_ops.c
>+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c
>@@ -148,8 +148,10 @@ otx2_nix_promisc_enable(struct rte_eth_dev
>*eth_dev)
> int
> otx2_nix_promisc_disable(struct rte_eth_dev *eth_dev)
> {
>-	otx2_nix_promisc_config(eth_dev, 0);
>+	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
>+	otx2_nix_promisc_config(eth_dev, dev->dmac_filter_enable);
> 	nix_cgx_promisc_config(eth_dev, 0);
>+	dev->dmac_filter_enable = false;
>
> 	return 0;
> }
>diff --git a/drivers/net/octeontx2/otx2_mac.c
>b/drivers/net/octeontx2/otx2_mac.c
>index 262d185e5..49a700ca1 100644
>--- a/drivers/net/octeontx2/otx2_mac.c
>+++ b/drivers/net/octeontx2/otx2_mac.c
>@@ -76,6 +76,8 @@ otx2_nix_mac_addr_add(struct rte_eth_dev *eth_dev,
>struct rte_ether_addr *addr,
>
> 	/* Enable promiscuous mode at NIX level */
> 	otx2_nix_promisc_config(eth_dev, 1);
>+	dev->dmac_filter_enable = true;
>+	eth_dev->data->promiscuous = 0;
>
> done:
> 	return rc;
>--
>2.18.0
Acked-by: Sunil Kumar Kori <skori@mavell.com>
  
Jerin Jacob June 28, 2020, 12:15 p.m. UTC | #2
On Thu, Jun 4, 2020 at 11:29 AM Sunil Kumar Kori <skori@marvell.com> wrote:
>
> >-----Original Message-----
> >From: dev <dev-bounces@dpdk.org> On Behalf Of Harman Kalra
> >Sent: Wednesday, June 3, 2020 8:22 PM
> >To: Jerin Kollanukkaran <jerinj@marvell.com>; Nithin Kumar Dabilpuram
> ><ndabilpuram@marvell.com>; Kiran Kumar Kokkilagadda
> ><kirankumark@marvell.com>
> >Cc: dev@dpdk.org; Harman Kalra <hkalra@marvell.com>; stable@dpdk.org
> >Subject: [dpdk-dev] [PATCH] net/octeontx2: fix dmac filtering
> >
> >Issue has been observed where packets are getting dropped
> >at DMAC filtering if a new dmac address is added before
> >starting of port.
> >
> >Fixes: c43adf61682f ("net/octeontx2: add unicast MAC filter")
> >Cc: stable@dpdk.org
> >
> >Signed-off-by: Harman Kalra <hkalra@marvell.com>
> >---

> >2.18.0
> Acked-by: Sunil Kumar Kori <skori@mavell.com>


Acked-by: Jerin Jacob <jerinj@marvell.com>
Applied to dpdk-next-net-mrvl/master. Thanks

>
  

Patch

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index 0fbf68b8e..16b0d8163 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -271,6 +271,7 @@  struct otx2_eth_dev {
 	uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
 	uint8_t mkex_pfl_name[MKEX_NAME_LEN];
 	uint8_t max_mac_entries;
+	bool dmac_filter_enable;
 	uint8_t lf_tx_stats;
 	uint8_t lf_rx_stats;
 	uint16_t flags;
diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c
index 80ac2b96e..faecf216c 100644
--- a/drivers/net/octeontx2/otx2_ethdev_ops.c
+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c
@@ -148,8 +148,10 @@  otx2_nix_promisc_enable(struct rte_eth_dev *eth_dev)
 int
 otx2_nix_promisc_disable(struct rte_eth_dev *eth_dev)
 {
-	otx2_nix_promisc_config(eth_dev, 0);
+	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	otx2_nix_promisc_config(eth_dev, dev->dmac_filter_enable);
 	nix_cgx_promisc_config(eth_dev, 0);
+	dev->dmac_filter_enable = false;
 
 	return 0;
 }
diff --git a/drivers/net/octeontx2/otx2_mac.c b/drivers/net/octeontx2/otx2_mac.c
index 262d185e5..49a700ca1 100644
--- a/drivers/net/octeontx2/otx2_mac.c
+++ b/drivers/net/octeontx2/otx2_mac.c
@@ -76,6 +76,8 @@  otx2_nix_mac_addr_add(struct rte_eth_dev *eth_dev, struct rte_ether_addr *addr,
 
 	/* Enable promiscuous mode at NIX level */
 	otx2_nix_promisc_config(eth_dev, 1);
+	dev->dmac_filter_enable = true;
+	eth_dev->data->promiscuous = 0;
 
 done:
 	return rc;