From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20050.outbound.protection.outlook.com [40.107.2.50]) by dpdk.org (Postfix) with ESMTP id 12E152082 for ; Sun, 4 Nov 2018 07:28:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AQ7wFMzNSlnqXJAt1LoJRAd0SurzhbFLPX767TDcSVs=; b=DYzmwLUTf9UKOAZBYqqqGNytEasAHIBkwBcTMNkr/1o4nZntD8Yi/N5w4s1WrBOEkYbACnT3CldIePlIOxc5RdxjXIsqujEE0VANeb4RUGzAPnOS/va89ydjBZQBDtUvdPOWaKYKjKu31d4MprAQV3ymUa1DotXq1okkt88dj9w= Received: from DB7PR05MB4426.eurprd05.prod.outlook.com (52.134.109.15) by DB7PR05MB5544.eurprd05.prod.outlook.com (20.177.193.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1273.27; Sun, 4 Nov 2018 06:28:35 +0000 Received: from DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::bc22:c2f5:208d:826f]) by DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::bc22:c2f5:208d:826f%2]) with mapi id 15.20.1294.028; Sun, 4 Nov 2018 06:28:34 +0000 From: Shahaf Shuler To: Ophir Munk , Yongseok Koh , "dev@dpdk.org" CC: Asaf Penso , Thomas Monjalon , Olga Shern Thread-Topic: [PATCH v4] net/mlx5: set RSS key to NULL to indicate default RSS Thread-Index: AQHUc5w2zen6cUSW0kCbaYCc6eSNg6U+e+7Q Date: Sun, 4 Nov 2018 06:28:34 +0000 Message-ID: References: <1541260115-4368-1-git-send-email-ophirmu@mellanox.com> <1541266779-10519-1-git-send-email-ophirmu@mellanox.com> In-Reply-To: <1541266779-10519-1-git-send-email-ophirmu@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; x-originating-ip: [31.154.10.105] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR05MB5544; 6:YPrVovgyLgt56aVR3grJkE8+MLbpn8sgTNRq4W+WQNCUzSSwBOpPmcBjobQvEFIAfmagz+pw9zbnG8MjOSw6ccM/dEtR2xJ9Gj26HXdDM2nXfvH7mNlidBwGcP0BMILQiBqDUOvlGbcMMLvkvvBOs8whrmRN48yKKLp5Pn2cQIm/NZp7ogSyzKjitFSoGrdJOlO4kGGkwGJlvwZD0kvW8hO82Kpi+0RKnNR3a2vugUnoH2PnAugQZem2Gkwqp/E9s80oEmGGZzWTGxI276tdZScW2zOv74zNnUg49XCzCsOY2KSI8PfGgBcATTuMJaYogty30xcRkILHVpnD3R2Ylye2CfaPUn64cQl9PkB/L5Cu0mv+cXTzqlBrDWFuPxC7vnQRpskuAlfdU8Un0nP3vseQKxpiNT3DhBlI847V0oth+D+vXvmXLZ22DIGjVlhx3EmPbqAGvNa6yIs9IN33Ng==; 5:KsDxKIVU6q0Gen91hf3cUlpzqiT69tMHWO6swSCP7Q4Wgyo3Q4IwnSv341fzxf1qugqT4TbEktEgIRk8xPTNo5ZlQHrzZCvmMPxU9p7Z7e0H1P+l+WkbXqiCeDH2N4M6fduCg6jIH7LTGJxpDTz3pPxzdWa6T+u5gmBv4CPwzog=; 7:TW7kQ3RdzIJuaFyCgiOfcoWFcR3f42kvyQg5JDNK75FnhrAE2WhzoPSeSfkcGeB7xIMPgatINqIWk4/KzPan5a3pr9HID4QuO+3FfU1mcIjx2JaXWCxxJfjV/y/p0ShZVt6Rfjiv1uWzllB+3GyXkQ== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 1a6fe06b-b8d8-4d10-8e64-08d6421ebf85 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB5544; x-ms-traffictypediagnostic: DB7PR05MB5544: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231382)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:DB7PR05MB5544; BCL:0; PCL:0; RULEID:; SRVR:DB7PR05MB5544; x-forefront-prvs: 084674B2CF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(346002)(39860400002)(136003)(396003)(366004)(189003)(199004)(6306002)(3846002)(6116002)(105586002)(229853002)(55016002)(71190400001)(2900100001)(33656002)(8936002)(26005)(102836004)(186003)(76176011)(81156014)(81166006)(8676002)(305945005)(74316002)(6506007)(53936002)(107886003)(6246003)(7736002)(9686003)(68736007)(106356001)(6436002)(99286004)(5660300001)(66066001)(7696005)(2906002)(110136005)(486006)(54906003)(478600001)(11346002)(476003)(71200400001)(2501003)(966005)(14454004)(4326008)(25786009)(256004)(86362001)(97736004)(316002)(446003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB5544; H:DB7PR05MB4426.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 6NYqKr0sSZxR8aqBGewQ6INxJ0QonLj9cQSgiWpbNVsvNlzMUmF+CmduYd2/urJSmpJhGwE4y1b0jWxAgBFWeyEksqwmzHtKz2kjDWvq/9vC7o/yaQuCsO5Ya+2R1yjRHIT41bxxF98FaCfltL93pMoFp3FWiO6nLrFm+ZNYzsh8oKSUL3dSLMqrLTQt7k8zEEYynf/HNcp9vO/gTfR/Sj/WKodvYsA4mWL8+5UuJyMIM6O76KgwXHPpnUfF1yZM4ZFpFroDSNYmCTgjawfZnbu3RNsivJKKYvswmtSmcAxk6Sme2C5EadXTCkwgTV7ID4toAO2hSBL6r9fn+Usi9N/wNV7PL1RPx5RuISFugPQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a6fe06b-b8d8-4d10-8e64-08d6421ebf85 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2018 06:28:34.7281 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB5544 Subject: Re: [dpdk-dev] [PATCH v4] net/mlx5: set RSS key to NULL to indicate default RSS 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: , X-List-Received-Date: Sun, 04 Nov 2018 06:28:38 -0000 Hi Ophir,=20 Saturday, November 3, 2018 7:40 PM, Ophir Munk > Subject: [PATCH v4] net/mlx5: set RSS key to NULL to indicate default RSS >=20 > Applications which add RSS rules must supply an RSS key and length. > If an application is only interested in default RSS operation it should n= ot care > about the exact RSS key. > By setting the key to NULL - the PMD will use the default RSS key. > In addition if the application does not care about the RSS type it can se= t it to 0 > and the PMD will use the default type (ETH_RSS_IP). >=20 > Signed-off-by: Ophir Munk > --- > v1: > Initial release >=20 > v2, v3: > Rebase + following code review >=20 > v4: > Avoid sgementation faulut by not allowing in cation validation key=3DNULL= ane > key_len!=3D0 See https://patches.dpdk.org/patch/47645/ >=20 >=20 > doc/guides/nics/mlx5.rst | 1 + > drivers/net/mlx5/mlx5_flow.c | 8 +++++++- > drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++-- > drivers/net/mlx5/mlx5_flow_verbs.c | 8 ++++++-- > drivers/net/mlx5/mlx5_rxq.c | 18 ++++-------------- > 5 files changed, 23 insertions(+), 19 deletions(-) >=20 > diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index > 1dc3282..0303152 100644 > --- a/doc/guides/nics/mlx5.rst > +++ b/doc/guides/nics/mlx5.rst > @@ -54,6 +54,7 @@ Features > - Support for scattered TX and RX frames. > - IPv4, IPv6, TCPv4, TCPv6, UDPv4 and UDPv6 RSS on any number of queues. > - Several RSS hash keys, one for each flow type. > +- Default RSS operation with no hash key specification. > - Configurable RETA table. > - Support for multiple MAC addresses. > - VLAN filtering. > diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c > index 107a4f0..be2cc6b 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -912,7 +912,13 @@ uint32_t mlx5_flow_adjust_priority(struct > rte_eth_dev *dev, int32_t priority, >=20 > RTE_FLOW_ERROR_TYPE_ACTION_CONF, > &rss->level, > "tunnel RSS is not supported"); > - if (rss->key_len < MLX5_RSS_HASH_KEY_LEN) > + /* allow RSS key_len 0 in case of NULL (default) RSS key. */ > + if (rss->key_len =3D=3D 0 && rss->key !=3D NULL) > + return rte_flow_error_set(error, ENOTSUP, > + > RTE_FLOW_ERROR_TYPE_ACTION_CONF, > + &rss->key_len, > + "RSS hash key length 0"); > + if (rss->key_len > 0 && rss->key_len < MLX5_RSS_HASH_KEY_LEN) > return rte_flow_error_set(error, ENOTSUP, >=20 > RTE_FLOW_ERROR_TYPE_ACTION_CONF, > &rss->key_len, > diff --git a/drivers/net/mlx5/mlx5_flow_dv.c > b/drivers/net/mlx5/mlx5_flow_dv.c index c11ecd4..cdf3377 100644 > --- a/drivers/net/mlx5/mlx5_flow_dv.c > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > @@ -1758,8 +1758,11 @@ > memcpy((*flow->queue), rss->queue, > rss->queue_num * sizeof(uint16_t)); > flow->rss.queue_num =3D rss->queue_num; > - memcpy(flow->key, rss->key, MLX5_RSS_HASH_KEY_LEN); > - flow->rss.types =3D rss->types; > + /* NULL RSS key indicates default RSS key. */ > + rss_key =3D !rss->key ? rss_hash_default_key : rss->key; Getting compilation error:=20 error: 'rss_key' undeclared (first use in this function) = = =20 rss_key =3D !rss->key ? rss_hash_default_key : rss->key; =20 please address.=20 Other than that, no more comments. You can put my ack when on the next vers= ion.=20 > + memcpy(flow->key, rss_key, MLX5_RSS_HASH_KEY_LEN); > + /* RSS type 0 indicates default RSS type ETH_RSS_IP. */ > + flow->rss.types =3D !rss->types ? ETH_RSS_IP : rss->types; > flow->rss.level =3D rss->level; > /* Added to array only in apply since we need the QP */ > flow->actions |=3D MLX5_FLOW_ACTION_RSS; diff --git > a/drivers/net/mlx5/mlx5_flow_verbs.c > b/drivers/net/mlx5/mlx5_flow_verbs.c > index 2e506b9..54ac620 100644 > --- a/drivers/net/mlx5/mlx5_flow_verbs.c > +++ b/drivers/net/mlx5/mlx5_flow_verbs.c > @@ -925,14 +925,18 @@ > struct mlx5_flow *dev_flow) > { > const struct rte_flow_action_rss *rss =3D action->conf; > + const uint8_t *rss_key; > struct rte_flow *flow =3D dev_flow->flow; >=20 > if (flow->queue) > memcpy((*flow->queue), rss->queue, > rss->queue_num * sizeof(uint16_t)); > flow->rss.queue_num =3D rss->queue_num; > - memcpy(flow->key, rss->key, MLX5_RSS_HASH_KEY_LEN); > - flow->rss.types =3D rss->types; > + /* NULL RSS key indicates default RSS key. */ > + rss_key =3D !rss->key ? rss_hash_default_key : rss->key; > + memcpy(flow->key, rss_key, MLX5_RSS_HASH_KEY_LEN); > + /* RSS type 0 indicates default RSS type (ETH_RSS_IP). */ > + flow->rss.types =3D !rss->types ? ETH_RSS_IP : rss->types; > flow->rss.level =3D rss->level; > *action_flags |=3D MLX5_FLOW_ACTION_RSS; } diff --git > a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index > 6df8997..eef4850 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -1794,10 +1794,6 @@ struct mlx5_hrxq * > rte_errno =3D ENOMEM; > return NULL; > } > - if (!rss_key_len) { > - rss_key_len =3D MLX5_RSS_HASH_KEY_LEN; > - rss_key =3D rss_hash_default_key; > - } > #ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT > if (tunnel) { > qp_init_attr.comp_mask =3D > @@ -1823,11 +1819,8 @@ struct mlx5_hrxq * > IBV_QP_INIT_ATTR_RX_HASH, > .rx_hash_conf =3D (struct ibv_rx_hash_conf){ > .rx_hash_function =3D > IBV_RX_HASH_FUNC_TOEPLITZ, > - .rx_hash_key_len =3D rss_key_len ? > rss_key_len : > - MLX5_RSS_HASH_KEY_LEN, > - .rx_hash_key =3D rss_key ? > - (void *)(uintptr_t)rss_key : > - rss_hash_default_key, > + .rx_hash_key_len =3D rss_key_len, > + .rx_hash_key =3D (void *)(uintptr_t)rss_key, > .rx_hash_fields_mask =3D hash_fields, > }, > .rwq_ind_tbl =3D ind_tbl->ind_table, > @@ -1845,11 +1838,8 @@ struct mlx5_hrxq * > IBV_QP_INIT_ATTR_RX_HASH, > .rx_hash_conf =3D (struct ibv_rx_hash_conf){ > .rx_hash_function =3D > IBV_RX_HASH_FUNC_TOEPLITZ, > - .rx_hash_key_len =3D rss_key_len ? > rss_key_len : > - MLX5_RSS_HASH_KEY_LEN, > - .rx_hash_key =3D rss_key ? > - (void *)(uintptr_t)rss_key : > - rss_hash_default_key, > + .rx_hash_key_len =3D rss_key_len, > + .rx_hash_key =3D (void *)(uintptr_t)rss_key, > .rx_hash_fields_mask =3D hash_fields, > }, > .rwq_ind_tbl =3D ind_tbl->ind_table, > -- > 1.8.3.1