[dpdk-dev] net/e1000: fix vf received problem

Message ID 1493269649-56200-1-git-send-email-qiming.yang@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Qiming Yang April 27, 2017, 5:07 a.m. UTC
  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

Wenzhuo Lu April 27, 2017, 5:41 a.m. UTC | #1
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
  

Patch

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));
+		rah |= (0x1 << (E1000_RAH_POOLSEL_SHIFT + vf));
+		E1000_WRITE_REG(hw, E1000_RAH(rar_entry), rah);
 		return 0;
 	}
 	return -1;