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 A28E8A00C3; Tue, 18 Jan 2022 06:31:30 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 75403426E5; Tue, 18 Jan 2022 06:31:30 +0100 (CET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id 831C54067E for ; Tue, 18 Jan 2022 06:31:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642483888; x=1674019888; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=HngD9eq1YJNsxWJKVewyRXGfEo16B3rYPxxnLG1p57g=; b=TVZxJn1XSZmcjQ5ozbrRQm2BgJzRyqYEkV2YoWVjIKMpMVX3EbwUGA2c +bhQXbM/6HwiFNnqV326MQw1XhggIXZoHZnvrgM4ur89OjSsKwRkOdM1O 0StslveNno9JQYVXzjNvmuCsw+iRUH59RQAvXRtwwcbaghUDtjm+1J+QX hYUTkmhwGfB5i5zYOCgF8r5bi0eEtQGJa5OF+hD69JW2Mde3Q38AhfCYC /wad9zjo085Sks2DIdhZDGkEwN/aa1bY5GQRMqN5uFUIpo2FQV+Lsxj0v RyVMV4LCoD0kaBtWyFWwb/DR/OE10L4/7VCeNAUauNy/m6Y3+T9eNAoFZ g==; X-IronPort-AV: E=McAfee;i="6200,9189,10230"; a="232101798" X-IronPort-AV: E=Sophos;i="5.88,296,1635231600"; d="scan'208";a="232101798" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jan 2022 21:31:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,296,1635231600"; d="scan'208";a="693275466" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga005.jf.intel.com with ESMTP; 17 Jan 2022 21:30:44 -0800 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 17 Jan 2022 21:30:44 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) 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.20 via Frontend Transport; Mon, 17 Jan 2022 21:30:44 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Mon, 17 Jan 2022 21:30:40 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jJfVcEm7RDMCAKFjqc9iUZASjGN+9zZEbz6MB4pb3st11RsZ5eSWqzLheXRoETvHlLDim8rtI2q9XWTRtnacVoKbGe1aHpwO6aFUzjgZ5fuVUKMLEO4q6SUQDIeEYWkoKSfKTrEihtJiPBmuPajh90mSY3+PQyQzP7JolEheA4h6v9O5MJy02TxLpVOvto49jsgnXHeFJ6gopbnyOVa4yJZ1A6l/8e4J+coTgQUUV/MaRyj6nFwg6EGpwM+QUZvCJuwaUeDUWZwgCNrzQPxfAZYLJUa+eRl6cwcNKElM1eoIlQVxGQAdO0oemv2wEWMIHxUo1ycqFXvST9X5yORqow== 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=T5b69ybhZFt28qfV5NaDST/W2E0s4r/6srsb8d0EUsQ=; b=Oyzl9/NpyPB+vhi5hA6sxU3o2rn4LARs+CUqZoDnI0flslT2Rh674sL2xJhKvLR6jK6Bgn6Uitbf4BX4NQr4Ltl1fzNPMuV2JuHZCqRCBO6SajPC6IN6AokMTP8JOH1UcYpubvDEcWjutnLUUo3I6QFXMJ237gKKfdByIgrbO1SHSBIhU96Bjf19COE8HwaHmu0x4nnzJW40ZOFJBNAQBa8ec8RnURJcLkLRGH5xYoTN/L2lcRkzKRs0I4KiW4W2hcV439G9hBBqFg5l0p+z99zeBrdEj09iaAaHZkqWP6O3ui0XfFg6747fPZjlVlEhkxhdO1NoxVXgp8KB8SQbxw== 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 SJ0PR11MB5599.namprd11.prod.outlook.com (2603:10b6:a03:3af::21) by BN6PR11MB1889.namprd11.prod.outlook.com (2603:10b6:404:104::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.12; Tue, 18 Jan 2022 05:30:37 +0000 Received: from SJ0PR11MB5599.namprd11.prod.outlook.com ([fe80::d977:eec7:9638:3202]) by SJ0PR11MB5599.namprd11.prod.outlook.com ([fe80::d977:eec7:9638:3202%8]) with mapi id 15.20.4888.014; Tue, 18 Jan 2022 05:30:37 +0000 From: "Lin, Xueqin" To: "Tang, Yaqi" , "dts@dpdk.org" CC: "Tang, Yaqi" Subject: RE: [dts][PATCH V3] test_plans/cvl_switch_filter_qinq_test_plan: cvl support l4 for qinq switch filter Thread-Topic: [dts][PATCH V3] test_plans/cvl_switch_filter_qinq_test_plan: cvl support l4 for qinq switch filter Thread-Index: AQHYDBWN07WpNbSX1kyENcPy4Ixh+axoQBjw Date: Tue, 18 Jan 2022 05:30:37 +0000 Message-ID: References: <20220118104408.180763-1-yaqi.tang@intel.com> In-Reply-To: <20220118104408.180763-1-yaqi.tang@intel.com> Accept-Language: en-GB, 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: d4a35785-0665-4e4b-fe64-08d9da43a8b9 x-ms-traffictypediagnostic: BN6PR11MB1889:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DCaLLRQfXFxOoN1NsTAY/r2NBQwbXVTzloENT/XmQPtrRkNQlaVjjN/DHuuKEZ9ZjTRW6cKd5tjafO8TPoU6T1c8YIRuM0qrG3PjkvuBzAxGkXFATPw1vQlu0E8XH/GCAIoWPwjXehn0t5+mL+iwm3CV4OuFYPu2fOJf6hfJya3YzP7nncXDtvhSC8qAAJ4Thhb4RVM1RMtZAar2u9U3kvApJfHgD1zUgVxBbmoOaN2fJJnaVphbhnkLsR+Hyn/QwUz/dJPRQm/lfdeJuRGsc12Z45U9JHIff6SW+y0ndnSqIaHrYLEYDGrYsyd+PFuxZ/nlSCpNumyKBYpDOtu3rEjyKaqqYSQ+PQz6aYtQjMc9sJVhfs9XKxAKLBNmV7hm9ivnlVhB5BOEfUXJBvI6s61O4Irdke5H9Rpg4F2BeTTowN3LD46riTD3qt0Z8Menreo1Hf3Z3ohe6wb+rhmFci4dw+qZnuSzFtkbrIP0ygCsAuDDcU6fmVw9STIRbhx8mXaEw91e7qkNu7/CVfLNUJbOEjAEyAEF2/amPnidfrZnAsyt/ZMuGNo36+tYeXJL2oobMQJw6pyvgpiGYTK3RpHJ9haYMu1n47B57wMURK1KcYjZDSsh82AL6oI2picxX/qv5ZuYysFBdXV6h4IGxDRKRtBedXFIdD3EHhSIGFBD16JVgun/AFWWVNHsfvKHCHdMeDquHwuSi4HeaW+7fIT2b26kzkzqPVTTQEa6wqyka0RJADv4N+SLiTZP+4QNHefVPpeuLmcmwzFTdmTLvm+SPGQZFzrF/wfRpU/UG8hqg0XpGWRSE9WKSsHdqZ45bBdzleB7uks/BOh+Mof3U6hNI5+vEY557Tz9rjsdA4I= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5599.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(508600001)(4326008)(82960400001)(26005)(9686003)(38070700005)(76116006)(107886003)(71200400001)(2906002)(966005)(6506007)(110136005)(33656002)(5660300002)(7696005)(316002)(52536014)(83380400001)(66476007)(86362001)(53546011)(66556008)(66446008)(122000001)(64756008)(66946007)(55016003)(19273905006)(8676002)(30864003)(8936002)(186003)(38100700002)(579004)(559001)(563064011); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?LQIlxsPeCOFhrD9jmkSCt1Jz3ReJY6gguu7Fjf9aUXzvJ1C/EgYuU2pEyG+p?= =?us-ascii?Q?zJ1S4IXeMgnxGWlQrkXpa+FqM6OuTmdGDVX2BaIIgzc8EMqjwYx6dhXRNO4k?= =?us-ascii?Q?PBAAVtGlZMuOOq6tM+YFNbMhLfeRuNCaMq/MKTFE8rT84g7pW7XiOGd2EJSw?= =?us-ascii?Q?5Q5lOCBF3OGA7NjCVGJy0kganlYVyfXC7ZGd6pchbLTpkoP8q4gn+n2pKe3Z?= =?us-ascii?Q?MIHM7u/PXNvY4VJUwkJWKObfsxtsgIOO2dvS7B5cC/k6mB//C+1OgqLfAvbQ?= =?us-ascii?Q?EbmZqJ3HlckgoyLDw1cCnR17H1diBI76dNVLSi/efIzyI0O9ufKEfOYqonY5?= =?us-ascii?Q?v0kDDlFBM9NLHV8M9qfo07j+dKaJbGeSTm3buMiPwfThEm6tvfZtKbhqJyFb?= =?us-ascii?Q?/plhbPc6HGonDOyOnutkah1HGc7/q/RXRvGKE0oysxDvFVsWTUYf9PtteGqp?= =?us-ascii?Q?0tSipKHmgm9UfjW+JwSWGOnWlCr0RFgn0eEgCOBD1whZmrl/Y+fpSVOmAOsb?= =?us-ascii?Q?+752/7MCaqTrLMffsuPCW3YSv+e/VQ2HGiqX56SHEOzqJbvW9IxaQGK0142C?= =?us-ascii?Q?LHagdf1agN+ZcMykogi3m82t+7lTbD/aKOYwXRdsYXApKGOa8BiBUGxZ7Pq2?= =?us-ascii?Q?57Q3hRsevjUABLAzroSdNH0MwcMAANI0wTdjcoacx9DUnKiUGgbUCinFi41B?= =?us-ascii?Q?gRDxp92/+ua9JgE76A9wyuN1YbQDfm8LNVhYpAEuCLK16OM4FAnGAVI7aFTg?= =?us-ascii?Q?AiVGfJRY7OUc0WlpQj/H9mq5gpY9VGL9jlsXWNLGXw1bP4zGRVwE5SgoTptv?= =?us-ascii?Q?AhPYTklXb0sniNZ6megu8hXkRUyWM76/HBP0JVAd9mD8HidbWkVmZAo/ecpw?= =?us-ascii?Q?4O2p0KNQxNHYQYWw3MSz+GzrNQp+/PNr2R8YxW+JFqd7JQpnXLsTcIArSN+8?= =?us-ascii?Q?OxYcncmdbFdJtoOSTRUvkZo0jcg6fVl0HKilaFliaEPoddf4xZ4aujWCpTMG?= =?us-ascii?Q?gWrLdPZpgCDI8gBRECRX7XTGhBkzyokODJ6IfGCuzuGCrLuyDBtJyKFVClmK?= =?us-ascii?Q?LYaUn2mcr5VhGcYzfwK8fa2OLRlVNke2Ob9HwFAFnxCpHcnX00rMDJxByXsX?= =?us-ascii?Q?nQ3EC3y2e0ATntEbYXRhb1uJ5jyO2mvfee4lnrs8DZVodlaLCdfBjJw0NyN4?= =?us-ascii?Q?KJVNcZgGu8Qu/bxU3ktih0CUJd5IsRUml4Ma+AZySgBVXx8TCtXCPmXQorr7?= =?us-ascii?Q?frynLSDfxW5QxAIcIBKGP1HWfSF5CSwKLkowG+zydTHnFDRe28xwozlkJb4V?= =?us-ascii?Q?R7y4sIh+bs5BICoHfU2c/p0Jfnlx+vrvzhfcUGrpQSQYy48VyILWq3ROKOzx?= =?us-ascii?Q?WFSuINC6oz16aRN5neVt2Iz+qs/e1VCxzCdmap3PY0/FOhCx7OwGPSeowhsN?= =?us-ascii?Q?IQPZeCb+Cib/TqLtGTPdsM2ChZGAjgZ4VfqR/ZyJI/nprZijTBzYjbcfsf5g?= =?us-ascii?Q?T8QRcaG6nmNc3YNMsn5EL1B+gaS3BlRrp1GEbG1N0PMWs9hoverq8ZCwt4nx?= =?us-ascii?Q?imSIFaCt2vhnmq2HptR1oaamfx8gY7zmAzpdznibmihHKI/C20YIyr/8vH5x?= =?us-ascii?Q?rw=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: SJ0PR11MB5599.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4a35785-0665-4e4b-fe64-08d9da43a8b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jan 2022 05:30:37.6656 (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: 7SaBwkUCbD1vblellGSnED3Ebb19kyLCw0OMD9furXM5H/lUmGo4nTcqDHaMp1cEcF01SZ0HRmouIGeBT+JIXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1889 X-OriginatorOrg: intel.com X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Why created new test plan for this QINQ protocol? Suggest not include below description, could descript this test plan inlcud= es which features, not list test case. If add new test case in future, need to change below too? Not make sense. +The test plan includes six test cases, such as MAC_QINQ_IPV4, > MAC_QINQ_IPV6, MAC_QINQ_IPV4_UDP, MAC_QINQ_IPV4_TCP, > MAC_QINQ_IPV6_UDP, MAC_QINQ_IPV6_TCP. > -----Original Message----- > From: Yaqi Tang > Sent: Tuesday, January 18, 2022 6:44 PM > To: dts@dpdk.org > Cc: Tang, Yaqi > Subject: [dts][PATCH V3] test_plans/cvl_switch_filter_qinq_test_plan: cvl > support l4 for qinq switch filter >=20 > CVL support l4 for QinQ switch filter in PF driver is by dst MAC + outer = VLAN id > + inner VLAN id + dst IP + dst port, and port can support as eth / vlan /= vlan / IP > / tcp|udp. >=20 > Signed-off-by: Yaqi Tang > Tested-by: Yaqi Tang < yaqi.tang@intel.com> > --- > .../cvl_switch_filter_qinq_test_plan.rst | 689 ++++++++++++++++++ > 1 file changed, 689 insertions(+) > create mode 100644 test_plans/cvl_switch_filter_qinq_test_plan.rst >=20 > diff --git a/test_plans/cvl_switch_filter_qinq_test_plan.rst > b/test_plans/cvl_switch_filter_qinq_test_plan.rst > new file mode 100644 > index 00000000..54404af0 > --- /dev/null > +++ b/test_plans/cvl_switch_filter_qinq_test_plan.rst > @@ -0,0 +1,689 @@ > +.. Copyright (c) <2021>, Intel Corporation > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, > INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > ADVISED > + OF THE POSSIBILITY OF SUCH DAMAGE. > + > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > +CVL Switch Filter QINQ Test Plan > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > + > +Description > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +The test plan includes six test cases, such as MAC_QINQ_IPV4, > MAC_QINQ_IPV6, MAC_QINQ_IPV4_UDP, MAC_QINQ_IPV4_TCP, > MAC_QINQ_IPV6_UDP, MAC_QINQ_IPV6_TCP. > +* Enable QINQ switch filter for IPv4/IPv6, IPv4 + TCP/UDP in non-pipelin= e > mode. > +* Enable QINQ switch filter for IPv6 + TCP/UDP in pipeline mode. > +CVL support l4 for QinQ switch filter in PF driver is by dst MAC + outer= VLAN > id + inner VLAN id + dst IP + dst port, and port can support as eth / vla= n / vlan / > IP / tcp|udp. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Hardware > +-------- > +Supportted NICs: columbiaville_25g/columbiaville_100g > + > +Software > +-------- > +dpdk: http://dpdk.org/git/dpdk > +scapy: http://www.secdev.org/projects/scapy/ > + > +General Set Up > +-------------- > +1. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.= pkg, > + then load driver:: > + > + # cp ice_comms-1.3.31.0.pkg /lib/firmware/updates/intel/ice/ddp/ice.= pkg > + # rmmod ice > + # insmod ice.ko > + > +2. Compile DPDK:: > + > + # CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib --def= ault- > library=3Dstatic x86_64-native-linuxapp-gcc > + # ninja -C x86_64-native-linuxapp-gcc -j 110 > + > +3. Get the pci device id and interface of DUT and tester:: > + > + # ./usertools/dpdk-devbind.py -s > + > + 0000:3b:00.0 'Ethernet Controller E810-C for SFP 1593' if=3Dens785f0= drv=3Dice > unused=3Dvfio-pci > + 0000:af:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' > if=3Dens260f0 drv=3Di40e unused=3Dvfio-pci > + > +4. Bind the DUT port to dpdk:: > + > + # ./usertools/dpdk-devbind.py -b vfio-pci 0000:3b:00.0 > + > +Test Case > +=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Common Steps > +------------ > +1. Launch the userland ``testpmd`` application on DUT as follows:: > + > + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a > 0000:3b:00.0 -- -i --txq=3D16 --rxq=3D16 > + > +2. Set verbose:: > + > + testpmd> set verbose 1 > + > +3. Set fwd engine and start:: > + > + testpmd> set fwd rxonly > + testpmd> start > + > +#Non-pipeline mode > + > +Test Case 1: MAC_QINQ_IPV4 > +-------------------------- > +The test case enable QINQ switch filter for IPv4 in non-pipeline mode, a= nd > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv4. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / > vlan tci is 2 / vlan tci is 1 / ipv4 src is 192.168.1.1 dst is 192.168.1.= 2 / end > actions queue index 2 / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan > tci is 2 / vlan tci is 1 / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / e= nd actions > queue index 2 / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.3", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 10: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0xc99a75ba - RSS queue=3D0xa - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xa > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 2: MAC_QINQ_IPV6 > +-------------------------- > +The test case enable QINQ switch filter for IPv6 in non-pipeline mode, a= nd > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv6. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / > vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end > / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan > tci is 2 / vlan tci is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900= :2020 > / end actions rss queues 2 3 end / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 =3D> RSS > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2023")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 6: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0x63517896 - RSS queue=3D0x6 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0x6 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 3: MAC_QINQ_IPV4_UDP > +------------------------------ > +The test case enable QINQ switch filter for IPv4 + UDP in non-pipeline m= ode, > and port can support as dst MAC + outer VLAN id + inner VLAN id + IPv4 + = UDP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / > vlan tci is 2 / vlan tci is 1 / ipv4 / udp src is 50 dst is 23 / end acti= ons queue > index 2 / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan > tci is 2 / vlan tci is 1 / ipv4 / udp src is 50 dst is 23 / end actions q= ueue index 2 / > end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 UDP =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D22)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 4: MAC_QINQ_IPV4_TCP > +------------------------------ > +The test case enable QINQ switch filter for IPv4 + TCP in non-pipeline m= ode, > and port can support as dst MAC + outer VLAN id + inner VLAN id + IPv4 + = TCP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / > vlan tci is 2 / vlan tci is 1 / ipv4 / tcp src is 50 dst is 23 / end acti= ons rss queues > 4 5 end / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan > tci is 2 / vlan tci is 1 / ipv4 / tcp src is 50 dst is 23 / end actions r= ss queues 4 5 > end / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 TCP =3D> RSS > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 5: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x5 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x5 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D22)/("X"*= 80)],ifac > e=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +#Pipeline mode > + > +Test Case 5: MAC_QINQ_IPV6_UDP > +------------------------------ > +The test case enable QINQ switch filter for IPv6 + UDP in pipeline mode,= and > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv6 + UDP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 50 dst is 23 / end > actions drop / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 50 dst is 23 / end > actions drop / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 UDP =3D> DROP > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/UDP(sport=3D50,dport=3D22)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 6: MAC_QINQ_IPV6_TCP > +------------------------------ > +The test case enable QINQ switch filter for IPv6 + TCP in pipeline mode,= and > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv6 + TCP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 50 dst is 23 / end > actions queue index 7 / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 50 dst is 23 / end > actions queue index 7 / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 TCP =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 7: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0x7 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0x7 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right. > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x81 > 00)/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:= 11 > 11:3900:2020")/TCP(sport=3D50,dport=3D22)/("X"*80)],iface=3D"ens260f0",co= unt=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > + > -- > 2.25.1