From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 763E91B45A for ; Thu, 31 Jan 2019 16:50:17 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CB6A9C058CA6; Thu, 31 Jan 2019 15:50:16 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-117-200.ams2.redhat.com [10.36.117.200]) by smtp.corp.redhat.com (Postfix) with ESMTP id 43C6B5C26A; Thu, 31 Jan 2019 15:50:14 +0000 (UTC) From: Kevin Traynor To: Wei Zhao Cc: Qi Zhang , dpdk stable Date: Thu, 31 Jan 2019 15:48:32 +0000 Message-Id: <20190131154901.5383-24-ktraynor@redhat.com> In-Reply-To: <20190131154901.5383-1-ktraynor@redhat.com> References: <20190131154901.5383-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 31 Jan 2019 15:50:16 +0000 (UTC) Subject: [dpdk-stable] patch 'net/ixgbe: fix over using multicast table for VF' has been queued to LTS release 18.11.1 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: Thu, 31 Jan 2019 15:50:17 -0000 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 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 Acked-by: Qi Zhang --- 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 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@dpdk.org Signed-off-by: Wei Zhao Acked-by: Qi Zhang