[dpdk-stable] [PATCH v2] net/ixgbe: fix vf mac remains

Qiming Chen chenqiming_huawei at 163.com
Thu Sep 9 03:41:19 CEST 2021


thanks your reply.


kernal PF + dpdk VF mode, I developed a demo based on dpdk. I used igb_uio to take over the vf port, and then added a unicast MAC address to the port. As a result, the MAC packet was flowed to test ok, and then the demo was restarted, and the traffic still passed.
From this result, it can be seen that the mac remains, and there is no clear. This is vf driver quesion, not dpdk pf.


Also, the two interfaces you posted, I didn't find them in the dpdk code.
On 9/8/2021 16:35,Wang, Haiyue<haiyue.wang at intel.com> wrote:
-----Original Message-----
From: Qiming Chen <chenqiming_huawei at 163.com>
Sent: Monday, September 6, 2021 10:35
To: dev at dpdk.org
Cc: Wang, Haiyue <haiyue.wang at intel.com>; Qiming Chen <chenqiming_huawei at 163.com>; stable at dpdk.org
Subject: [PATCH v2] net/ixgbe: fix vf mac remains

In the following two scenarios, the mac address residual problem
will occur:
1) In the VF hard pass-through environment, after adding the mac
address, the process restarts, and the previously added mac is
still valid;
2) In the vf hard pass-through environment, after the mac address
is issued, the port will start/stop, and the previously added mac
is still valid;

How did you test it ?

From the ixgbe PF, it will clean the MACs:

ixgbe_del_mac_filter(adapter, adapter->vfinfo[vf].vf_mac_addresses, vf);
ixgbe_set_vf_macvlan(adapter, vf, 0, NULL);


The patch clears the mac address at the start and stop of the vf
port. After the start is cleared, the rte framework will restore
the mac addition to solve the problem of residual mac addresses.

Fixes: af75078fece3 ("first public release")
Cc: stable at dpdk.org

Signed-off-by: Qiming Chen <chenqiming_huawei at 163.com>
---
v2:
Modify fixes commit
---
drivers/net/ixgbe/ixgbe_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 6a91f104e1..e40350d86e 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -5410,6 +5410,9 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)
*/
ixgbevf_dev_link_update(dev, 0);

+  /* Clear the mac address, the rte frame will be restored */
+  ixgbevf_set_uc_addr_vf(hw, 0, NULL);
+
hw->adapter_stopped = false;

return 0;
@@ -5454,6 +5457,9 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev)
intr_handle->intr_vec = NULL;
}

+  /* Clear the mac address */
+  ixgbevf_set_uc_addr_vf(hw, 0, NULL);
+
adapter->rss_reta_updated = 0;

return 0;
--
2.30.1.windows.1


More information about the stable mailing list