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 65827A0562; Fri, 19 Mar 2021 08:57:29 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C7AEF140F1B; Fri, 19 Mar 2021 08:57:28 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 3F569140F15 for ; Fri, 19 Mar 2021 08:57:24 +0100 (CET) IronPort-SDR: rCcFvkoLdep8PvlCZpkIJVZBxJxSYmn7DylfGYKigxadswrav0zbytnO9neRvSnZQiG63+S9Bx oomWpvCf38LA== X-IronPort-AV: E=McAfee;i="6000,8403,9927"; a="187495005" X-IronPort-AV: E=Sophos;i="5.81,261,1610438400"; d="scan'208";a="187495005" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Mar 2021 00:57:23 -0700 IronPort-SDR: 6stqgsab13ph2ajR4UgY8zQyaLgyhbwNwJngWE5IjPszgP2N8lF/nlkAaQV+GuzGbGPbNTninZ SCgTGGAeuJaQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,261,1610438400"; d="scan'208";a="450781819" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga001.jf.intel.com with ESMTP; 19 Mar 2021 00:57:22 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Fri, 19 Mar 2021 00:57:22 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.2106.2 via Frontend Transport; Fri, 19 Mar 2021 00:57:22 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.57) 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.2106.2; Fri, 19 Mar 2021 00:57:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NIGulHBhfvn1v5ENQEKmNBlKF5c0JFMAWYvyenH+Zcr6vZNoCJDxyHTDxA3ZfMTCk3xIo9w3N4Lpy7kb3ohpvtulwH2e+C7vuAv1PyAFqElIHk05+fF26gXXxYZ86HfXwAMcNaSVkUQJY5ZjeaQLElXyqVCCB97zPmKnQiZ8i239/dNkZL+gfBn4vxUCx57z9yTBtbPUE7PSlWirV/xmPPpVJPVYo19otU8DXmfgp0N4nf62jJKIe8qCwTIXDKyZdH2K0iBCTJ0z7mGONYSoIu6AHe2qRm0bNDHNQcyWceQ+GbM+9YPrDpIcDC6YWbgLpCaHXaJm7gEUbmWFAGLVZQ== 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-SenderADCheck; bh=ti80YOfB4bzlSylOOOU/bwQx40bwhpJcOIwiEW746Js=; b=m3jn34TnWzjzis7ipHp6lBy/hiQMVjuKclgDcodiW06cuAwvdVg9Vl1tvP1FuCmNPYuGOG9YFAMAckAv8DL/1+epVO2PuPFRE1NMEJAtMo2VcPd2AguvwJJ7U5V6sKc/t8BvnZyfpmVsojNJmeJXKR5XgpsFlS7/9s8w5axW3XbWaM1hAzjL8fqeND5fJPDQY7LSeXCf+SN9hbr/9m+qFnk+MVdLGok3Rt62ShXrWUf69jxPNylXIZGvYGHc4ACaGyFcR9n+4aUtEMW8fglmdNN+0jVQEv+s10kCKB+uOLa44x4ebEHzCVjMXyFkdRCKQFonCt3q9tb6Xg56Ssgv0g== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ti80YOfB4bzlSylOOOU/bwQx40bwhpJcOIwiEW746Js=; b=dASi4AhWqNplfFhfe8h6yxTUG1DeVUJQoaFKF1N4zvm2fUzxU82JSg/N2vvTKazhlwzordePeCwESKq9lOgA/H4n2SDxowYAJVZYtaGNcTsCE28Okfj/nsQZ7LTeaHGEHc6uI6ulnasSlZ+f3Zqe48/K6R7RcI/I21KVQrebDYE= Received: from DM4PR11MB5534.namprd11.prod.outlook.com (2603:10b6:5:391::22) by DM5PR11MB1625.namprd11.prod.outlook.com (2603:10b6:4:b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Fri, 19 Mar 2021 07:57:19 +0000 Received: from DM4PR11MB5534.namprd11.prod.outlook.com ([fe80::79a3:3404:b907:d49c]) by DM4PR11MB5534.namprd11.prod.outlook.com ([fe80::79a3:3404:b907:d49c%6]) with mapi id 15.20.3955.018; Fri, 19 Mar 2021 07:57:18 +0000 From: "Li, Xiaoyun" To: "Guo, Jia" , "orika@nvidia.com" , "Zhang, Qi Z" , "Xing, Beilei" , "Wu, Jingjing" CC: "Zhang, Yuying" , "Xu, Ting" , "dev@dpdk.org" Thread-Topic: [PATCH v1 4/4] net/iavf: support FDIR for IP fragment packet Thread-Index: AQHXGtxI+Q0qej8W8UWBfMBv0QIg6aqK6C7w Date: Fri, 19 Mar 2021 07:57:18 +0000 Message-ID: References: <20210317031211.18145-1-jia.guo@intel.com> <20210317031211.18145-5-jia.guo@intel.com> In-Reply-To: <20210317031211.18145-5-jia.guo@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 75df4a2b-0cb8-413a-d32f-08d8eaac9e9e x-ms-traffictypediagnostic: DM5PR11MB1625: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pfbByTHnoO9XDqosYLJGA5stkPaxuPWqoiowXJ9z2ceYYYgzIKj5u8mfpM1gsYSxAgyDd0ubq5Vv4HVv+gjUhH3L+Uz/Ldv+EOf66bGkTVN43aYzenKm8/v875G5lDCJMqU2znvemAX7n0vDLBh86AsfEfMweuYBldLpUkzDSrJyOEQU6sTnchYFNhhvWdRS/33EwBR68+pVYJk4l3kp/aMU2yfiuM02feEy4scbrrCxUGYvH0vLbO9jMI7jJ9tWRJahZOdIEp1agWD/MMMBhyIW+DCWY/iPuJPt43Hl7ttnFYrpAQ4NI5P/uzNB54jhzRMB8G1kvY2uvTglIgXtv6fiQI0aMbWzd952CLa4nt3RJe2V02SwVSilgjUpQJB3q+oroOyfr+zP7OfYydubT36kNPIvErEnpCtEWoZU/fW5RvIw7rq8A27d7Fd1FrSNxGYa7wIRcAONL9rm1wnk4wXVuoOfBQF++omi4HvgzwpVaKDAxHdo0jOaN+5cTD68EZqQOgFjYU42hgDnY+gXAppPYaQbdThaimTncwEeAqZCYLYQcyFL2AyHyKzj4wHa1Z7S+D3PO/zuLXe46j7lqBFGx2KitrUAw7Viuu8x7ROl4KJnub85PnYoNZnSqwq39zu0VfylQyWhFmwdUUG9wpVjUHDgLhnKO31LdESM/NHI92TtIyZ8QWEAp6kg+doH x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5534.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(376002)(366004)(346002)(39860400002)(396003)(9686003)(52536014)(64756008)(6506007)(8936002)(55016002)(26005)(7696005)(66446008)(53546011)(66556008)(83380400001)(71200400001)(8676002)(33656002)(76116006)(66946007)(38100700001)(186003)(2906002)(66476007)(478600001)(6636002)(4326008)(316002)(5660300002)(86362001)(54906003)(110136005)(21314003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?nzDIVQyZ9vW8rgKJuea7YjxPEkSYYFLUMKGIZe5TgGb3+6i+107rFDjs22xP?= =?us-ascii?Q?YClYTq+zormz9kPldt7ePNdWFdYNx6HcPnnby/OiJrasw5CbMhlR67b7/wm0?= =?us-ascii?Q?DYDKBKQphMqR12xQVVHhTLCJdQGISU5S3F7eNvdgP3v6bjyP9DGJO9HRs0dh?= =?us-ascii?Q?Z12NPwLv4WTWfOdm4ctiIT57OPyzia907ZnvSDZ1lC4jyr98XlZUBXk3NQcN?= =?us-ascii?Q?SYzfwfSDCOuo3zBHKCYqkvB0JmHnJoDOy8Zn/kYcjZdMD3fCuE1DhUlzkuGB?= =?us-ascii?Q?58jNRHiVfzhsrfsdSb5HkYQTwJQcBb4Ohm6Sse2c9ANYs8FUNU2ApX+iQ8fw?= =?us-ascii?Q?WrwJhcibO6WZCwaqsPaTkRHotK1PvkYC2SmAJc/LM3baFg5kE9chmo2tmFmh?= =?us-ascii?Q?Ucbkk0E5Bita/jETqtylIEeP/ibze8CNcJMj/yAy9B0w2vxl5lZooYe88tyu?= =?us-ascii?Q?rBLMJxGuSmTCXvERV/rvf1qB8FxjU4CLirBE5hqafFTHP6dMO/+QRhTf/PMe?= =?us-ascii?Q?1g+Y8blX9J2tmJJCKcTz6nHsEzcAJJ78RSk08YTQKyfEYdfk/2Nuo3wzJTOo?= =?us-ascii?Q?swFDGlHcwC9NEqe8l5ZOF8umaUir3lsPQeNpb4zGbmISwDKJvJFay+FyYW7g?= =?us-ascii?Q?p0608wr0SADAPpVvhp9/WsFgYIDv9SpCYr+Fwx31yLfM2DPuk7TMT0Pk3shL?= =?us-ascii?Q?nzJP+rRcDt8r9Hom6C/QP5ja8dhMxEsHbMDsjIu5wfX1DPkYmhewsw+D8UKa?= =?us-ascii?Q?YU1vebz0BzEjcreJSTBAYTmnhCYkhRnMTmKRgJP5XqUiRAQuSYD8VG3y+rJT?= =?us-ascii?Q?SeuoRD0YRLI9Wb3iJ8fGAFb+HgLOH9FgSwIJqgf2EWaMViUmLWAGD4hEnAru?= =?us-ascii?Q?rwZkBbhNjJvAygXhzMmkt5zWUvPiaR20SQJSJBaalLa6wat3tnp/qwrRWTtm?= =?us-ascii?Q?/WQw/K+4kt84js3WqB5LSgfAxWlvNO4n/tGnbDf8xsWNA6tmFpAmCm11Nucs?= =?us-ascii?Q?SxhzJj0i8md046sn1bcM+kzThzSu2HplIZDBOKTrpCplLjW6iBL3QIYeyvjk?= =?us-ascii?Q?1O7/VIi7VprtSRAKlMaWhNgGk+tLMCJ9U+PrgYJw8OU4UNIWYs3XbmY+er0D?= =?us-ascii?Q?m+q+nvJqIAtG7ymJNeGBAUdxgurjJXwTgDoTXL05C2I44ygZaE6kat7OCsbJ?= =?us-ascii?Q?M2NOqhzcHntBG6sfJwPFLxq7CB5XJb0Re38MhVknlJd6z9dgqwsvRn+jaqVR?= =?us-ascii?Q?KvoPZ/I0JaJksn7ChBK4n+IeO4hFRCfMVLafo5B40uayhPLqxY9bqwRtpFON?= =?us-ascii?Q?2rc=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: DM4PR11MB5534.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75df4a2b-0cb8-413a-d32f-08d8eaac9e9e X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2021 07:57:18.5246 (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: HTxdfVyrWGLdIjlb2o58CH79vgEEzbKietRff/YY0f9Lc0ntWIUTHV8VLyFosN4jIaYccoOB6GRF7cvf36t09w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1625 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v1 4/4] net/iavf: support FDIR for IP fragment packet 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 Sender: "dev" Hi > -----Original Message----- > From: Guo, Jia > Sent: Wednesday, March 17, 2021 11:12 > To: orika@nvidia.com; Zhang, Qi Z ; Xing, Beilei > ; Li, Xiaoyun ; Wu, Jingjing > > Cc: Zhang, Yuying ; Xu, Ting ; > dev@dpdk.org; Guo, Jia > Subject: [PATCH v1 4/4] net/iavf: support FDIR for IP fragment packet >=20 > New FDIR parsing are added to handle the fragmented IPv4/IPv6 packet. >=20 > Signed-off-by: Ting Xu > Signed-off-by: Jeff Guo > --- > drivers/net/iavf/iavf_fdir.c | 278 ++++++++++++++++++--------- > drivers/net/iavf/iavf_generic_flow.h | 5 + > 2 files changed, 190 insertions(+), 93 deletions(-) >=20 > diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c = index > e3f3b5f22a..348d423081 100644 > --- a/drivers/net/iavf/iavf_fdir.c > +++ b/drivers/net/iavf/iavf_fdir.c > @@ -34,7 +34,7 @@ >=20 > uint8_t ipv6_addr_mask[16] =3D { > 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -528,12 > +534,6 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, > }; >=20 > for (item =3D pattern; item->type !=3D RTE_FLOW_ITEM_TYPE_END; item++) > { > - if (item->last) { You can't directly remove the check. If users use "last" for items like RTE= _FLOW_ITEM_TYPE_ETH. The driver doesn't support that. > - rte_flow_error_set(error, EINVAL, > - RTE_FLOW_ERROR_TYPE_ITEM, item, > - "Not support range"); > - } > - > item_type =3D item->type; >=20 > + if (ipv4_mask->hdr.version_ihl || > + ipv4_mask->hdr.total_length || > + ipv4_mask->hdr.hdr_checksum) { > + rte_flow_error_set(error, EINVAL, > + > RTE_FLOW_ERROR_TYPE_ITEM, > + item, "Invalid IPv4 mask."); > + return -rte_errno; > + } >=20 > - rte_memcpy(hdr->buffer, > - &ipv4_spec->hdr, > - sizeof(ipv4_spec->hdr)); The ipv4_mask is checked. But what about ipv4_last? What if users set a rule which includes "last" for hdr.version_ihl? The cod= e doesn't process that and not err return. You should block all situations in ipv4_last except for ipv4_last->hdr.frag= ment_offset. > + > + if (ipv4_mask->hdr.packet_id =3D=3D UINT16_MAX || > + ipv4_mask->hdr.fragment_offset =3D=3D UINT16_MAX) { And I don't understand your logic here. Only if ipv4_mask->hdr.fragment_offset and ipv4_mask->hdr.packet_id Are UIN= T16_MAX, you process this case. But what about other cases? Shouldn't those= cases return err like not supported? And the mask for fragment_offset shouldn't be 0xffff (UINT16_MAX), it shoul= d be 0x3fff (RTE_IPV4_HDR_OFFSET_MASK | RTE_IPV4_HDR_MF_FLAG). Because only= the last 14 bits matters. The other 2 bits are reserved bit and DF bit, it= doesn't matter if it's fragment packets or not. > + if (ipv4_last && > + ipv4_spec->hdr.packet_id =3D=3D 0 && > + ipv4_last->hdr.packet_id =3D=3D 0xffff) And I don't understand this part too. I thought it's a fragment rule and no= n-fragment rule. Why is this related to packet_id? And what about fragment_= offset spec and last? In ovs usercase, the rule for fragment packets is like flow create 0 ingress pattern eth / ipv4 src is xxx dst is xxx fragment_off= set spec 0x8 fragment_offset last 0x2000 fragment_offset mask 0x3fff / end = actions queue index 1 / end And the rule for non-fragment rule is like: flow create 0 ingress pattern eth / ipv4 src is xxx dst is xxx fragment_off= set spec 0 fragment_offset mask 0x3fff / end actions queue index 1 / end or flow create 0 ingress pattern eth / ipv4 src is xxx dst is xxx fragment_off= set mask 0x3fff / end actions queue index 1 / end How can your codes here make sure the rules behave correctly? > + spec_all_pid =3D true; > + > + /* All IPv4 fragment packet has the same > + * ethertype, if the spec is for all invalid > + * packet id, set the ethertype into input set. > + */ > + input_set |=3D spec_all_pid ? > + IAVF_INSET_ETHERTYPE : > + IAVF_INSET_IPV4_ID; > + > + if (spec_all_pid) > + > VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr1, > + ETH, ETHERTYPE); > + else > + > VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, > + IPV4, PKID); > } >=20 > + rte_memcpy(hdr->buffer, &ipv4_spec->hdr, > + sizeof(ipv4_spec->hdr)); > + > hdrs.count =3D ++layer; > break; >=20 I'm not familiar with IPv6 fragment rule. So not review that part. > -- > 2.20.1