[dpdk-dev] net/e1000: fix vf received problem
Checks
Commit Message
VF default MAC address be added in PF Mac address list
instead of VF MAC address list, makes VF can't recieve
packets. This patch fixes this issue.
Fixes: be2d648a2dd3 ("igb: add PF support")
Signed-off-by: Qiming Yang <qiming.yang@intel.com>
---
drivers/net/e1000/igb_pf.c | 3 +++
1 file changed, 3 insertions(+)
Comments
Hi Qiming,
> -----Original Message-----
> From: Yang, Qiming
> Sent: Thursday, April 27, 2017 1:07 PM
> To: dev@dpdk.org
> Cc: Lu, Wenzhuo; stable@dpdk.org; Yang, Qiming
> Subject: [PATCH] net/e1000: fix vf received problem
>
> VF default MAC address be added in PF Mac address list instead of VF MAC
> address list, makes VF can't recieve packets. This patch fixes this issue.
>
> Fixes: be2d648a2dd3 ("igb: add PF support")
>
> Signed-off-by: Qiming Yang <qiming.yang@intel.com>
> ---
> drivers/net/e1000/igb_pf.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/e1000/igb_pf.c b/drivers/net/e1000/igb_pf.c index
> 67da3c2..1a70ad5 100644
> --- a/drivers/net/e1000/igb_pf.c
> +++ b/drivers/net/e1000/igb_pf.c
> @@ -338,6 +338,9 @@ igb_vf_set_mac_addr(struct rte_eth_dev *dev,
> uint32_t vf, uint32_t *msgbuf)
> 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);
> + int rah = E1000_READ_REG(hw, E1000_RAH(rar_entry));
Looks a little weird to define rah here. Would you like to move it to the beginning? Thanks.
> + rah |= (0x1 << (E1000_RAH_POOLSEL_SHIFT + vf));
> + E1000_WRITE_REG(hw, E1000_RAH(rar_entry), rah);
> return 0;
> }
> return -1;
> --
> 2.7.4
@@ -338,6 +338,9 @@ igb_vf_set_mac_addr(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
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);
+ int 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;