From 580b85f6ba4cf38268c50185a6f5becce8b69846 Mon Sep 17 00:00:00 2001 From: Qiming Yang Date: Wed, 3 May 2017 13:51:32 +0800 Subject: [PATCH] net/igb: fix VF MAC address setting VF default MAC address be added in PF Mac address list instead of VF MAC address list, makes VF can't receive packets. This patch fixes this issue. Fixes: be2d648a2dd3 ("igb: add PF support") Cc: stable@dpdk.org Signed-off-by: Qiming Yang Acked-by: Wenzhuo Lu --- drivers/net/e1000/igb_pf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/e1000/igb_pf.c b/drivers/net/e1000/igb_pf.c index 67da3c24c4..923c78a102 100644 --- a/drivers/net/e1000/igb_pf.c +++ b/drivers/net/e1000/igb_pf.c @@ -332,12 +332,16 @@ igb_vf_set_mac_addr(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf) *(E1000_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private)); int rar_entry = hw->mac.rar_entry_count - (vf + 1); uint8_t *new_mac = (uint8_t *)(&msgbuf[1]); + int rah; if (is_unicast_ether_addr((struct ether_addr *)new_mac)) { if (!is_zero_ether_addr((struct ether_addr *)new_mac)) rte_memcpy(vfinfo[vf].vf_mac_addresses, new_mac, sizeof(vfinfo[vf].vf_mac_addresses)); hw->mac.ops.rar_set(hw, new_mac, rar_entry); + rah = E1000_READ_REG(hw, E1000_RAH(rar_entry)); + rah |= (0x1 << (E1000_RAH_POOLSEL_SHIFT + vf)); + E1000_WRITE_REG(hw, E1000_RAH(rar_entry), rah); return 0; } return -1; -- 2.20.1