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 92DD7A0540; Tue, 14 Jun 2022 04:43:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3AA654068E; Tue, 14 Jun 2022 04:43:38 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id BE6B04067C for ; Tue, 14 Jun 2022 04:43:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655174615; x=1686710615; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=En+vt8qBIzWSqZ+Xb2Jb3/dZKGxjgroRpMT2tcHGPKU=; b=myNGRn4xMwcAXhJUpjmyk5Y3W4N2dhuljyGYFKm/7ZYhdHnrn2KKE62w TBTfhjBqvZtrUYpAx2mnUsFLl7e1btoEyzzqgAeuq1KRu6cZ8LphQrIzp LWp4ZbZa+4n5gduEg17hwgPvlDfA4CPj4rSOpilDQ1sA6y1ZYXfSBhjZ6 67b5rqO9RWemHJ7BiY0wwIEc+yup5kFAJ6FJBahl6FcMx1dECUL3U7oxB h72zxt/Y5JXVST8KD/Ry+wnj62KAxx7O7MfFU4TFFhMiLY0PJ7mQJpy6O TofwFnWIAK0e1Qm9vY5MWqnauqtE2R4ZTv8mVXTQ+9Lwz3qqXDiPgsup5 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="303884989" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="303884989" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 19:43:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="612038109" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga008.jf.intel.com with ESMTP; 13 Jun 2022 19:43:33 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX604.amr.corp.intel.com (10.22.229.17) 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 19:43:32 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX608.amr.corp.intel.com (10.22.229.21) 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 19:43:32 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) 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 19:43:32 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.177) by edgegateway.intel.com (134.134.137.100) 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 19:43:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G5ELabCvW7Moi2tyNjOxzt/WB77TzIuLLztaBaVwkvPFvgnRJYZrNMaMPYALkiB22V6ARNg5IG8aLrMLz5oUj7pzgSOd6V0Sd/1rnBYVQDxDDi+y613vOYetvxoxtep2y6iN/xlaoxsIn9EUDd5tctkrbAWeI7F5U083H7dau/XLdqLBZZY7ZEF9q8AArFZg1o3vb7USpOsbK6f2aZouuMwgQMHHwU81tx2v6sM2Cqio4WRy4DxJXwY0eEiHQPXVktXqtJs7gZcmeO2aL2l2L5yejjFkQ38uyTyLiW3a+SATxMtzLVLwYxLZrVVsd+/s2dhedbnW/kP99O0oKLxa/w== 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=mP/r+V56K17QjJ+zzcxeGsOrGhOZJDs7W5+Zk035JDc=; b=bPrxzGKiyUESuxEN0JXNuALGIBx4OY0AfofrgrS0pPGGzqwfm7DDjJPytb8D4MCFBlBGBjuApY4wTeb+/gX3K5KYRsPJraInZGrPPo6KPSxenKglS5V+XsKAH4W2ujDY3N4WLmnabnucUVRSymMECgnUGuY+yeiqfZulNgeUNt2jRdcAIUQKt18u0QvD5uCvhzrCx1PE5/RDtTA/d4X+WXpAdKECY6nSuHGJeEdEoS3oxVESIcYGtJMRxtA6qKyHDO6oi7Kb/ZV3TmouL7+J77qZAW+qFrx4kjhb+T6KQtOS7cMzMdtzTt46N4K/fCh5DhCTukQmSwkS2pvPTX9Isg== 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 DM6PR11MB3516.namprd11.prod.outlook.com (2603:10b6:5:72::13) by DM5PR11MB1804.namprd11.prod.outlook.com (2603:10b6:3:114::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.16; Tue, 14 Jun 2022 02:43:30 +0000 Received: from DM6PR11MB3516.namprd11.prod.outlook.com ([fe80::187:4143:ba20:d362]) by DM6PR11MB3516.namprd11.prod.outlook.com ([fe80::187:4143:ba20:d362%7]) with mapi id 15.20.5332.020; Tue, 14 Jun 2022 02:43:30 +0000 From: "Zhang, Yuying" To: "Liu, KevinX" , "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: AQHYfKRlEzo/f4EM40yrICifnG4Csq1ONfGA Date: Tue, 14 Jun 2022 02:43:30 +0000 Message-ID: References: <20220610155216.81289-1-kevinx.liu@intel.com> <20220610162944.99526-1-kevinx.liu@intel.com> In-Reply-To: <20220610162944.99526-1-kevinx.liu@intel.com> 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: 3e89010e-c353-402a-a9ea-08da4dafaadf x-ms-traffictypediagnostic: DM5PR11MB1804: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: AnmXZdZ6+QMeRXCSYlnkrkGt5CS+Iq/epy3MvJquPQyCW6c4kkB/kvfNy4hKnyUQOAkBaGyST8DckCClYOplVAhE7fyzH/kkKp4SPigg0btXAR6EmYEjW4/ce2SPqyniN6474orKbOxDrCrLZOr08TWNV6pXRmO4pOzHVqQv7dlduqiZCReR0ZCx7wNaPRE78dy5E9+xqEdVjrkuTh7e25rYTtYR2gqkXaeL/jRqZzT/liI/eoSbxpI7gYvagO93ftsvfRERLXXSxv28j0kazsJJF2khE7LC0d01pb7GeDfYMCnlVdjIFHkzRnPZ98AY2mJL8wI7xUqYQ/3Jm4dIt6rW34TV8pEkfc3dn2nKbkrLUlV7bQDS8IIZWKoxLxBvEWt3JG5BOvykFM1ofCUOeTurPlIe6lIlEg3CEuh0dt0i+HYArWW/06KUBKyeSF8WX23UAsSf3/RGJCHH6ZpXkEO7MMjXDIyHqyBZBQSPJsLfQFLbswz3f6Yao1M93lzvSqGoYgoGec/BZZcCXYQCOAkwXTs9mKqy/KzkbfB17muaEt3nkKITA3HdezCAgAuUoNL29BLPkt7LVxRLbJvNjXVPGBJjMKCFU6ftIcU3VtMEVQjtmOEFd/Vu2RCd6AcGNmhezGjXxWKfCW/IV+VqMZDm8eQ6vU/F8drz0ZhSgPwUtBj3GUzXSLnNCOBYuOLeJ60QKmxydwg3LwHC21LpAw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB3516.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(366004)(55016003)(71200400001)(8936002)(5660300002)(38100700002)(82960400001)(33656002)(508600001)(83380400001)(186003)(66476007)(9686003)(2906002)(122000001)(52536014)(26005)(6506007)(53546011)(86362001)(7696005)(110136005)(107886003)(54906003)(316002)(4326008)(38070700005)(66946007)(66556008)(8676002)(64756008)(66446008)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?WsXDZVc/NHAr0/ao69bWOZb6Gsv/D5vQnk4O/LQ/JXDrQ5OL+w8sfho2lODv?= =?us-ascii?Q?3Te6AB7LkDVHlbTAn5sktUmsqTbD/+fd84igIGzfLGq6D59DYde696T1naHr?= =?us-ascii?Q?bJ75MfSc5wyMx5Hejjtzve6QndCD4QAwwcL2lOQtLcvcEg4oMHG8xgH5kkws?= =?us-ascii?Q?vI0vRjs3+3tLKdyrzi+fRvur5k0ZqVnAnBnLiL0d0pTJh9ZNh7QUW5ptnPIg?= =?us-ascii?Q?2kRR3gIOmHCQtXMiWdcpf8Whuqc5aR5ty1tggXn8+JvOEj48IvZmfH3887rn?= =?us-ascii?Q?cXgpNXafuHEntNgmK4VU/jKXzDDzasDEZjUuBvCPLUCRBUNvjodR0jQvT9t/?= =?us-ascii?Q?wTUMUs6Hdq+Q0eWVcYc9myRU0QkF5o1s8HkSh+WdX2MO26X+KHBMjfq92ssr?= =?us-ascii?Q?Ab3lzmn0avbfz3QZ8ATK2O9RtsGGqEBjfFH12ut0p/LxD5Y5eLG0w9+9SCMD?= =?us-ascii?Q?MfwpajIsIW3CVc0zHyFK9tBF3Nuc8PfpTZUAsiPnwUJdENnDLWbdYEBPvqI/?= =?us-ascii?Q?XYLydKvrvujO0Hy23peVRhzv3DEsx57BRAjujmW5jPxqrF17oSAXnCAPZSIC?= =?us-ascii?Q?VhMn7MJjUcMIJ6hXBOWCpVakcgf6b+S99y0c1Sa3POq9AxwOrL6lI+XAnDfm?= =?us-ascii?Q?7V8G708F+Cn8E7/fQB83M4L1RfSW4muMV/tApulF5x+DDQ9/hbX8+v6QamEs?= =?us-ascii?Q?DZGr4jfv3FDArwaKWjDLOHXdouzOntDd+JPpsyHazYidiIZycqxPsUaQf32J?= =?us-ascii?Q?GR6bXVhCf7BsHWGK/YAhDPlOD0eJP0cpJ044IVxgYmY10FFG4Tdo2BepTyxA?= =?us-ascii?Q?mRslI4A3ZFtSN5NEJ1yGrwnyERXLxnAA2sWJ68qi5/kyNXa40rE9svs+8O8l?= =?us-ascii?Q?//+N2WAuWaBeXSWT9FfKraA9PMUDIyDd63AIfL8H6S4UvZSGeplIhSg/WOUB?= =?us-ascii?Q?ZMG2gYExEnCyMo8KYrdUwKVQHo0hePA9ZITJ1v6ZtzHHcEunLNXQiweuaVbv?= =?us-ascii?Q?MBnoPeONtUjonCiaS/ZohSV3bUUmNruce37DR1amcVYhJ1zriaO9kK6ApF+f?= =?us-ascii?Q?lLQrG98Fyr9yzGiVDmlW+WWyprlnhJZymIIWuDgMhVw+aCeRZKFYzZNiMY5U?= =?us-ascii?Q?+dw71spHULK2OCxL2VS6DwLSUIejSV2H7hs7etxurKnv+8i77eO81J0Hhbbj?= =?us-ascii?Q?/RtstU4LYazBwz10Ru8CoGJe1J/VTQOngFxLYpQDS8ZEkRx8v9YOnRt/y3z6?= =?us-ascii?Q?fMAv5IKpnEO0gEsnGmloSvuNKy8oOm6+tF44K4aIn300EKRuHw8raA6pu80n?= =?us-ascii?Q?JDElHKVMuMj7Y9f2uQgKpkobqjtYmSjeClwuOImSvJdmeER0Vzrx6EncXvhr?= =?us-ascii?Q?f+ZyjWiPLmZBtLgF8P55cSYEryLVfgt2eFIBA6vh7Ya1/1UerV+yyAaD5O/X?= =?us-ascii?Q?1Ye2WCFDybhadr4kveUbjepXuORg1A5Fozfhx7AXcNxz5pUeoaJ5Lw3sJHcQ?= =?us-ascii?Q?6+eWX8UHQUY5Bim6fQmwJk9CSBe90W4mSrDVs1zlF/rcTEeN2BfGCFExO4jX?= =?us-ascii?Q?5q3E5UscHn5y5lkrUmJq0GxpCj5Aqq2D/lhYHcCnOlxkvyZr1P8jYaXvVxxO?= =?us-ascii?Q?wokHUypsQUYFfMC8xjULcqiSfY7XHJa8O4qMjeydyWMBA6NX+wbHMYaw++q+?= =?us-ascii?Q?zSil7wG65FY8rc+setxiqEQC2BDKTIqtLzg5NFpg1S175C1UkpWuV3NK7R3z?= =?us-ascii?Q?J/2eZzA+PQ=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3516.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e89010e-c353-402a-a9ea-08da4dafaadf X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2022 02:43:30.7121 (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: 5ksA6m4f3G5QJReYUqUhE58Yy2CAmcUXO6GuOYGjhfGd3rZAGcsEUlU4XHmvM3ndaLJRYQ5NLW8epNmLjmey8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1804 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 Kevin, > -----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 >=20 > From: Robin Zhang >=20 > Outer VLAN processing is supported after firmware v8.4, kernel driver als= o Since this patch can only be enabled with firmware v8.6, should you sync wi= th dpdk here? > change the default behavior to support this feature. To align with kernel > driver, add support for outer VLAN processing in DPDK. >=20 > 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. >=20 > This will not impact on an old firmware. >=20 > 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(-) >=20 > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethde= v.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; >=20 > + /* > + * 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. > + */ What is the root cause of this error, I suggest finding a true fix instead = of adding additonal process here. > + 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; >=20 > 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. > + */ I don't suppose we need to set qinq tpid in vlan case. Please explain this = situation in details. > + 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; >=20 > 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) > } >=20 > 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); > } >=20 > if (mask & RTE_ETH_QINQ_STRIP_MASK) { > @@ -4846,6 +4919,17 @@ i40e_pf_parameter_init(struct rte_eth_dev *dev) > return -EINVAL; > } >=20 > + /** > + * 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; > } >=20 > diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethde= v.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; >=20 > + /* 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