From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1ED34A0553; Fri, 10 Jun 2022 10:14:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CB8274069C; Fri, 10 Jun 2022 10:14:22 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 8AE7B40689 for ; Fri, 10 Jun 2022 10:14:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654848860; x=1686384860; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=HhCCBaz8Aza1GjLniiDBtpqzIIzc2G+nRGCL7ody5UA=; b=WH0T9R303fqoZDSKTrX7dCCb5uf1F3YoP28ejfz53F4dXDOnu+BtPfQl 7IvNzfXuNxgHInZAf9Uz9t3c2/04ANJM2KC/4kt8ekvpdGVoJE9viiYzm 5WcDp5RV+AAwr6IESofq05PsYgwp5k6Rvvy8/B2FcRNML+RdSNi1rc+SK mR5kLrWeTQwKCHOGtLml+UF9S/Q9VevT+uQiZd+pvdSPkFf0Ya5X4Ve2j 0SSddVMa4OtVAmmhCYCVWGt8Hg1Q2cUbbF5P5QNttr/UzWR3V5t/09CfM skzo0ZvrB/7jUHtMDKxpP5PoOlemBn5T06K1nTdmWXE0G6Y1Rzi1DKuCv Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="302931841" X-IronPort-AV: E=Sophos;i="5.91,288,1647327600"; d="scan'208";a="302931841" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 01:14:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,288,1647327600"; d="scan'208";a="616387025" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga001.jf.intel.com with ESMTP; 10 Jun 2022 01:14:19 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 10 Jun 2022 01:14:18 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 10 Jun 2022 01:14:18 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Fri, 10 Jun 2022 01:14:18 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.48) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Fri, 10 Jun 2022 01:14:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gymqI1V7yX24WOH7dWbu54ye+VhFn0pl4vcFhwVFPqU02UXTQYRo1JBJdhccxTQ6H/RPNpVqmlv2WlBddGIes8586bLB2uzNnBZna6xCZzieA/xPp6nBU5cm7SzSeNEUAidXmok/U6GXbYeFIxpA+azT7tPRYx+d/r+pUFDCT4iohB/37GXejYe2D+ca3Eoa/hQYrlZoP7un54TSiIEapzs/y6HRJlof0lZkxnXtoR6CKiFC6n+xGgxuRvM3ifWAfXrmqzxRzHXEjb3bGZSnEH/tWAuKFE1FaPT4DAYECfFkHbum/OQwcKshoCjk0RqZv+S1mC7EhdTOEbjdkBC8Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TiYe1pCvJNM59j9DTsQ5dl4oHiKqn+gjGFfKvkB3noA=; b=a6DVmpECfo5X9+Wdfl/pzK9p3WYVrhsbwbt70hDGhDWm5Z/YWn+Y8P2bI9M/542HmwUux4TYSfn6xKvYNSin0qva6qkGDWUwkluFV3ovXPVilyo1B0Mc0yhdoPXmXgYatg3KRc/IAlm/8+JYPrK9L/fZObAk2Q/tN/EAHHLWY1K2FC+iBuARwNHc17fTDh8H/xlW8ykVX04sytH4R57K8Fy6Lf/PV4bBiRk57wg9RonsjYHNumCFWfhp7j/Tp+FEK+32LhAdefCfEmdBhiE/kJ5gegLNgSWUrL+cu6vh4Hrt8JTQ4BjkVG7xTMSF6FcFNlliD9c20wZkLEgIm59m9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM6PR11MB3673.namprd11.prod.outlook.com (2603:10b6:5:145::26) by BYAPR11MB3207.namprd11.prod.outlook.com (2603:10b6:a03:7c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.17; Fri, 10 Jun 2022 08:14:16 +0000 Received: from DM6PR11MB3673.namprd11.prod.outlook.com ([fe80::2d4c:ca2d:45b0:64cd]) by DM6PR11MB3673.namprd11.prod.outlook.com ([fe80::2d4c:ca2d:45b0:64cd%5]) with mapi id 15.20.5332.012; Fri, 10 Jun 2022 08:14:16 +0000 From: "Liu, KevinX" To: "Zhang, Qi Z" , "dev@dpdk.org" CC: "Zhang, Yuying" , "Xing, Beilei" , "Yang, SteveX" , "Zhang, RobinX" Subject: RE: [PATCH v6] net/i40e: add outer VLAN processing Thread-Topic: [PATCH v6] net/i40e: add outer VLAN processing Thread-Index: AQHYfJ8ooQz/TNYBLUW/CmS4OxYT061ISNaAgAABWGA= Date: Fri, 10 Jun 2022 08:14:16 +0000 Message-ID: References: <20220407200111.14753-1-kevinx.liu@intel.com> <20220610155216.81289-1-kevinx.liu@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b92bf4da-9543-46f4-f630-08da4ab93631 x-ms-traffictypediagnostic: BYAPR11MB3207:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7wRfRev2jlq6iJ+52TdH05Bc31Q+lC7mvbqaq6rFzw6duUpNTS0JJHcDWsKgZHkQKZa+O40vfA13Gc0f1EJkZdGVZdlgChQ3NtCY1y5MGEbQgNjBtach0X8J5JmqFVJh1xgVfsTDvwUkIesSEob91OmgAe+/QZ6Y1wiDsoOoTD9wvkAbwBY6EaJEEwcm66ciEk3EtnQm+Q2GyRw7uPJ50SWJrizr4VEEky4Qif6kpQP9HeUT6Rdd2F+vNw0BcEu302phG0dKGZtg0k3GbbNWVc3TLOtTGoh/S9bUE1/zzfDfc8wdMCt6o4g8TEXdpFwIRL8wOTjh4Q8QRge6K3bLbzBVnzJFYrAOzWhqDbAuwhSiXH9iLHuLWEQsM7CTqDl583tTEVRKmwRMshKSKuzyU9Kk65yM8+M1ZMUVjp9nNf2dkDCgH+iSUtZuSQgHSw1KZvHeJ0825eJpe1rvyoAvUvq7vV4g3lURONYBasVBjZ2xMtVgsq58ZzChC30D3tA+3tDOr8GVdW9hIZlh0ICvWad3s/gyTpwaen3w/9+ppry6/COIyEMC1hIQX8DpPfRTagLDErlFjeo8Gn4Q79uPrDBgpyK8bL9txFsPbnhJ7nRplk48Yl4yY6PPHWS0ApMs3JUQJTsyeF0Dg7wv1ic6ePy6xazTSzbB7d8S5xosMUIMLLGp7RzSRccLWXEwb7hf8MKhxKN3ooylai4h7rDajQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB3673.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(9686003)(6506007)(86362001)(7696005)(5660300002)(8676002)(4326008)(66446008)(38070700005)(107886003)(53546011)(186003)(66556008)(76116006)(66946007)(64756008)(66476007)(110136005)(54906003)(2906002)(316002)(55016003)(26005)(82960400001)(508600001)(52536014)(71200400001)(38100700002)(33656002)(122000001)(8936002)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?UkRaOVpkWk1uOENTaUQwZFMvK1k5VmYzb3lRUlFPbHpVd0FrVFRLMFZ3?= =?iso-2022-jp?B?YjBFQjd6ZVFCWExhUC9vYXlDYlMyN3VTVGM3ZGF2ZnlvbUY2cG5ZWFE4?= =?iso-2022-jp?B?M0Q4c3BYMnZuRmdqVzgzUEFVdFFGR1FWbmhESFpFSEZTVzFYU25vY0F2?= =?iso-2022-jp?B?L3h2dHJnMXlod1dqdEp4OG9DVWg2SlEwMzRHVm42aEROUTVVRzh1R1d1?= =?iso-2022-jp?B?SjVZeUFNREdHU2w1cEFlNVF0RXlkd2pIZmVJR1BWRk9TWU9sb0J1YTZm?= =?iso-2022-jp?B?OUFxRjlMK2RCa0d1WkxPZWx2RVVJSjJqTmpldmZXbVlpN0llbFlLSm1L?= =?iso-2022-jp?B?dTNGVFhjWE80YUMxcGptL1VwRVNZK1VZYXpzQ3FUb3pqTHgzNFJORitz?= =?iso-2022-jp?B?L3RyNE54d1h2OFEwK243dGtTaWFHWElESEcwRGk2Y1dEYXJGdGp2bUI3?= =?iso-2022-jp?B?cE9IZ2paak5uQUhqRUVpN2ExTHAzZU5KUkNUNjVxbVNHWFpBa1N6VnMv?= =?iso-2022-jp?B?MW1RYU9zQllsZFVEVzdlYlVmcjlOU2JHWkJncDNpVjc4Q0RFWFpsZkdz?= =?iso-2022-jp?B?dmNFbytMU0VtNWZVa3Z5VC9vU0w3ZmE1QTM4aU9TUGkweGI1U0NoK1dW?= =?iso-2022-jp?B?R2FGK3IraVZJVmM3eS9oVktvWHRpTTZDSnRmbUxVdlVxbnR4UnBZUTVk?= =?iso-2022-jp?B?MnZ0bnpLbHNocXdDWm5qbDEzaTJ3QU1iZk5YT2J5SlNhemdRRnJybWJK?= =?iso-2022-jp?B?dXErcVJPVW4zTXBrb21xZEV2aUxoTjBINGFFakFtR2IvZnVaMWJuVThK?= =?iso-2022-jp?B?b3g0NnkvNmdMREJGZWo4aGpId1BvVHQ5VzgzWGtVSGlCZFpFV3N1M0M5?= =?iso-2022-jp?B?WERXaS9ETkxkMDN2Rk1RL3VVV21McURKZVZuRzJ4ek5DeWRSdTdpUk5p?= =?iso-2022-jp?B?SyttNmw4REduVS9kYitzUmhmUEVudysycXYvV2x6ZlBRVXRHSFJoL0c3?= =?iso-2022-jp?B?TkJUUG85cGZKaGYyQXdpelp5VUlaV1Q1Q1BSMGZYYkxEM3M0ZjQ2Umg4?= =?iso-2022-jp?B?ZnBFd0g1ell3bENJNVNMWThqK05nVjE2emMzM0pCVTJ1VUZjR2dmekdh?= =?iso-2022-jp?B?a2VrSS9GaW41MWxSRmFPZDRRalE5MEMxT1Z3dUtDMFpKVnNka2dMbHV2?= =?iso-2022-jp?B?MWE5MFNFdnNkS1hxaC9INjZseVZneHZrMFRvdUVvZGNVRDlNR01GVnRq?= =?iso-2022-jp?B?WU54SlFTK3liQkt5SDVRUFhzWDhBcExXTjNiaGJwTHpGS0tWcUZsVVUy?= =?iso-2022-jp?B?clpPeWJ2Nzh1Z2pSdWVURGZPMkVNc3R2cnBnU2R3YlZWSm90VkFzNUkx?= =?iso-2022-jp?B?dTBZTWFoTTBRaFhFRlkyWWwxZXlIdlVZTWNBNnpRanAzRXhuNHVjdFRp?= =?iso-2022-jp?B?QmNiRFNFVnFEdUlWWmdSbDl4L0U5Z1NKTUduSWtTUTJlZUtYekNpb1NK?= =?iso-2022-jp?B?WTJiN0Jsd3dCTStMeXhCaFgvSExMQnJWY0QwcmluVDJkdFpNZWp3ZE9E?= =?iso-2022-jp?B?WUZsWjEyL0dkc0wzM29RWnFRTnI3WUFFcWt3eXBlME5KaWM5Rmk3ZkFG?= =?iso-2022-jp?B?dmxPaThueXZSaDRDWExwVG8wMHAvbXp5c1ErRzJ5TVBET1V1bEJPMWtk?= =?iso-2022-jp?B?UEJtdDdvZGwwMVY2Z1lNemNJaFBMb0pPdjlzbDRGM1RaUXA4ZGdTMG9D?= =?iso-2022-jp?B?WUdoMTNxYTJjY1dOUWgwWnpLalNBM0xrY29zcjE1ckV6c0JjR0lOS2pF?= =?iso-2022-jp?B?UW9RR0pRbVcrK3psSGJTS0l5SVJxNGpjN2ZwVjRlOVVKdGhSaElhanVB?= =?iso-2022-jp?B?dzhuWHhRbWZPN29nNGxyUDhKc2hTUEMxc2JoUEx6RWFUTEtUTlVPank5?= =?iso-2022-jp?B?NTNXaHRianJ2QlZuMG5FRGFTc2lnaHhCdWRBS1VDT2M3VkV5RWJTeUll?= =?iso-2022-jp?B?bS9MK3NrdWlBU25Qd1g2K3BjNzEzTXJwVjVWNVhuM2JQaDY1ZXBldVo2?= =?iso-2022-jp?B?WUROQzlvOHIycllzZzRXWC9uSitHTlRFVENLWFNFZDI2ZGtPVkJsdDBX?= =?iso-2022-jp?B?RlB0Wmk5MEZMOU5kNkY5dHBDaWxZbDNMazFFVWVzM05KK1VMQ2grbGgx?= =?iso-2022-jp?B?Ry81ZzNGU200MmdZMFhGRi9Nbm1oMGE1YUZjelI3TEFuSUtpbmZ4MFNr?= =?iso-2022-jp?B?eFJ4V3Vock5XZ3dlUzFHUTYxTWQ2NXYwUlF5UVM1U29DalJhNWh6K2ky?= =?iso-2022-jp?B?dG0vYzhxSjhaQm5MRGNYNUJENmhQU3VxSFM5aFRieEhzdjZ0bmpldE9H?= =?iso-2022-jp?B?SmxGaXlYeGZDdlhjTWNYa3Q4UFp1R2dyZGdWeFNURDF1RFh0d2Q2eDFK?= =?iso-2022-jp?B?Und2dDMzUU5pREtERm9zNGVUWkQ1TjB3YnZPS1lEb01NMlFTcDBIVUF2?= =?iso-2022-jp?B?YWJhNVdybWg2SkZhV2RjQm90YU1DZEcrYTRDUT09?= Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3673.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b92bf4da-9543-46f4-f630-08da4ab93631 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2022 08:14:16.4370 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6feiBINwhUMRy0cxBOg3Yk1CCSkeyOnQo7nVt9wcldydFxqrLb3gNODOl5/SMp59ttgHay3qx+4Bhwct780VOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3207 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: Zhang, Qi Z > Sent: 2022=1B$BG/=1B(B6=1B$B7n=1B(B10=1B$BF|=1B(B 16:07 > To: Liu, KevinX ; dev@dpdk.org > Cc: Zhang, Yuying ; Xing, Beilei > ; Yang, SteveX ; Zhang, > RobinX ; Liu, KevinX > Subject: RE: [PATCH v6] net/i40e: add outer VLAN processing >=20 >=20 >=20 > > -----Original Message----- > > From: Kevin Liu > > Sent: Friday, June 10, 2022 11:52 PM > > To: dev@dpdk.org > > Cc: Zhang, Yuying ; Xing, Beilei > > ; Yang, SteveX ; Zhang, > > RobinX ; Liu, KevinX > > Subject: [PATCH v6] net/i40e: add outer VLAN processing > > > > From: Robin Zhang > > > > Outer VLAN processing is supported after firmware v8.4, kernel driver > > also change the default behavior to support this feature. To align > > with kernel driver, add support for outer VLAN processing in DPDK. > > > > But it is forbidden for firmware to change the Inner/Outer VLAN > > configuration while there are MAC/VLAN filters in the switch table. > > Therefore, we need to clear the MAC table before setting config, and > > then restore the MAC table after setting. > > > > This will not impact on an old firmware. > > > > Signed-off-by: Robin Zhang > > Signed-off-by: Kevin Liu > > --- > > drivers/net/i40e/i40e_ethdev.c | 94 > > ++++++++++++++++++++++++++++++++-- > > drivers/net/i40e/i40e_ethdev.h | 3 ++ > > 2 files changed, 92 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/net/i40e/i40e_ethdev.c > > b/drivers/net/i40e/i40e_ethdev.c index 755786dc10..c708bdb0d4 100644 > > --- a/drivers/net/i40e/i40e_ethdev.c > > +++ b/drivers/net/i40e/i40e_ethdev.c > > @@ -2575,6 +2575,7 @@ i40e_dev_close(struct rte_eth_dev *dev) > > struct i40e_hw *hw =3D I40E_DEV_PRIVATE_TO_HW(dev->data- > > >dev_private); > > struct rte_pci_device *pci_dev =3D RTE_ETH_DEV_TO_PCI(dev); > > struct rte_intr_handle *intr_handle =3D pci_dev->intr_handle; > > + struct rte_eth_rxmode *rxmode =3D &dev->data->dev_conf.rxmode; > > struct i40e_filter_control_settings settings; > > struct rte_flow *p_flow; > > uint32_t reg; > > @@ -2587,6 +2588,18 @@ i40e_dev_close(struct rte_eth_dev *dev) > > if (rte_eal_process_type() !=3D RTE_PROC_PRIMARY) > > return 0; > > > > + /* > > + * It is a workaround, when firmware > v8.3, if the double VLAN > > + * is disabled when the program exits, an abnormal error will occur > > + * on the NIC. Need to enable double VLAN when dev is closed. > > + */ > > + if (pf->is_outer_vlan_processing) { > > + if (!(rxmode->offloads & > > RTE_ETH_RX_OFFLOAD_VLAN_EXTEND)) { > > + rxmode->offloads |=3D > > RTE_ETH_RX_OFFLOAD_VLAN_EXTEND; > > + i40e_vlan_offload_set(dev, > > RTE_ETH_VLAN_EXTEND_MASK); > > + } > > + } > > + > > ret =3D rte_eth_switch_domain_free(pf->switch_domain_id); > > if (ret) > > PMD_INIT_LOG(WARNING, "failed to free switch > domain: %d", ret); @@ > > -3909,6 +3922,7 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev, > > struct i40e_pf *pf =3D I40E_DEV_PRIVATE_TO_PF(dev->data- > > >dev_private); > > int qinq =3D dev->data->dev_conf.rxmode.offloads & > > RTE_ETH_RX_OFFLOAD_VLAN_EXTEND; > > + u16 sw_flags =3D 0, valid_flags =3D 0; > > int ret =3D 0; > > > > if ((vlan_type !=3D RTE_ETH_VLAN_TYPE_INNER && @@ -3927,15 > > +3941,32 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev, > > /* 802.1ad frames ability is added in NVM API 1.7*/ > > if (hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) { > > if (qinq) { > > + if (pf->is_outer_vlan_processing) { > > + sw_flags =3D > > I40E_AQ_SET_SWITCH_CFG_OUTER_VLAN; > > + valid_flags =3D > > I40E_AQ_SET_SWITCH_CFG_OUTER_VLAN; > > + } > > if (vlan_type =3D=3D RTE_ETH_VLAN_TYPE_OUTER) > > hw->first_tag =3D rte_cpu_to_le_16(tpid); > > else if (vlan_type =3D=3D RTE_ETH_VLAN_TYPE_INNER) > > hw->second_tag =3D rte_cpu_to_le_16(tpid); > > } else { > > - if (vlan_type =3D=3D RTE_ETH_VLAN_TYPE_OUTER) > > - hw->second_tag =3D rte_cpu_to_le_16(tpid); > > + /* > > + * When firmware > 8.3, if tpid is equal to 0x88A8, > > + * indicates that the disable double VLAN operation is > > in progress. > > + * Need set switch configuration back to default. > > + */ > > + if (pf->is_outer_vlan_processing && tpid =3D=3D > > RTE_ETHER_TYPE_QINQ) { > > + sw_flags =3D 0; > > + valid_flags =3D > > I40E_AQ_SET_SWITCH_CFG_OUTER_VLAN; > > + if (vlan_type =3D=3D > RTE_ETH_VLAN_TYPE_OUTER) > > + hw->first_tag =3D > > rte_cpu_to_le_16(tpid); > > + } else { > > + if (vlan_type =3D=3D > RTE_ETH_VLAN_TYPE_OUTER) > > + hw->second_tag =3D > > rte_cpu_to_le_16(tpid); > > + } > > } > > - ret =3D i40e_aq_set_switch_config(hw, 0, 0, 0, NULL); > > + ret =3D i40e_aq_set_switch_config(hw, sw_flags, > > + valid_flags, 0, NULL); > > if (ret !=3D I40E_SUCCESS) { > > PMD_DRV_LOG(ERR, > > "Set switch config failed aq_err: %d", @@ - > > 3987,8 +4018,13 @@ static int i40e_vlan_offload_set(struct > > rte_eth_dev *dev, int mask) { > > struct i40e_pf *pf =3D I40E_DEV_PRIVATE_TO_PF(dev->data- > > >dev_private); > > + struct i40e_mac_filter_info *mac_filter; > > struct i40e_vsi *vsi =3D pf->main_vsi; > > struct rte_eth_rxmode *rxmode; > > + struct i40e_mac_filter *f; > > + int i, num; > > + void *temp; > > + int ret; > > > > rxmode =3D &dev->data->dev_conf.rxmode; > > if (mask & RTE_ETH_VLAN_FILTER_MASK) { @@ -4007,6 +4043,33 > @@ > > i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask) > > } > > > > if (mask & RTE_ETH_VLAN_EXTEND_MASK) { > > + i =3D 0; > > + num =3D vsi->mac_num; > > + mac_filter =3D rte_zmalloc("mac_filter_info_data", > > + num * sizeof(*mac_filter), 0); > > + if (mac_filter =3D=3D NULL) { > > + PMD_DRV_LOG(ERR, "failed to allocate memory"); > > + return I40E_ERR_NO_MEMORY; > > + } > > + > > + /* > > + * Outer VLAN processing is supported after firmware v8.4, > > kernel driver > > + * also change the default behavior to support this feature. > To > > align with > > + * kernel driver, set switch config in 'i40e_vlan_tpie_set' to > > support for > > + * outer VLAN processing. But it is forbidden for firmware to > > change the > > + * Inner/Outer VLAN configuration while there are > MAC/VLAN > > filters in the > > + * switch table. Therefore, we need to clear the MAC table > > before setting > > + * config, and then restore the MAC table after setting. This > > feature is > > + * recommended to be used in firmware v8.6. > > + */ > > + /* Remove all existing mac */ > > + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { > > + mac_filter[i] =3D f->mac_info; > > + ret =3D i40e_vsi_delete_mac(vsi, &f- > > >mac_info.mac_addr); > > + if (ret) > > + PMD_DRV_LOG(ERR, "i40e vsi delete mac > > fail."); > > + i++; > > + } > > if (rxmode->offloads & > > RTE_ETH_RX_OFFLOAD_VLAN_EXTEND) { > > i40e_vsi_config_double_vlan(vsi, TRUE); > > /* Set global registers with default ethertype. */ @@ > > -4014,9 +4077,19 @@ i40e_vlan_offload_set(struct rte_eth_dev *dev, int > > mask) > > RTE_ETHER_TYPE_VLAN); > > i40e_vlan_tpid_set(dev, > RTE_ETH_VLAN_TYPE_INNER, > > RTE_ETHER_TYPE_VLAN); > > - } > > - else > > + } else { > > + if (pf->is_outer_vlan_processing) > > + i40e_vlan_tpid_set(dev, > > RTE_ETH_VLAN_TYPE_OUTER, > > + RTE_ETHER_TYPE_QINQ); > > i40e_vsi_config_double_vlan(vsi, FALSE); > > + } > > + /* Restore all mac */ > > + for (i =3D 0; i < num; i++) { > > + ret =3D i40e_vsi_add_mac(vsi, &mac_filter[i]); > > + if (ret) > > + PMD_DRV_LOG(ERR, "i40e vsi add mac fail."); > > + } > > + rte_free(mac_filter); > > } > > > > if (mask & RTE_ETH_QINQ_STRIP_MASK) { @@ -4846,6 +4919,17 @@ > > i40e_pf_parameter_init(struct rte_eth_dev *dev) > > return -EINVAL; > > } > > > > + /** > > + * Enable outer VLAN processing if firmware version is greater > > + * than v8.3 > > + */ > > + if (hw->aq.fw_maj_ver > 8 || > > + (hw->aq.fw_maj_ver =3D=3D 8 && hw->aq.fw_min_ver > 3)) { > > + pf->is_outer_vlan_processing =3D true; >=20 > Why not just name the flag as "fw8_3gt? >=20 > Then you don't need to repeat explain "when firmware > 8.3" above the > is_outer_vlan_processing flag. >=20 That's a good idea, I will send v7, thank you!