DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
@ 2016-01-21  6:49 Zhe Tao
  2016-01-22 10:16 ` Thomas Monjalon
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Zhe Tao @ 2016-01-21  6:49 UTC (permalink / raw)
  To: dev

VEB switching feature for i40e is used to enable the switching between the
 VSIs connect to the virtual bridge. The old implementation is setting the
 virtual bridge mode as VEPA which is port aggregation. Enable the switching 
 ability by setting the loop back mode for the specific VSIs which connect to PF
 or VFs. 

Signed-off-by: Zhe Tao <zhe.tao@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 48 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 8 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index bf6220d..ba2ba9e 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3822,6 +3822,39 @@ i40e_vsi_get_bw_config(struct i40e_vsi *vsi)
 	return I40E_SUCCESS;
 }
 
+/* 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, "cannot 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,
@@ -3857,6 +3890,8 @@ 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);
@@ -4029,14 +4064,11 @@ i40e_vsi_setup(struct i40e_pf *pf,
 		ctxt.connection_type = 0x1;
 		ctxt.flags = I40E_AQ_VSI_TYPE_VF;
 
-		/**
-		 * Do not configure switch ID to enable VEB switch by
-		 * I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB. Because in Fortville,
-		 * 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. Need to enable it when HW issue
-		 * is fixed.
-		 */
+		/* Configure switch ID */
+		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);
 
 		/* Configure port/vlan */
 		ctxt.info.valid_sections |=
-- 
2.1.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
  2016-01-21  6:49 [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e Zhe Tao
@ 2016-01-22 10:16 ` Thomas Monjalon
  2016-01-25  6:22   ` Xu, Qian Q
  2016-02-19  5:17 ` Wu, Jingjing
  2016-02-23  8:10 ` [dpdk-dev] [PATCH v2] " Zhe Tao
  2 siblings, 1 reply; 10+ messages in thread
From: Thomas Monjalon @ 2016-01-22 10:16 UTC (permalink / raw)
  To: Zhe Tao, john.mcnamara; +Cc: dev

2016-01-21 14:49, Zhe Tao:
> VEB switching feature for i40e is used to enable the switching between the
>  VSIs connect to the virtual bridge. The old implementation is setting the
>  virtual bridge mode as VEPA which is port aggregation. Enable the switching 
>  ability by setting the loop back mode for the specific VSIs which connect to PF
>  or VFs. 
> 
> Signed-off-by: Zhe Tao <zhe.tao@intel.com>

Is VEB something specific to i40e?
Please explain the acronyms VEB, VSI and VEPA in the commit log or in a
doc dedicated to i40e. Having some design explanations in a doc would help
to understand the changes and to contribute.
Thanks

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
  2016-01-22 10:16 ` Thomas Monjalon
@ 2016-01-25  6:22   ` Xu, Qian Q
  0 siblings, 0 replies; 10+ messages in thread
From: Xu, Qian Q @ 2016-01-25  6:22 UTC (permalink / raw)
  To: Thomas Monjalon, Tao, Zhe, Mcnamara, John; +Cc: dev

I have a quick check, VEB/VEPA/VSI is not i40e's specific, they are IEEE EVB terms. See below. 

IEEE EVB tutorial: http://www.ieee802.org/802_tutorials/2009-11/evb-tutorial-draft-20091116_v09.pdf

Virtual Ethernet Bridge (VEB) - This is an IEEE EVB term. A VEB is a VLAN Bridge internal to Fortville that bridges the traffic of multiple VSIs over an internal virtual network. 
Virtual Ethernet Port Aggregator (VEPA) - This is an IEEE EVB term. A VEPA multiplexes the traffic of one or more VSIs onto a single Fortville Ethernet port. The biggest difference between a VEB and a VEPA is that a VEB can switch packets internally between VSIs, whereas a VEPA cannot. 
Virtual Station Interface (VSI) - This is an IEEE EVB term that defines the properties of a virtual machine's (or a physical machine's) connection to the network. Each downstream v-port on a Fortville VEB or VEPA defines a VSI. A standards-based definition of VSI properties enables network management tools to perform virtual machine migration and associated network re-configuration in a vendor-neutral manner.



Thanks
Qian

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon
Sent: Friday, January 22, 2016 6:16 PM
To: Tao, Zhe; Mcnamara, John
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e

2016-01-21 14:49, Zhe Tao:
> VEB switching feature for i40e is used to enable the switching between 
> the  VSIs connect to the virtual bridge. The old implementation is 
> setting the  virtual bridge mode as VEPA which is port aggregation. 
> Enable the switching  ability by setting the loop back mode for the 
> specific VSIs which connect to PF  or VFs.
> 
> Signed-off-by: Zhe Tao <zhe.tao@intel.com>

Is VEB something specific to i40e?
Please explain the acronyms VEB, VSI and VEPA in the commit log or in a doc dedicated to i40e. Having some design explanations in a doc would help to understand the changes and to contribute.
Thanks

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
  2016-01-21  6:49 [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e Zhe Tao
  2016-01-22 10:16 ` Thomas Monjalon
@ 2016-02-19  5:17 ` Wu, Jingjing
  2016-02-23  3:48   ` Zhe Tao
  2016-02-23  8:10 ` [dpdk-dev] [PATCH v2] " Zhe Tao
  2 siblings, 1 reply; 10+ messages in thread
From: Wu, Jingjing @ 2016-02-19  5:17 UTC (permalink / raw)
  To: Tao, Zhe, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Zhe Tao
> Sent: Thursday, January 21, 2016 2:50 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
> 
> VEB switching feature for i40e is used to enable the switching between the
>  VSIs connect to the virtual bridge. The old implementation is setting the
>  virtual bridge mode as VEPA which is port aggregation. Enable the switching
>  ability by setting the loop back mode for the specific VSIs which connect to PF
>  or VFs.

As I know, there is a known issue about the veb switch on older NVM version.
I would be better to add a NVM version verification, if version > xx.xx, then enable it?

Thanks
Jingjing

> Signed-off-by: Zhe Tao <zhe.tao@intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev.c | 48 +++++++++++++++++++++++++++++++++++-------
>  1 file changed, 40 insertions(+), 8 deletions(-)
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
  2016-02-19  5:17 ` Wu, Jingjing
@ 2016-02-23  3:48   ` Zhe Tao
  0 siblings, 0 replies; 10+ messages in thread
From: Zhe Tao @ 2016-02-23  3:48 UTC (permalink / raw)
  To: Wu, Jingjing; +Cc: dev

On Fri, Feb 19, 2016 at 01:17:41PM +0800, Wu, Jingjing wrote:
> 
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Zhe Tao
> > Sent: Thursday, January 21, 2016 2:50 PM
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e
> > 
> > VEB switching feature for i40e is used to enable the switching between the
> >  VSIs connect to the virtual bridge. The old implementation is setting the
> >  virtual bridge mode as VEPA which is port aggregation. Enable the switching
> >  ability by setting the loop back mode for the specific VSIs which connect to PF
> >  or VFs.
> 
> As I know, there is a known issue about the veb switch on older NVM version.
> I would be better to add a NVM version verification, if version > xx.xx, then enable it?
> 
> Thanks
> Jingjing
> 
Great suggestion, i will add the check for it!
Thanks
Zhe Tao
> > Signed-off-by: Zhe Tao <zhe.tao@intel.com>
> > ---
> >  drivers/net/i40e/i40e_ethdev.c | 48 +++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 40 insertions(+), 8 deletions(-)
> > 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH v2] i40e: add VEB switching support for i40e
  2016-01-21  6:49 [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e Zhe Tao
  2016-01-22 10:16 ` Thomas Monjalon
  2016-02-19  5:17 ` Wu, Jingjing
@ 2016-02-23  8:10 ` Zhe Tao
  2016-02-25  0:42   ` Wu, Jingjing
  2016-03-09  5:38   ` [dpdk-dev] [PATCH v3] " Zhe Tao
  2 siblings, 2 replies; 10+ messages in thread
From: Zhe Tao @ 2016-02-23  8:10 UTC (permalink / raw)
  To: dev

Signed-off-by: Zhe Tao <zhe.tao@intel.com>

VEB switching feature for i40e is used to enable the switching between the
 VSIs connect to the virtual bridge. The old implementation is setting the
 virtual bridge mode as VEPA which is port aggregation. Enable the switching
 ability by setting the loop back mode for the specific VSIs which connect to PF
 or VFs.

v1: Add the VEB switching support.
v2: Add the check for the FW version,which should larger than 5.0.
    Add release note.
---
 doc/guides/rel_notes/release_16_04.rst |  1 +
 drivers/net/i40e/i40e_ethdev.c         | 57 +++++++++++++++++++++++++++++-----
 2 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/doc/guides/rel_notes/release_16_04.rst b/doc/guides/rel_notes/release_16_04.rst
index 5786f74..eb7effc 100644
--- a/doc/guides/rel_notes/release_16_04.rst
+++ b/doc/guides/rel_notes/release_16_04.rst
@@ -46,6 +46,7 @@ This section should contain new features added in this release. Sample format:
 
 * **Added vhost-user live migration support.**
 
+* **Added VEB switching support for FVL.**
 
 Resolved Issues
 ---------------
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index ef24122..5527cb1 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3822,6 +3822,45 @@ i40e_vsi_get_bw_config(struct i40e_vsi *vsi)
 	return I40E_SUCCESS;
 }
 
+/* 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;
+
+	/* Use the FW API if FW >= v5.0 */
+	if (hw->aq.fw_maj_ver < 5) {
+		PMD_INIT_LOG(ERR, "FW < v5.0, cannot enable loopback");
+		return;
+	}
+
+	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, "cannot 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,
@@ -3857,6 +3896,8 @@ 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);
@@ -4029,14 +4070,14 @@ i40e_vsi_setup(struct i40e_pf *pf,
 		ctxt.connection_type = 0x1;
 		ctxt.flags = I40E_AQ_VSI_TYPE_VF;
 
-		/**
-		 * Do not configure switch ID to enable VEB switch by
-		 * I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB. Because in Fortville,
-		 * 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. Need to enable it when HW issue
-		 * is fixed.
-		 */
+		/* Use the VEB configuration if FW >= v5.0 */
+		if (hw->aq.fw_maj_ver >= 5) {
+			/* Configure switch ID */
+			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);
+		}
 
 		/* Configure port/vlan */
 		ctxt.info.valid_sections |=
-- 
2.1.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH v2] i40e: add VEB switching support for i40e
  2016-02-23  8:10 ` [dpdk-dev] [PATCH v2] " Zhe Tao
@ 2016-02-25  0:42   ` Wu, Jingjing
  2016-03-09  5:38   ` [dpdk-dev] [PATCH v3] " Zhe Tao
  1 sibling, 0 replies; 10+ messages in thread
From: Wu, Jingjing @ 2016-02-25  0:42 UTC (permalink / raw)
  To: Tao, Zhe, dev



> -----Original Message-----
> From: Tao, Zhe
> Sent: Tuesday, February 23, 2016 4:11 PM
> To: dev@dpdk.org
> Cc: Tao, Zhe; Wu, Jingjing
> Subject: [dpdk-dev][PATCH v2] i40e: add VEB switching support for i40e
> 
> Signed-off-by: Zhe Tao <zhe.tao@intel.com>
> 
> VEB switching feature for i40e is used to enable the switching between the
> VSIs connect to the virtual bridge. The old implementation is setting the
> virtual bridge mode as VEPA which is port aggregation. Enable the switching
> ability by setting the loop back mode for the specific VSIs which connect to PF
> or VFs.
> 
> v1: Add the VEB switching support.
> v2: Add the check for the FW version,which should larger than 5.0.
>     Add release note.
> ---
>  doc/guides/rel_notes/release_16_04.rst |  1 +
>  drivers/net/i40e/i40e_ethdev.c         | 57
> +++++++++++++++++++++++++++++-----
>  2 files changed, 50 insertions(+), 8 deletions(-)
> 
> diff --git a/doc/guides/rel_notes/release_16_04.rst
> b/doc/guides/rel_notes/release_16_04.rst
> index 5786f74..eb7effc 100644
> --- a/doc/guides/rel_notes/release_16_04.rst
> +++ b/doc/guides/rel_notes/release_16_04.rst
> @@ -46,6 +46,7 @@ This section should contain new features added in this

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

With minor suggestion: v1/v2 changes need to be put after  ---

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH v3] i40e: add VEB switching support for i40e
  2016-02-23  8:10 ` [dpdk-dev] [PATCH v2] " Zhe Tao
  2016-02-25  0:42   ` Wu, Jingjing
@ 2016-03-09  5:38   ` Zhe Tao
  2016-03-09  6:02     ` Wu, Jingjing
  1 sibling, 1 reply; 10+ messages in thread
From: Zhe Tao @ 2016-03-09  5:38 UTC (permalink / raw)
  To: dev

VEB switching feature for i40e is used to enable the switching between the
VSIs connect to the virtual bridge. The old implementation is setting the
virtual bridge mode as VEPA which is port aggregation. Enable the switching 
ability by setting the loop back mode for the specific VSIs which connect to PF
or VFs. 

VEB/VSI/VEPA are concepts not specific to the i40e HW, the concepts are from
802.1qbg spec
IEEE EVB tutorial:
http://www.ieee802.org/802_tutorials/2009-11/evb-tutorial-draft-20091116_v09.pdf

VEB: a virtual switch can forward the packet based on the specific match field.
VSI: a virtual interface connect between the VEB/VEPA and virtual machine.
VEPA: a virtual Ethernet port aggregator will upstream the packets from VSI to
the LAN port. 

Signed-off-by: Zhe Tao <zhe.tao@intel.com>
---
v1: Add the VEB switching support.
v2: Add the check for the FW version, which should larger than 5.0.
    Add release note.
v3: Add the VEB concepts description in the commit log.

 doc/guides/rel_notes/release_16_04.rst |  1 +
 drivers/net/i40e/i40e_ethdev.c         | 57 +++++++++++++++++++++++++++++-----
 2 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/doc/guides/rel_notes/release_16_04.rst b/doc/guides/rel_notes/release_16_04.rst
index 5786f74..eb7effc 100644
--- a/doc/guides/rel_notes/release_16_04.rst
+++ b/doc/guides/rel_notes/release_16_04.rst
@@ -46,6 +46,7 @@ This section should contain new features added in this release. Sample format:
 
 * **Added vhost-user live migration support.**
 
+* **Added VEB switching support for FVL.**
 
 Resolved Issues
 ---------------
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index ef24122..5527cb1 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3822,6 +3822,45 @@ i40e_vsi_get_bw_config(struct i40e_vsi *vsi)
 	return I40E_SUCCESS;
 }
 
+/* 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;
+
+	/* Use the FW API if FW >= v5.0 */
+	if (hw->aq.fw_maj_ver < 5) {
+		PMD_INIT_LOG(ERR, "FW < v5.0, cannot enable loopback");
+		return;
+	}
+
+	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, "cannot 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,
@@ -3857,6 +3896,8 @@ 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);
@@ -4029,14 +4070,14 @@ i40e_vsi_setup(struct i40e_pf *pf,
 		ctxt.connection_type = 0x1;
 		ctxt.flags = I40E_AQ_VSI_TYPE_VF;
 
-		/**
-		 * Do not configure switch ID to enable VEB switch by
-		 * I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB. Because in Fortville,
-		 * 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. Need to enable it when HW issue
-		 * is fixed.
-		 */
+		/* Use the VEB configuration if FW >= v5.0 */
+		if (hw->aq.fw_maj_ver >= 5) {
+			/* Configure switch ID */
+			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);
+		}
 
 		/* Configure port/vlan */
 		ctxt.info.valid_sections |=
-- 
2.1.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH v3] i40e: add VEB switching support for i40e
  2016-03-09  5:38   ` [dpdk-dev] [PATCH v3] " Zhe Tao
@ 2016-03-09  6:02     ` Wu, Jingjing
  2016-03-11 21:50       ` Bruce Richardson
  0 siblings, 1 reply; 10+ messages in thread
From: Wu, Jingjing @ 2016-03-09  6:02 UTC (permalink / raw)
  To: Tao, Zhe, dev



> -----Original Message-----
> From: Tao, Zhe
> Sent: Wednesday, March 09, 2016 1:39 PM
> To: dev@dpdk.org
> Cc: Tao, Zhe; Wu, Jingjing
> Subject: [dpdk-dev][PATCH v3] i40e: add VEB switching support for i40e
> 
> VEB switching feature for i40e is used to enable the switching between the
> VSIs connect to the virtual bridge. The old implementation is setting the
> virtual bridge mode as VEPA which is port aggregation. Enable the switching
> ability by setting the loop back mode for the specific VSIs which connect to PF
> or VFs.
> 
> VEB/VSI/VEPA are concepts not specific to the i40e HW, the concepts are
> from 802.1qbg spec IEEE EVB tutorial:
> http://www.ieee802.org/802_tutorials/2009-11/evb-tutorial-draft-
> 20091116_v09.pdf
> 
> VEB: a virtual switch can forward the packet based on the specific match field.
> VSI: a virtual interface connect between the VEB/VEPA and virtual machine.
> VEPA: a virtual Ethernet port aggregator will upstream the packets from VSI
> to the LAN port.
> 
> Signed-off-by: Zhe Tao <zhe.tao@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH v3] i40e: add VEB switching support for i40e
  2016-03-09  6:02     ` Wu, Jingjing
@ 2016-03-11 21:50       ` Bruce Richardson
  0 siblings, 0 replies; 10+ messages in thread
From: Bruce Richardson @ 2016-03-11 21:50 UTC (permalink / raw)
  To: Wu, Jingjing; +Cc: dev

On Wed, Mar 09, 2016 at 06:02:38AM +0000, Wu, Jingjing wrote:
> 
> 
> > -----Original Message-----
> > From: Tao, Zhe
> > Sent: Wednesday, March 09, 2016 1:39 PM
> > To: dev@dpdk.org
> > Cc: Tao, Zhe; Wu, Jingjing
> > Subject: [dpdk-dev][PATCH v3] i40e: add VEB switching support for i40e
> > 
> > VEB switching feature for i40e is used to enable the switching between the
> > VSIs connect to the virtual bridge. The old implementation is setting the
> > virtual bridge mode as VEPA which is port aggregation. Enable the switching
> > ability by setting the loop back mode for the specific VSIs which connect to PF
> > or VFs.
> > 
> > VEB/VSI/VEPA are concepts not specific to the i40e HW, the concepts are
> > from 802.1qbg spec IEEE EVB tutorial:
> > http://www.ieee802.org/802_tutorials/2009-11/evb-tutorial-draft-
> > 20091116_v09.pdf
> > 
> > VEB: a virtual switch can forward the packet based on the specific match field.
> > VSI: a virtual interface connect between the VEB/VEPA and virtual machine.
> > VEPA: a virtual Ethernet port aggregator will upstream the packets from VSI
> > to the LAN port.
> > 
> > Signed-off-by: Zhe Tao <zhe.tao@intel.com>
> Acked-by: Jingjing Wu <jingjing.wu@intel.com>
>
Applied to dpdk-next-net/rel_16_04

/Bruce

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-03-11 21:50 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-21  6:49 [dpdk-dev] [PATCH] i40e: add VEB switching support for i40e Zhe Tao
2016-01-22 10:16 ` Thomas Monjalon
2016-01-25  6:22   ` Xu, Qian Q
2016-02-19  5:17 ` Wu, Jingjing
2016-02-23  3:48   ` Zhe Tao
2016-02-23  8:10 ` [dpdk-dev] [PATCH v2] " Zhe Tao
2016-02-25  0:42   ` Wu, Jingjing
2016-03-09  5:38   ` [dpdk-dev] [PATCH v3] " Zhe Tao
2016-03-09  6:02     ` Wu, Jingjing
2016-03-11 21:50       ` Bruce Richardson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).