From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 306ABA04B7; Sun, 4 Oct 2020 13:59:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 756BD1BACB; Sun, 4 Oct 2020 13:59:22 +0200 (CEST) Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by dpdk.org (Postfix) with ESMTP id AA2641BA9E for ; Sun, 4 Oct 2020 13:59:19 +0200 (CEST) Received: from HKMAIL101.nvidia.com (Not Verified[10.18.92.100]) by nat-hk.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Sun, 04 Oct 2020 19:59:18 +0800 Received: from HKMAIL102.nvidia.com (10.18.16.11) by HKMAIL101.nvidia.com (10.18.16.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sun, 4 Oct 2020 11:59:17 +0000 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by HKMAIL102.nvidia.com (10.18.16.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Sun, 4 Oct 2020 11:59:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=je4zKlp4DTQE62d5HyP80QzN3Kv2us7dBkiMNkyEZQNdlAVr1WK6klfy4KpOXZ7q8KlMnf7x9Wkm3m0Lxcp6/0Qq5losuZQKeQqNXQQj7JwOXDPWEqJaIyCuirBW/5uriZDFQyTmb6kjcfNTRSdhm9RYs2l0gH+4UAk2HOIk3zTCQpK0aCeQF7W6QVmHxJMP8Yd99CLUjdfYHyql86xikTJB1BGg6OfciEIEQWefBvRO6BbRsKVzJy/l/UE+d8EosW8YulAGx92dIIAygzkPxe923PayTU0EEgLus31knw4Dce3wxUPlqcf6riPrtx7JA4jY0GaXGYWSj0am0fkTkA== 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=zw9nhtPdY1WetTyVjtzliPWkEMm75DwkMtkknQxQ/Kg=; b=XXqp/ZM4nMDz1gVPnq3McPq6AHyW7v7Q10eldOrBxalIsHrgAih4naW3XV6plDncDOi0TS9g7nxWG1dZNXKDf4GXz69EWmo+Fwy/od3ZR3l17wdtzLzCrmE8gNaiDSD2SOreebkSJJ/NQVXGDcTiTBp+j1zyrS+pJubJYIs2OjuKq4tCP+tVisstxbvSFsQsJQZmmn7nZmkzh+TlpoqWnHwAiBuSj8+UO0dBGXel3BubhPWPS6Y2+Msh/gzles4i5ucYaA8JKElAGsTaWJnC5aOr4hsjGzMsnjjxXJW2THK5ExcxW7GuEY2nX0V7V/s7uN/O3iiCduHdO01dTb3ZNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none Received: from MN2PR12MB4286.namprd12.prod.outlook.com (2603:10b6:208:199::22) by BL0PR12MB4852.namprd12.prod.outlook.com (2603:10b6:208:1ce::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.38; Sun, 4 Oct 2020 11:59:15 +0000 Received: from MN2PR12MB4286.namprd12.prod.outlook.com ([fe80::61fd:a36e:cf4f:2d3f]) by MN2PR12MB4286.namprd12.prod.outlook.com ([fe80::61fd:a36e:cf4f:2d3f%8]) with mapi id 15.20.3433.042; Sun, 4 Oct 2020 11:59:14 +0000 From: Ori Kam To: Li Zhang , Dekel Peled , "Slava Ovsiienko" , Matan Azrad CC: "dev@dpdk.org" , NBU-Contact-Thomas Monjalon , Raslan Darawsheh Thread-Topic: [dpdk-dev] [PATCH v4 1/1] net/mlx5: support match ICMP identifier fields Thread-Index: AQHWmJfO5rwWJCl+6UKka8FmZwtEH6mHV06g Date: Sun, 4 Oct 2020 11:59:14 +0000 Message-ID: References: <20200930164734.23675-1-lizh@nvidia.co> <20201002084059.4049-1-lizh@nvidia.com> In-Reply-To: <20201002084059.4049-1-lizh@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [147.236.152.129] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 05477878-e040-4cb8-3279-08d8685cea41 x-ms-traffictypediagnostic: BL0PR12MB4852: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: grj9A5rEuUf4IU6zFKnU2+1XHYinnmRKE3gaA+a3mx/C03mKtamiFFCYH83ksaaM0PblajkEW3y/kgj2DyRiiXkkhcmnwUrgbFTIYNnihBfwJ2/IKs/8GMU8bmGbYy4Q/pe7YKeFCGuypcwl7O7/glVmVGmEyL//jCCDUx1cNZNcojRP+3vJOWeE/rqdOCs26dqpyzBNSi1nHk8ICZ38WiUuJ3Df8iftWAHl+6tKAz79o8/jZmDYRUSk8K/yIYtj32G0o9yesV5fIu08/bljrhBD38qgPTqoz2nh/cGbEEmf4dZbvqLlVL7+TeGfl+mW x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB4286.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(376002)(346002)(396003)(39860400002)(7696005)(5660300002)(9686003)(71200400001)(186003)(6636002)(107886003)(53546011)(6506007)(86362001)(26005)(33656002)(2906002)(110136005)(66556008)(478600001)(54906003)(316002)(66946007)(4326008)(64756008)(8936002)(66446008)(52536014)(66476007)(83380400001)(76116006)(55016002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: erMCvDuD31WZ0TeW557tUxIc0gOQckTKP9K+rvbZU7n/tiWxqUJJvQov5AYn1ELYI0iPZ5tP5X/9RyN9PsUWkFG0QbgisoYeev7Avd2sYFknoaxPoKlfaZCFq8Umfz7qoUKddtkPxr8PEl2COOaaRmLFVBDgYkyVcJRUNPP+DSgP6WWF0vPxeUPTsWFwviouPHAzmU5Ia+Q1hL7SqjRPmKLQTmEZDBQpKE8BE99ed5Icb4SOsbZVW2fQW8+MLKFWyqyQcqdLy7gKO2eWjt9UezkH49apDmO/lbipZyYnYecpkck9T7CpWaIX22QU0Bi6pJQN67ahVbqSNfNh+emMLJ1To/hioKU03GqHlWtmM4iAVlShONdEFUkF38OAg7qY4z9unzLV4HcZydsa80ndA0PJko+A3VTOgT6uDqr7tSRlsMHTZ6KTqMC8g9KIpdcv5cz+j9IGeNbRVAyjDggvjL/N6pwGyJLZ+16Yin4szVfrlDWxdS+WRbRVB8QD5S9kY3qriL2hdYsV3ZxX5ZHiS+0dkEvKZjgIDzksyEyI3X1ySEb4But1dR/lSto1RqWTY4zjFpw5Ya6zDJ8YK0KfgqnPwjPUFeieg8JUp3S0pgjsRg4lirDJqy6ED00AX8NqbFOifNwJgGab/0zbIS+L6w== 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: MN2PR12MB4286.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05477878-e040-4cb8-3279-08d8685cea41 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2020 11:59:14.6897 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qFLFSObmWpxBb9lNguTVhPmxHHQh4a2tEiwQ4yBUXLJNiSiu/uNCqaJN4PUOpvftpn9D8kfNUcSugivqOLV6gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4852 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1601812758; bh=zw9nhtPdY1WetTyVjtzliPWkEMm75DwkMtkknQxQ/Kg=; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To: CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References: In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ld-processed: x-ms-exchange-transport-forked:x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers:x-ms-exchange-senderadcheck: x-microsoft-antispam:x-microsoft-antispam-message-info: x-forefront-antispam-report:x-ms-exchange-antispam-messagedata: Content-Type:Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=JxAZz9v1R5eO438vfCpz7OtNNSW8WY0/kqO7FtYhlYxLTdCGtuPtqZmHWQ5EpKVNo YLUeC4ggVZWDoPtlT4F0pq2kkWFly8dDimdI1LiKspW3qPe9xfj90p0AE66WotTJpn uspSZbpZqf1EdAozHs+7aI32W4etSiF4OkCwnvd5ZvpV/PrnK79VCzd1xujpD+5u+M mhew1+dzIOQhvTyR6xqjaTg5NnexDZ39fuV6Y9F5Getmv2dFEAVb+tXlnz/YLGbvEO pzuJ5NcEEm0VlCOyvC6ruKObyMBE5QBxCJaAznu9DrwgneEJXWtFFXpPybfT2lx3rK zuny/bLLsUg8w== Subject: Re: [dpdk-dev] [PATCH v4 1/1] net/mlx5: support match ICMP identifier fields X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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 Li PSB Best, Ori > -----Original Message----- > From: dev On Behalf Of Li Zhang > Sent: Friday, October 2, 2020 11:41 AM > Subject: [dpdk-dev] [PATCH v4 1/1] net/mlx5: support match ICMP identifie= r > fields >=20 > PRM expose fields "Icmp_header_data" in IPv4 ICMP. > Update ICMP mask parameter with ICMP identifier and sequence number > fields. > ICMP sequence number spec with mask, Icmp_header_data low 16 bits are set= . > ICMP identifier spec with mask, Icmp_header_data high 16 bits are set. >=20 > Signed-off-by: Li Zhang > --- > doc/guides/nics/mlx5.rst | 4 ++-- > doc/guides/rel_notes/release_20_11.rst | 2 +- > drivers/net/mlx5/mlx5_flow.c | 10 ++++++++-- > drivers/net/mlx5/mlx5_flow_dv.c | 24 ++++++++++++++++++++++-- > 4 files changed, 33 insertions(+), 7 deletions(-) >=20 > diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst > index 211c0c5a6c..576dbe5efd 100644 > --- a/doc/guides/nics/mlx5.rst > +++ b/doc/guides/nics/mlx5.rst > @@ -288,7 +288,7 @@ Limitations > - The input buffer, providing the removal size, is not validated. > - The buffer size must match the length of the headers to be removed. >=20 > -- ICMP/ICMP6 code/type matching, IP-in-IP and MPLS flow matching are all > +- ICMP(code/type/identifier/sequence number) / ICMP6(code/type) matching= , > IP-in-IP and MPLS flow matching are all > mutually exclusive features which cannot be supported together > (see :ref:`mlx5_firmware_config`). >=20 > @@ -1009,7 +1009,7 @@ Below are some firmware configurations listed. >=20 > FLEX_PARSER_PROFILE_ENABLE=3D1 >=20 > -- enable ICMP/ICMP6 code/type fields matching:: > +- enable ICMP(code/type/identifier/sequence number) / ICMP6(code/type) > fields matching:: >=20 > FLEX_PARSER_PROFILE_ENABLE=3D2 >=20 > diff --git a/doc/guides/rel_notes/release_20_11.rst > b/doc/guides/rel_notes/release_20_11.rst > index c6642f5f94..791f133d8f 100644 > --- a/doc/guides/rel_notes/release_20_11.rst > +++ b/doc/guides/rel_notes/release_20_11.rst > @@ -73,7 +73,7 @@ New Features > * Added flag action. > * Added raw encap/decap actions. > * Added VXLAN encap/decap actions. > - * Added ICMP and ICMP6 matching items. > + * Added ICMP(code/type/identifier/sequence number) and > ICMP6(code/type) matching items. > * Added option to set port mask for insertion/deletion: > ``--portmask=3DN`` > where N represents the hexadecimal bitmask of ports used. > diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c > index 416505f1c8..3cabfd4627 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -1303,6 +1303,12 @@ mlx5_flow_validate_item_icmp(const struct > rte_flow_item *item, > struct rte_flow_error *error) > { > const struct rte_flow_item_icmp *mask =3D item->mask; > + const struct rte_flow_item_icmp nic_mask =3D { > + .hdr.icmp_type =3D 0xff, > + .hdr.icmp_code =3D 0xff, > + .hdr.icmp_ident =3D RTE_BE16(0xffff), > + .hdr.icmp_seq_nb =3D RTE_BE16(0xffff), > + }; > const int tunnel =3D !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); > const uint64_t l3m =3D tunnel ? MLX5_FLOW_LAYER_INNER_L3_IPV4 : > MLX5_FLOW_LAYER_OUTER_L3_IPV4; > @@ -1325,10 +1331,10 @@ mlx5_flow_validate_item_icmp(const struct > rte_flow_item *item, > RTE_FLOW_ERROR_TYPE_ITEM, > item, > "multiple L4 layers not supported"); > if (!mask) > - mask =3D &rte_flow_item_icmp_mask; > + mask =3D &nic_mask; > ret =3D mlx5_flow_item_acceptable > (item, (const uint8_t *)mask, > - (const uint8_t *)&rte_flow_item_icmp_mask, > + (const uint8_t *)&nic_mask, > sizeof(struct rte_flow_item_icmp), error); > if (ret < 0) > return ret; > diff --git a/drivers/net/mlx5/mlx5_flow_dv.c > b/drivers/net/mlx5/mlx5_flow_dv.c > index 3819cdb266..a0b78934fd 100644 > --- a/drivers/net/mlx5/mlx5_flow_dv.c > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > @@ -7378,6 +7378,14 @@ flow_dv_translate_item_icmp(void *matcher, void > *key, > { > const struct rte_flow_item_icmp *icmp_m =3D item->mask; > const struct rte_flow_item_icmp *icmp_v =3D item->spec; > + const struct rte_flow_item_icmp nic_mask =3D { > + .hdr.icmp_type =3D 0xff, > + .hdr.icmp_code =3D 0xff, > + .hdr.icmp_ident =3D RTE_BE16(0xffff), > + .hdr.icmp_seq_nb =3D RTE_BE16(0xffff), > + }; This is incorrect, like before, you are changing existing app behavior. Think about it this way, until now the app didn't place any mask so he just matched on the rte_default now with our new version all the matching will fail. Since you are adding more must fields. > + uint32_t icmp_header_data_m =3D 0; > + uint32_t icmp_header_data_v =3D 0; > void *headers_m; > void *headers_v; > void *misc3_m =3D MLX5_ADDR_OF(fte_match_param, matcher, > @@ -7396,8 +7404,14 @@ flow_dv_translate_item_icmp(void *matcher, void > *key, > MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol, > IPPROTO_ICMP); > if (!icmp_v) > return; > - if (!icmp_m) > - icmp_m =3D &rte_flow_item_icmp_mask; > + if (!icmp_m) { > + icmp_m =3D &nic_mask; > + icmp_header_data_m =3D UINT32_MAX; Please see comment above. > + } else { > + icmp_header_data_m =3D rte_be_to_cpu_16(icmp_m- > >hdr.icmp_seq_nb); > + icmp_header_data_m |=3D > + rte_be_to_cpu_16(icmp_m->hdr.icmp_ident) << 16; > + } > /* > * Force flow only to match the non-fragmented IPv4 ICMP packets. > * If only the protocol is specified, no need to match the frag. > @@ -7412,6 +7426,12 @@ flow_dv_translate_item_icmp(void *matcher, void > *key, > icmp_m->hdr.icmp_code); > MLX5_SET(fte_match_set_misc3, misc3_v, icmp_code, > icmp_v->hdr.icmp_code & icmp_m->hdr.icmp_code); > + icmp_header_data_v =3D rte_be_to_cpu_16(icmp_v->hdr.icmp_seq_nb); > + icmp_header_data_v |=3D rte_be_to_cpu_16(icmp_v->hdr.icmp_ident) > << 16; > + MLX5_SET(fte_match_set_misc3, misc3_m, icmp_header_data, > + icmp_header_data_m); > + MLX5_SET(fte_match_set_misc3, misc3_v, icmp_header_data, > + icmp_header_data_v & icmp_header_data_m); > } >=20 > /** > -- > 2.21.0