[dpdk-dev] i40e: revert internal switch of PF

Message ID 1426673208-28670-1-git-send-email-thomas.monjalon@6wind.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Thomas Monjalon March 18, 2015, 10:06 a.m. UTC
  VEB switching is blocking VF.
If the source mac address of packet sent from VF is not listed in the
VEB’s mac table, the VEB will switch the packet back to the VF.
It's an hardware issue.

Reverts: 2ccabd8cd1f6 ("i40e: enable internal switch of PF").

Reported-by: Jingjing Wu <jingjing.wu@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 lib/librte_pmd_i40e/i40e_ethdev.c | 36 ------------------------------------
 1 file changed, 36 deletions(-)
  

Comments

Jingjing Wu March 18, 2015, 4:04 p.m. UTC | #1
> -----Original Message-----

> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]

> Sent: Wednesday, March 18, 2015 3:07 AM

> To: Zhang, Helin

> Cc: dev@dpdk.org; Wu, Jingjing

> Subject: [PATCH] i40e: revert internal switch of PF

> 

> VEB switching is blocking VF.

> If the source mac address of packet sent from VF is not listed in the

> VEB’s mac table, the VEB will switch the packet back to the VF.

> It's an hardware issue.

> 

> Reverts: 2ccabd8cd1f6 ("i40e: enable internal switch of PF").

> 

> Reported-by: Jingjing Wu <jingjing.wu@intel.com>

> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>

> ---

>  lib/librte_pmd_i40e/i40e_ethdev.c | 36 ------------------------------------

>  1 file changed, 36 deletions(-)

> 

> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c

> index 6888072..cf6685e 100644

> --- a/lib/librte_pmd_i40e/i40e_ethdev.c

> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c

> @@ -2868,40 +2868,6 @@ i40e_vsi_dump_bw_config(struct i40e_vsi *vsi)

>  	return 0;

>  }

> 

> -/*

> - * i40e_enable_pf_lb

> - * @pf: pointer to the pf structure

> - *

> - * allow loopback on pf

> - */

> -static inline void

> -i40e_enable_pf_lb(struct i40e_pf *pf)

> -{

> -	struct i40e_hw *hw = I40E_PF_TO_HW(pf);

> -	struct i40e_vsi_context ctxt;

> -	int ret;

> -

> -	memset(&ctxt, 0, sizeof(ctxt));

> -	ctxt.seid = pf->main_vsi_seid;

> -	ctxt.pf_num = hw->pf_id;

> -	ret = i40e_aq_get_vsi_params(hw, &ctxt, NULL);

> -	if (ret) {

> -		PMD_DRV_LOG(ERR, "couldn't get pf vsi config, err %d, aq_err %d",

> -			ret, hw->aq.asq_last_status);

> -		return;

> -	}

> -	ctxt.flags = I40E_AQ_VSI_TYPE_PF;

> -	ctxt.info.valid_sections =

> -		rte_cpu_to_le_16(I40E_AQ_VSI_PROP_SWITCH_VALID);

> -	ctxt.info.switch_id |=

> -		rte_cpu_to_le_16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB);

> -

> -	ret = i40e_aq_update_vsi_params(hw, &ctxt, NULL);

> -	if (ret)

> -		PMD_DRV_LOG(ERR, "update vsi switch failed, aq_err=%d\n",

> -			hw->aq.asq_last_status);

> -}

> -

>  /* Setup a VSI */

>  struct i40e_vsi *

>  i40e_vsi_setup(struct i40e_pf *pf,

> @@ -2937,8 +2903,6 @@ i40e_vsi_setup(struct i40e_pf *pf,

>  			PMD_DRV_LOG(ERR, "VEB setup failed");

>  			return NULL;

>  		}

> -		/* set ALLOWLOOPBACk on pf, when veb is created */

> -		i40e_enable_pf_lb(pf);

>  	}

> 

>  	vsi = rte_zmalloc("i40e_vsi", sizeof(struct i40e_vsi), 0);

> --

> 2.2.2


Acked-by: Jingjing Wu <jingjing.wu@intel.com>
  
Zhang, Helin March 19, 2015, 1:37 a.m. UTC | #2
> -----Original Message-----

> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]

> Sent: Wednesday, March 18, 2015 6:07 PM

> To: Zhang, Helin

> Cc: dev@dpdk.org; Wu, Jingjing

> Subject: [PATCH] i40e: revert internal switch of PF

> 

> VEB switching is blocking VF.

> If the source mac address of packet sent from VF is not listed in the VEB’s mac

> table, the VEB will switch the packet back to the VF.

> It's an hardware issue.

> 

> Reverts: 2ccabd8cd1f6 ("i40e: enable internal switch of PF").

> 

> Reported-by: Jingjing Wu <jingjing.wu@intel.com>

> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>

Acked-by: Helin Zhang <helin.zhang@intel.com>


> ---

>  lib/librte_pmd_i40e/i40e_ethdev.c | 36 ------------------------------------

>  1 file changed, 36 deletions(-)

> 

> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c

> b/lib/librte_pmd_i40e/i40e_ethdev.c

> index 6888072..cf6685e 100644

> --- a/lib/librte_pmd_i40e/i40e_ethdev.c

> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c

> @@ -2868,40 +2868,6 @@ i40e_vsi_dump_bw_config(struct i40e_vsi *vsi)

>  	return 0;

>  }

> 

> -/*

> - * i40e_enable_pf_lb

> - * @pf: pointer to the pf structure

> - *

> - * allow loopback on pf

> - */

> -static inline void

> -i40e_enable_pf_lb(struct i40e_pf *pf)

> -{

> -	struct i40e_hw *hw = I40E_PF_TO_HW(pf);

> -	struct i40e_vsi_context ctxt;

> -	int ret;

> -

> -	memset(&ctxt, 0, sizeof(ctxt));

> -	ctxt.seid = pf->main_vsi_seid;

> -	ctxt.pf_num = hw->pf_id;

> -	ret = i40e_aq_get_vsi_params(hw, &ctxt, NULL);

> -	if (ret) {

> -		PMD_DRV_LOG(ERR, "couldn't get pf vsi config, err %d, aq_err %d",

> -			ret, hw->aq.asq_last_status);

> -		return;

> -	}

> -	ctxt.flags = I40E_AQ_VSI_TYPE_PF;

> -	ctxt.info.valid_sections =

> -		rte_cpu_to_le_16(I40E_AQ_VSI_PROP_SWITCH_VALID);

> -	ctxt.info.switch_id |=

> -		rte_cpu_to_le_16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB);

> -

> -	ret = i40e_aq_update_vsi_params(hw, &ctxt, NULL);

> -	if (ret)

> -		PMD_DRV_LOG(ERR, "update vsi switch failed, aq_err=%d\n",

> -			hw->aq.asq_last_status);

> -}

> -

>  /* Setup a VSI */

>  struct i40e_vsi *

>  i40e_vsi_setup(struct i40e_pf *pf,

> @@ -2937,8 +2903,6 @@ i40e_vsi_setup(struct i40e_pf *pf,

>  			PMD_DRV_LOG(ERR, "VEB setup failed");

>  			return NULL;

>  		}

> -		/* set ALLOWLOOPBACk on pf, when veb is created */

> -		i40e_enable_pf_lb(pf);

>  	}

> 

>  	vsi = rte_zmalloc("i40e_vsi", sizeof(struct i40e_vsi), 0);

> --

> 2.2.2
  
Thomas Monjalon March 19, 2015, 5:07 p.m. UTC | #3
> > VEB switching is blocking VF.
> > If the source mac address of packet sent from VF is not listed in the VEB’s mac
> > table, the VEB will switch the packet back to the VF.
> > It's an hardware issue.
> > 
> > Reverts: 2ccabd8cd1f6 ("i40e: enable internal switch of PF").
> > 
> > Reported-by: Jingjing Wu <jingjing.wu@intel.com>
> > Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
> Acked-by: Helin Zhang <helin.zhang@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c
index 6888072..cf6685e 100644
--- a/lib/librte_pmd_i40e/i40e_ethdev.c
+++ b/lib/librte_pmd_i40e/i40e_ethdev.c
@@ -2868,40 +2868,6 @@  i40e_vsi_dump_bw_config(struct i40e_vsi *vsi)
 	return 0;
 }
 
-/*
- * i40e_enable_pf_lb
- * @pf: pointer to the pf structure
- *
- * allow loopback on pf
- */
-static inline void
-i40e_enable_pf_lb(struct i40e_pf *pf)
-{
-	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct i40e_vsi_context ctxt;
-	int ret;
-
-	memset(&ctxt, 0, sizeof(ctxt));
-	ctxt.seid = pf->main_vsi_seid;
-	ctxt.pf_num = hw->pf_id;
-	ret = i40e_aq_get_vsi_params(hw, &ctxt, NULL);
-	if (ret) {
-		PMD_DRV_LOG(ERR, "couldn't get pf vsi config, err %d, aq_err %d",
-			ret, hw->aq.asq_last_status);
-		return;
-	}
-	ctxt.flags = I40E_AQ_VSI_TYPE_PF;
-	ctxt.info.valid_sections =
-		rte_cpu_to_le_16(I40E_AQ_VSI_PROP_SWITCH_VALID);
-	ctxt.info.switch_id |=
-		rte_cpu_to_le_16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB);
-
-	ret = i40e_aq_update_vsi_params(hw, &ctxt, NULL);
-	if (ret)
-		PMD_DRV_LOG(ERR, "update vsi switch failed, aq_err=%d\n",
-			hw->aq.asq_last_status);
-}
-
 /* Setup a VSI */
 struct i40e_vsi *
 i40e_vsi_setup(struct i40e_pf *pf,
@@ -2937,8 +2903,6 @@  i40e_vsi_setup(struct i40e_pf *pf,
 			PMD_DRV_LOG(ERR, "VEB setup failed");
 			return NULL;
 		}
-		/* set ALLOWLOOPBACk on pf, when veb is created */
-		i40e_enable_pf_lb(pf);
 	}
 
 	vsi = rte_zmalloc("i40e_vsi", sizeof(struct i40e_vsi), 0);