> -----Original Message----- > From: Wu, Jingjing > Sent: Monday, November 30, 2015 11:54 AM > To: dev at dpdk.org > Cc: Wu, Jingjing; Zhang, Helin; Pei, Yulong > Subject: [PATCH] i40evf: fix mac deletion when stop dev > > When dev_stop is called in i40evf pmd driver, queues are switched off to > stop receiving and transmitting. But the mac address of this VF still exists > in > VEB switch. > To stop the traffic from VSI level, the mac address need to be removed too. > Then the bandwidth for this SRIOV VSI can be freed. > This patch fix this issue. > > Fixes: 4861cde46116 ("i40e: new poll mode driver") > > Signed-off-by: Jingjing Wu <jingjing.wu at intel.com> > --- > drivers/net/i40e/i40e_ethdev_vf.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c > b/drivers/net/i40e/i40e_ethdev_vf.c > index 5c554f2..14d2a50 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -1878,7 +1878,9 @@ err_queue: > static void > i40evf_dev_stop(struct rte_eth_dev *dev) { > + struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data- > >dev_private); > struct rte_intr_handle *intr_handle = &dev->pci_dev->intr_handle; > + struct ether_addr mac_addr; > > PMD_INIT_FUNC_TRACE(); > > @@ -1892,6 +1894,11 @@ i40evf_dev_stop(struct rte_eth_dev *dev) > rte_free(intr_handle->intr_vec); > intr_handle->intr_vec = NULL; > } > + /* Set mac addr */ > + (void)rte_memcpy(mac_addr.addr_bytes, hw->mac.addr, > + sizeof(mac_addr.addr_bytes)); Use ether_addr_copy() instead.
/Helin > + /* Delete mac addr of this vf */ > + i40evf_del_mac_addr(dev, &mac_addr); > } > > static int > -- > 2.4.0