[dpdk-stable] patch 'net/ixgbe: fix over using multicast table for VF' has been queued to LTS release 18.11.1

Kevin Traynor ktraynor at redhat.com
Thu Jan 31 16:48:32 CET 2019


Hi,

FYI, your patch has been queued to LTS release 18.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/07/19. 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.

Kevin Traynor

---
>From bf484e4ce727bb2c28eb9b68f74213b01769dd24 Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1 at intel.com>
Date: Mon, 7 Jan 2019 15:22:56 +0800
Subject: [PATCH] net/ixgbe: fix over using multicast table for VF

[ upstream commit dc5a6e74224094ae702fa971c4ce039b4a2e3560 ]

According to the current implementation, all VFs will set bit
IXGBE_VMOLR_ROMPE during initialization, this cause any VF
will accept packets that match the MTA table. Since the MTA
table is shared by all VFs which means if one VF update MTA
table in function ixgbe_vf_set_multicast, then all other VFs
will receive multicast packets which cause unnecessary
performance overhead.

So it's better to set VF's ROPE bit of register VMOLR only
if multicast address filter is required on that VF.
Also, the ROPE bit should be reset when multicast address
filter is requested to clean.

This patch also aligns to the related fix on ixgbe
kernel driver 5.3.7.

Fixes: 00e30184daa0 ("ixgbe: add PF support")

Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
---
 drivers/net/ixgbe/ixgbe_pf.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c
index 4b833ffab..be0c0768c 100644
--- a/drivers/net/ixgbe/ixgbe_pf.c
+++ b/drivers/net/ixgbe/ixgbe_pf.c
@@ -352,5 +352,5 @@ ixgbe_vf_reset_event(struct rte_eth_dev *dev, uint16_t vf)
 	uint32_t vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf));
 
-	vmolr |= (IXGBE_VMOLR_ROPE | IXGBE_VMOLR_ROMPE |
+	vmolr |= (IXGBE_VMOLR_ROPE |
 			IXGBE_VMOLR_BAM | IXGBE_VMOLR_AUPE);
 	IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);
@@ -504,4 +504,5 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	uint32_t reg_val;
 	int i;
+	u32 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf));
 
 	/* Disable multicast promiscuous first */
@@ -517,4 +518,10 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	}
 
+	if (nb_entries == 0) {
+		vmolr &= ~IXGBE_VMOLR_ROMPE;
+		IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);
+		return 0;
+	}
+
 	for (i = 0; i < vfinfo->num_vf_mc_hashes; i++) {
 		mta_idx = (vfinfo->vf_mc_hashes[i] >> IXGBE_MTA_BIT_SHIFT)
@@ -526,4 +533,7 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	}
 
+	vmolr |= IXGBE_VMOLR_ROMPE;
+	IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);
+
 	return 0;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-31 15:44:06.309193333 +0000
+++ 0024-net-ixgbe-fix-over-using-multicast-table-for-VF.patch	2019-01-31 15:44:05.000000000 +0000
@@ -1,8 +1,10 @@
-From dc5a6e74224094ae702fa971c4ce039b4a2e3560 Mon Sep 17 00:00:00 2001
+From bf484e4ce727bb2c28eb9b68f74213b01769dd24 Mon Sep 17 00:00:00 2001
 From: Wei Zhao <wei.zhao1 at intel.com>
 Date: Mon, 7 Jan 2019 15:22:56 +0800
 Subject: [PATCH] net/ixgbe: fix over using multicast table for VF
 
+[ upstream commit dc5a6e74224094ae702fa971c4ce039b4a2e3560 ]
+
 According to the current implementation, all VFs will set bit
 IXGBE_VMOLR_ROMPE during initialization, this cause any VF
 will accept packets that match the MTA table. Since the MTA
@@ -20,7 +22,6 @@
 kernel driver 5.3.7.
 
 Fixes: 00e30184daa0 ("ixgbe: add PF support")
-Cc: stable at dpdk.org
 
 Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
 Acked-by: Qi Zhang <qi.z.zhang at intel.com>


More information about the stable mailing list