From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CDB23A0527 for ; Sat, 25 Jul 2020 02:20:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 69B171C042; Sat, 25 Jul 2020 02:20:08 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id A4ADC1C02A; Sat, 25 Jul 2020 02:20:05 +0200 (CEST) IronPort-SDR: VWWjjSff89CGSLIIVYw/XMLGWP4YhxFusRJ3NKIK+iTNDwvfSkJQa85f0zCLAIViR1kOxUw9IH 3o203FOC3gTw== X-IronPort-AV: E=McAfee;i="6000,8403,9692"; a="148287509" X-IronPort-AV: E=Sophos;i="5.75,392,1589266800"; d="scan'208";a="148287509" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2020 17:20:04 -0700 IronPort-SDR: qRBtvFd5uUZs2el8zBgfbUoihFVgwq9iTrrAkjTmBMbDIinMO4dbVLiQOTryzf6ong2Ib4x2Th VEUBDdhk9X1g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,392,1589266800"; d="scan'208";a="272717283" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga008.fm.intel.com with ESMTP; 24 Jul 2020 17:20:04 -0700 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 24 Jul 2020 17:20:03 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 24 Jul 2020 17:20:03 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.22]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.49]) with mapi id 14.03.0439.000; Sat, 25 Jul 2020 08:20:00 +0800 From: "Zhang, Qi Z" To: "Yang, Qiming" , "Zhao1, Wei" , "dev@dpdk.org" CC: "stable@dpdk.org" , "Zhao1, Wei" Thread-Topic: [dpdk-dev] [PATCH] net/i40e: enable i40e outer VLAN strip in QinQ Thread-Index: AQHWYYv19FCxQo3tjk6IdLiFzOSnoqkV4iWAgAGNXLA= Date: Sat, 25 Jul 2020 00:19:59 +0000 Message-ID: <039ED4275CED7440929022BC67E7061154865D7A@SHSMSX103.ccr.corp.intel.com> References: <20200724070137.10003-1-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] net/i40e: enable i40e outer VLAN strip in QinQ X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" > -----Original Message----- > From: Yang, Qiming > Sent: Friday, July 24, 2020 4:38 PM > To: Zhao1, Wei ; dev@dpdk.org > Cc: stable@dpdk.org; Zhang, Qi Z ; Zhao1, Wei > > Subject: RE: [dpdk-dev] [PATCH] net/i40e: enable i40e outer VLAN strip in= QinQ >=20 >=20 >=20 > > -----Original Message----- > > From: dev On Behalf Of Wei Zhao > > Sent: Friday, July 24, 2020 15:02 > > To: dev@dpdk.org > > Cc: stable@dpdk.org; Zhang, Qi Z ; Zhao1, Wei > > > > Subject: [dpdk-dev] [PATCH] net/i40e: enable i40e outer VLAN strip in > > QinQ > > > > This patch enable i40e outer vlan strip on and off in QinQ mode with > > mask bit of DEV_RX_OFFLOAD_QINQ_STRIP, users can use "vlan set qinq_str= ip > on 0" > > to enable or "vlan set qinq_strip on 0" to disable i40e outer vlan > > strip when try with testpmd app. > > > > Fixes: 4861cde46116 (i40e: new poll mode driver) > > > > Signed-off-by: Wei Zhao > > --- > > drivers/net/i40e/i40e_ethdev.c | 45 > > +++++++++++++++++++++++++++++++++- > > 1 file changed, 44 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/i40e/i40e_ethdev.c > > b/drivers/net/i40e/i40e_ethdev.c index 05d5f2861..f5be6606c 100644 > > --- a/drivers/net/i40e/i40e_ethdev.c > > +++ b/drivers/net/i40e/i40e_ethdev.c > > @@ -48,6 +48,8 @@ > > #define ETH_I40E_VF_MSG_CFG"vf_msg_cfg" > > > > #define I40E_CLEAR_PXE_WAIT_MS 200 > > +#define I40E_VSI_TSR_QINQ_STRIP0x4010 #define > > +I40E_VSI_TSR(_i)(0x00050800 + ((_i) * 4)) > > > > /* Maximun number of capability elements */ > > #define I40E_MAX_CAP_ELE_NUM 128 > > @@ -3968,6 +3970,39 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev, > > return ret; } > > > > +/* Configure outer vlan stripping on or off in QinQ mode */ static > > +int i40e_vsi_config_outer_vlan_stripping(struct i40e_vsi *vsi, bool > > +on) { struct i40e_hw *hw =3D I40E_VSI_TO_HW(vsi); int ret =3D > > +I40E_SUCCESS; uint32_t reg; > > + > > +if (vsi->vsi_id >=3D I40E_MAX_NUM_VSIS) { PMD_DRV_LOG(ERR, "VSI ID > > +exceeds the maximum"); return -EINVAL; } > > + > > +/* Configure for outer VLAN RX stripping */ reg =3D I40E_READ_REG(hw, > > +I40E_VSI_TSR(vsi->vsi_id)); > > + > > +if (on) > > +reg |=3D I40E_VSI_TSR_QINQ_STRIP; > > +else > > +reg &=3D ~I40E_VSI_TSR_QINQ_STRIP; > > + > > +ret =3D i40e_aq_debug_write_register(hw, > > + I40E_VSI_TSR(vsi->vsi_id), > > + reg, NULL); > > +if (ret < 0) { > > +PMD_DRV_LOG(ERR, "Failed to update VSI_TSR[%d]", > > + vsi->vsi_id); > > +return I40E_ERR_CONFIG; > > +} > > + > > +return ret; > > +} > > + > > static int > > i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask) { @@ > > -4004,6 > > +4039,14 @@ i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask) > > i40e_vsi_config_double_vlan(vsi, FALSE); } > > > > +if (mask & ETH_QINQ_STRIP_MASK) { > > +/* Enable or disable outer VLAN stripping */ if (rxmode->offloads & > > +DEV_RX_OFFLOAD_QINQ_STRIP) i40e_vsi_config_outer_vlan_stripping(vsi, > > +TRUE); else i40e_vsi_config_outer_vlan_stripping(vsi, FALSE); } > > + > > return 0; > > } > > > > @@ -6178,6 +6221,7 @@ i40e_dev_init_vlan(struct rte_eth_dev *dev) > > > > /* Apply vlan offload setting */ > > mask =3D ETH_VLAN_STRIP_MASK | > > + ETH_QINQ_STRIP_MASK | > > ETH_VLAN_FILTER_MASK | > > ETH_VLAN_EXTEND_MASK; > > ret =3D i40e_vlan_offload_set(dev, mask); @@ -10872,7 +10916,6 @@ > > i40e_configure_registers(struct i40e_hw *hw) } } > > > > -#define I40E_VSI_TSR(_i) (0x00050800 + ((_i) * 4)) > > #define I40E_VSI_TSR_QINQ_CONFIG 0xc030 > > #define I40E_VSI_L2TAGSTXVALID(_i) (0x00042800 + ((_i) * 4)) > > #define I40E_VSI_L2TAGSTXVALID_QINQ 0xab > > -- > > 2.19.1 >=20 > Reviewed-by: Qiming Yang Applied to dpdk-next-net-intel. Thanks Qi >=20