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 C1D9BA0540; Tue, 14 Jun 2022 05:06:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5CC124068E; Tue, 14 Jun 2022 05:06:48 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 5ED4C4067C for ; Tue, 14 Jun 2022 05:06:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655176006; x=1686712006; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oI8/vxbNQOhgtlHOk6h5pdKTCwUBnoLagpKHM/cdN70=; b=cNde/6qt6LR0pNsbp1QVYn7UTLBJW9LgQNvlY/B6YgE2GTQqIz1Za9m+ 2QG4zqKK8XnC8ba/nMsEZj5KfhffdWaeNepOnfGujzl22p4xuq6jK1TFU 4ST2a3NlTJmfvVZK2T1spuuO720P7mrdQQyktBfEVxN4dBFe0Un9/PiyL /JofDKcbKOayHSVDIN6Jkr2mk4zqd/mMYBBpOW1Y3qaRtpQt6/kP+LBas OyLGCWsh5QeVx3qVVAspGZ+jsBgKFqJXPphdU+OIIZ4yUCme8XaDsL+9l buDUFsRgRGQZ/CG0d8thqj1qXYCD4TXFOFyJ3afBdDOnLrd62qJqdoOW4 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="276018763" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="276018763" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 20:06:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="588172314" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2022 20:06:45 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 13 Jun 2022 20:06:44 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 13 Jun 2022 20:06:44 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 13 Jun 2022 20:06:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Agmqj2O/FdSQfFTEgI7yWk2CTNPtm616UUosc7c0/VhgZ69Ypp/ARp74I+67UukPLT9I6g72/QimfzbVny6EtsqA+xS9btlY4KNkQ/MfqTjbZ+NhsSkdm34sAizJHZOCX2m4eR7IERN3ZNYNYMlBjZdWQjSKWT5Dtv9cRMHHGEKGAOO4L4VBjVPLlnCeE3KWqbt0VAzTViscnY+mv4jC7+oc+kXQSWf0GTcyoLAMcVNyhPGq9hnnQuosQBOPcp40N08gi31hsE9uCp/asradkH4egBtu/0Rj4BaiT4qJXig9bxtpH4b3rm8hGxxalY9RrYr+aS4HnKqT5aTY2PSBug== 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=IRJ3JNc8tuG0bjMz3eEvBX/mF2FPo3Wkgd7DbtCbQ/Q=; b=dLRB93ybvsLPlP68GoLJHokspdSVvJF9SqhFgGBSolDIT+rOnaAQhCa+IA0DLJneosf/BylJSRXbH989l3SrQtR0wfSj0hMqQKjfScmap9XPqbCwEetHdiE1f6EJYbLn4pdNZ87g6k/VM7uyjr23jrK0WdhxUL9ddVthG+wKXkgwNTz0ozu56OedulVwy2xrgQhAoJvPg8uPgk55jyf/Vrm2Rt27k7rZfpuZE5HHxUwyOjAKK/ozvlICLNgzoKXAYMATFRHDtHT+l38vojwaoUJrN3IoTrGJvIcis17Co1E1otD6xvz+MBbt3SQIqWDyTPqscWWYtVYqspI5ioQg+A== 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 BYAPR11MB3544.namprd11.prod.outlook.com (2603:10b6:a03:b5::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Tue, 14 Jun 2022 03:06:37 +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.022; Tue, 14 Jun 2022 03:06:37 +0000 From: "Liu, KevinX" To: "Zhang, Yuying" , "dev@dpdk.org" CC: "Xing, Beilei" , "Yang, SteveX" , "Zhang, RobinX" Subject: RE: [PATCH v7] net/i40e: add outer VLAN processing Thread-Topic: [PATCH v7] net/i40e: add outer VLAN processing Thread-Index: AQHYfKRlbKPdde+F/USGyq3kCtM4PK1ON8cAgAAExMA= Date: Tue, 14 Jun 2022 03:06:37 +0000 Message-ID: References: <20220610155216.81289-1-kevinx.liu@intel.com> <20220610162944.99526-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: 29d9aaaf-5320-4918-fb65-08da4db2e543 x-ms-traffictypediagnostic: BYAPR11MB3544: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: ebp5qr5InZWjZg0WEGJYpIRu6+S6n73QnCkVWeqc37tCNfPbpBJlDen5vZDdQg5Lj7kI/hJIqYrwlD7cY4nPZI84+NamXBvfq/lBp2erRqM/uoRRvPfAUPa+/9WKPkHNTwEveGCWrJLGSgMTmn+SJDV6ocYjIwUyFb2Lcq2zHzSH2bwT/hGoMebbYqq50MKTbErt4OzfzWj0E7LVHtXqJeMHC8YqBlE+OarBUDHY93LboRFu69r7VsafwBW97ucjvwa1v1Y99TUAfSI9pHTkfMCT6BI2NodMiSWlB+wLyHWqnq0cXAce6dRdpV29rkvSfx/G2Do17bYzCTVjwH3EJpF+v1dkgnY1KSkuhbLjW8TDeeyblpuyhQ3Xq5PEffvwCAklDieOK8hwhqp0bMtO7OLN7XRDP+aLmYXTkh+19sLJirOQUhOrUop3Q9hJ73A0IsRu72B7LgMpI1YKd/C6nIv04rj1dabeuMd8GqZSjDaezWUjH7h+JriApRmgQXnJBqm0MVXdkO5scx+DvrK32l2i4Du3xF2LIE4I9Gbj8yY9QJXPJ9aAHiOXO+ECP5ecC+OEEhvWlF1i7F2ocihGUyHh46Dr+pglOtY0r02gPgg4EJuKuVtQoznbhUIZH+qilKGplGXKGTzcqu5iDwyPtX+NOmc0pSuJm97r22exlkyjT9bEmEE2yYsWf4AAAO68DStKtJnwZ2LPwyogEpa0nA== 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:(13230016)(366004)(66446008)(110136005)(66476007)(66946007)(2906002)(7696005)(53546011)(52536014)(8936002)(5660300002)(122000001)(83380400001)(508600001)(33656002)(86362001)(6506007)(316002)(38070700005)(55016003)(71200400001)(54906003)(107886003)(9686003)(82960400001)(38100700002)(66556008)(4326008)(8676002)(64756008)(26005)(186003)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?NklmQlZxQXArZFRGV0oxU1ErNzBzL21td2lCb3dmNHAwblVzcWpaM2Vk?= =?iso-2022-jp?B?U2E0TXdkeHF3QXJCdC9kU2ZWTmp5TFhnTmFjNmNlTjVHTGk1Z0dSUTBy?= =?iso-2022-jp?B?THg2UE1GbmFZU0l6dnNvbjFOaHlzM3hnT0hheXRWTWp3VVQ3ZEhteFlT?= =?iso-2022-jp?B?OVFkTEVnaVZZcnpUekpjNDd3MVRJeUVXUWlIOFFsd010OHU4N0E0cFM5?= =?iso-2022-jp?B?RXVJaUlEWldkSVdleUJxWllYQW1RaWRRS0JmSHMwN0hpa1BYMHhFNk4r?= =?iso-2022-jp?B?NytwTU1kekpkUExuaEdTUCtSc2JtYXYwUGZQaVU5RE9QOVZiQlhPbFUv?= =?iso-2022-jp?B?QzcrTG9YZDVLMWNwSHgvdk9JMllnbnlhZTdUZy9UbWlZbjgyWk5xQVhv?= =?iso-2022-jp?B?emNIN3NHQm1BR0kyS2psSEwzUEgydGtDMkt3WTNQazIwb1JXdjZJQ0hk?= =?iso-2022-jp?B?RlVTZXRzZVA4WDB3bm56VHA3NmFjUFRRd04rcUpVNERMS0ZST3ZzNlZB?= =?iso-2022-jp?B?YWt1VDRmZkt3L2VCempUVUx2bUllUlZqWFFRczVUQkRWN0s4OWhlcUpG?= =?iso-2022-jp?B?S09JL1hvWmlNc3RTWXd3QURFR0VEalRmZXlkS0ZocVJPb2Z3RXhwVWNx?= =?iso-2022-jp?B?b3NLeGhhZEMxRGJqZktYV1hHUGJqdk1yRnd2eHhaekFSTXFzVUVMZDJs?= =?iso-2022-jp?B?WGZQd29iNHZtUHZRN09wSTh4VGpJZnNGeDdKVGlMdE95bWVRNUl2dCty?= =?iso-2022-jp?B?S2tGcEE3UXN6TkI4Q0p2eWhORWNWUzgyaTFvNEZaMStqNUFoZVFVNXdZ?= =?iso-2022-jp?B?ZGcrZ1JLR204eENqQmFyMWxCQlpJSlczNzU4ZGI1NHJKV29XcEw5b1VY?= =?iso-2022-jp?B?ZEp4RFUwSDdQRXVWNXMybTk3SEFTVjE0SVJ3WXFBdytJZlQ1ZHlucmEz?= =?iso-2022-jp?B?ek5xVVpUY3lxbmhEeHQvcksvbC9teUt2VmQ0dlNNMXllOTdPazNZRE1l?= =?iso-2022-jp?B?SEF2M2RQcldISmNxb2hmSTZ3TTFobGIwaERRYVpUbE9iM29Hdm5FSTFD?= =?iso-2022-jp?B?UDVyWE95eDVwTmppTENnYW5DWi9ndk5FNmQvcHBXTmc0WnZpWjNpQURZ?= =?iso-2022-jp?B?SFg1U1V6WElFVTJpY0VIaVNvRVpxY2VGem9TUHFVYU0yMmFIOEplTDBU?= =?iso-2022-jp?B?WkF4bUJkUkNXWkNiT0FHMlVOdjI5dmJnSjA5L3pwRHdXaFBiNVVzWFY2?= =?iso-2022-jp?B?ZGV5bWNpMGgwaDZSL0JkTXdIS0ZQRGZ6Ymg4MThjY1gxSkFVMUdvMUNh?= =?iso-2022-jp?B?Z0gvTE9rVU9mdnM2MytPcGYvcGYzeW4zdjJBU000cHRrQUNPL043WGo5?= =?iso-2022-jp?B?dFhNSHFxUDdUc3FPYlJGbU16amVqbDlxazY5NHdpQk85Qk90YjB2THpz?= =?iso-2022-jp?B?TklHQWZTSnhCMDY2dWd4VlAxS0Q5bUV6T25KcWxqeVVRVVE1eGdrTDVm?= =?iso-2022-jp?B?eExoVzFLZXAyQ0FZWVREVzlDVlE0MkNGWjEyV3g4cjhRUU0zV3lPQml1?= =?iso-2022-jp?B?Yk9kQ3ZFaGFudWlKL0dUYUdkYnl5OFl2b2dTZnNuUjlkbkhTWTl3dU5Y?= =?iso-2022-jp?B?NlRnR3JaMFgzS1dGdm5iUkVyT0F5bUQ2Y04zRVErQ0JuZzlYMXdmQXdQ?= =?iso-2022-jp?B?S0dKczhMMnpUNDNRRE5veWRMK0cyWm1lRmZTRHZ3OEtmY1NpVEZ5SWsw?= =?iso-2022-jp?B?OHplbStwQm9OY1RyWjB3S2w1UkRieGZib0djQUVySlhhOG1ralNZTlpu?= =?iso-2022-jp?B?d2hiZ3pQY21iSDZLQjdpZHNxeUEyLzZJZGtjZXdYeVRGSzBQbVllNjdQ?= =?iso-2022-jp?B?cWpsVVVrYitIV2xURm1lUHNYcG9UMlFXMjlkcWVBZHBmN3hrYlhyWnJ2?= =?iso-2022-jp?B?UHRlT0xOSmFTR1h4OU1xU1hnTmJwN3Bxb29VMlhDdlJxdkRrQkI0N3J6?= =?iso-2022-jp?B?UUt0cU5XSHNvODZSQXlZYys4QTYwVWVXa2tCOVQ1WDZBZGNBRDJGNWJG?= =?iso-2022-jp?B?WEJiTkZIVCs1cFRYV3BKYnQxRW8rLzdUT3l0VW1OQkV4dkVqZFNjYmJV?= =?iso-2022-jp?B?NGIzaWkxS2R2ZURac1dMSHNOanBIN21NbXZFK28yQUREbW50cFFMYVlk?= =?iso-2022-jp?B?emt1V2ppMHdsWFVweHZRdTRSMWZOalo5QUJHQk1qQTNrck5qdVVRWFBq?= =?iso-2022-jp?B?MWVhVnBSSHlRZitwSXE5bkx2UGFUaXZEcGV0ZWcvM0dKSjN5T1RaTURD?= =?iso-2022-jp?B?UDh2bkRJTmZwMEhIeGswVk9rR3BPaTg0QmhLMFhjOUdmRHVaenJLT2lN?= =?iso-2022-jp?B?U01Qdm9PMFJ3b1kwSnVXZzdYaDQ2bW9UYk9FbEJZdVF2TGpUa1NNTjNG?= =?iso-2022-jp?B?SWJuUitWQ2pOOHZseGs2YzdHMkttMDBSbXZZRkJUOHl5UU1HZHJ6OEQy?= =?iso-2022-jp?B?NTJRcjc4SkhHYWhRMGVMNkxvZEJxNDVJdHp1QT09?= 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: 29d9aaaf-5320-4918-fb65-08da4db2e543 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2022 03:06:37.1989 (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: Db1rHtx5jkNE6k2e+NyHAPDZQhhPGmgnDqU6FMAYNBCVgpsd1RQOQoLHCeyBbHPVT65yweDNV5igL9+akF82Zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3544 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 Hi, Yuying > -----Original Message----- > From: Zhang, Yuying > Sent: 2022=1B$BG/=1B(B6=1B$B7n=1B(B14=1B$BF|=1B(B 10:44 > To: Liu, KevinX ; dev@dpdk.org > Cc: Xing, Beilei ; Yang, SteveX > ; Zhang, RobinX > Subject: RE: [PATCH v7] net/i40e: add outer VLAN processing >=20 > Hi Kevin, >=20 > > -----Original Message----- > > From: Liu, KevinX > > Sent: Saturday, June 11, 2022 12:30 AM > > To: dev@dpdk.org > > Cc: Zhang, Yuying ; Xing, Beilei > > ; Yang, SteveX ; Zhang, > > RobinX ; Liu, KevinX > > Subject: [PATCH v7] net/i40e: add outer VLAN processing > > > > From: Robin Zhang > > > > Outer VLAN processing is supported after firmware v8.4, kernel driver > > also >=20 > Since this patch can only be enabled with firmware v8.6, should you sync = with > dpdk here? OK, I'll revise it here. >=20 > > 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..4cae163cb9 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, 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. > > + */ >=20 > What is the root cause of this error, I suggest finding a true fix instea= d of > adding additonal process here. About this error, dpdk has reported a known issue. Because it doesn't know = the root cause of the problem, it adds a workaround here to temporarily avo= id some problems. >=20 > > + if (pf->fw8_3gt) { > > + 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->fw8_3gt) { > > + 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); > > + /* > > + * If tpid is equal to 0x88A8, indicates that the > > + * disable double VLAN operation is in progress. > > + * Need set switch configuration back to default. > > + */ >=20 > I don't suppose we need to set qinq tpid in vlan case. Please explain thi= s > situation in details. I'll think about how to explain this place. Thank you. >=20 > > + if (pf->fw8_3gt && 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->fw8_3gt) > > + 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->fw8_3gt =3D true; > > + } else { > > + pf->fw8_3gt =3D false; > > + } > > + > > return 0; > > } > > > > diff --git a/drivers/net/i40e/i40e_ethdev.h > > b/drivers/net/i40e/i40e_ethdev.h index a1ebdc093c..fe943a45ff 100644 > > --- a/drivers/net/i40e/i40e_ethdev.h > > +++ b/drivers/net/i40e/i40e_ethdev.h > > @@ -1188,6 +1188,9 @@ struct i40e_pf { > > /* Switch Domain Id */ > > uint16_t switch_domain_id; > > > > + /* When firmware > 8.3, the enable flag for outer VLAN processing > */ > > + bool fw8_3gt; > > + > > struct i40e_vf_msg_cfg vf_msg_cfg; > > uint64_t prev_rx_bytes; > > uint64_t prev_tx_bytes; > > -- > > 2.34.1