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 C57D8A034C for ; Fri, 12 Aug 2022 09:27:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BA4B8406A2; Fri, 12 Aug 2022 09:27:05 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2042.outbound.protection.outlook.com [40.107.93.42]) by mails.dpdk.org (Postfix) with ESMTP id D998340697 for ; Fri, 12 Aug 2022 09:27:04 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I4Iw1WAWzIXVwmfSdKpsHJz1LP29jEXsrP7enBdLYCGCdGQ0LJv7lMkARy0hW0Jzhn1yPPzOh8etyxIalDJ6Vbt0Fy+3wNCDz+5YiwKt1NsaAfMKCSBpjqlFD8Qs5glDAa4QV+D1TeqovKcpeW0lSsXokM6jGiACMojAywLU/67gRHdBd5FLgkmeKb+ZTSVSVGgvhr/i4ltj+5rjlGpsf0/5nyXhTtxEMXnOY0FG9ORK2ZeVYOFy+5CiTbSib1aTsTkj1Pu2ORyIYEugSPdMnYWuj+nlLOyr5dAovBayN5U6ViSk+u/vTVxFEwOx4TXiysXV/+5W/vLh3v9nbfavNA== 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=OycYBk6GrEeqbMLtNIF6fKSgASKCcY6pDYCMKgSD4hM=; b=BXU8W6TDKa2270sxJIc45If2cx9J1CzUrALCT1IjirCYmndcRB/Kww9rQE3+D8TbApCB7Qa1yZw5aWJUvAbmK4aVzhuLYCYSfQ95wRcWB4lB2JjDMnL3lZ03LX0I9ZW7O0PHbGJkyw54BVPWSZ8DlM/7KSvZ9zfmlxOpca7dThrTlyynSkNMdpxJo0t/TFMUqvn10boWoJcBpRvFXTP9ImYP3sGPP19by/D+17jh2Vs0nWaDA/SQdDK+hWjLllIYMuNIsz4N+IgKaTQUOP19hhdBJHDsdtI+ZzdvXChacECJZS01kt4LfG3m3RFpYVyvXX4GhsqzMPq+IZlrzHTuXA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OycYBk6GrEeqbMLtNIF6fKSgASKCcY6pDYCMKgSD4hM=; b=W0f1O4Zi+oFstRwup6YIoG5mRhxLAlFqZ9Pq2yww26W1RGFDdyjB/NA7CeVTOuJeumP99GbcufpemY3M4IgGGSLweLYZWdlteugyJET6o9QPMNleKppyIfxfpWuE0tZIbS51Xuv8gMo0oeXfnIT619cHQQD7pP3Z8o+QiC1JakkS3kBHoGr7wY3v6XgUe1x373JCDpO4gOCBF3anFdofY0z8WyVyeBQcfbasUQOLnegResNBl1cnFULY/0XY5pIDRDhi2Bvkw3z6/J1A73pLD9rJoQATDQtgCqcxcdSZPhyivQX+b/v5Eq1tqgyIpTC22u5v3fDUNToFh/IZAsSoFg== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39d::14) by IA1PR12MB6435.namprd12.prod.outlook.com (2603:10b6:208:3ad::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11; Fri, 12 Aug 2022 07:27:03 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::442b:be8b:c1ec:a6ee]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::442b:be8b:c1ec:a6ee%3]) with mapi id 15.20.5504.024; Fri, 12 Aug 2022 07:27:03 +0000 From: "Xueming(Steven) Li" To: Alexander Kozyrev , "stable@dpdk.org" CC: Slava Ovsiienko , "christian.ehrhardt@canonical.com" , "ktraynor@redhat.com" , "bluca@debian.org" Subject: RE: [PATCH 20.11] net/mlx5: handle MPRQ incompatibility with external buffers Thread-Topic: [PATCH 20.11] net/mlx5: handle MPRQ incompatibility with external buffers Thread-Index: AQHYrRphA1/OFMqY5kq8yxqmvbDjwK2q35OA Date: Fri, 12 Aug 2022 07:27:02 +0000 Message-ID: References: <20220811003556.1081794-1-akozyrev@nvidia.com> In-Reply-To: <20220811003556.1081794-1-akozyrev@nvidia.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=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7c538855-267a-46dd-2916-08da7c340d4c x-ms-traffictypediagnostic: IA1PR12MB6435:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: magYTyimcxwugrHysCzK2B3aIV/xllNU973QZV86IAL6an0UTaPF0k5af6KLHpPYxVWidLG3WeEKjtDqN3Aa3YtjSavwG+M6fLCxLMtc75qeQ0sxwRwH9pB49rfWQxfK3V59T9KIttaNBWtE702pVPGJT24aRTmwxKAAWyIOS0ze6V9SghC978O2MP2wq6tVKU+ptZRMKojRAjD1Z4yn1BjtxmrW8Yjfm9LlJZIzG92gWJwno+sBq1ISc3g/A+V6aWdE0b59KCqWRlokbHDJavFRMIg95kxanbuNXdnL8w19F6WPgKMl1Vl4Gs0xg+dKgG5Az+f/Igoy3byHxKgDTfDhMXAZdIIRhkHHmnAqv6EfZ3r45rePySDRbZBelgvi0yaYp20Xm6fYFRB/5NHt1sKObfwOZlUMKTfsCB5VBkxE/yYleWIe1aNmlFyFCWh7DJYLZrQ5Xc/NZOW3i+msOEAocLZDUhAF5Hai0Z6AG8EpRFTLHVo/ZQPwMH8Qljg+42wt3IjZvN+KZ/0iDMw1KaGtRIaVedpKaBXKjdvo0oir2muyHpmAd+/MjbBsFn3Py6UYSy6mAqE6vM7SNcLLMpTY6gorsdBBgsot5Hpqv6IGNwhnUtDmJA1GtLxbbiYempKBMoLrDtJTBwHwUUizQf7y56vDfPmr45eviwDQO6/J7XtXJ3v5EJamR62HM6bZAOPHvDyo1XMLkBJatARd4sAmLz6fKvDQ8eJX86IKwYrfXDn9h+isexJwuKTmiqiVXA7j2efheYS0avw/aJr4o/oA4s8FfZDoUWO+Ja87wvVSrYfj+3XsCqhwxSXx2uHA x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5373.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(39860400002)(366004)(346002)(396003)(136003)(33656002)(86362001)(53546011)(122000001)(38070700005)(9686003)(7696005)(83380400001)(186003)(6506007)(54906003)(478600001)(316002)(71200400001)(41300700001)(66946007)(64756008)(110136005)(66556008)(66446008)(38100700002)(8676002)(5660300002)(52536014)(8936002)(76116006)(66476007)(4326008)(2906002)(26005)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5S4jIk+br+8gYfyKE/NK17jyWAyTB8Rd6T49GN8mUVAul9r85CRkSQkWjCB1?= =?us-ascii?Q?odsw++9QaHLPsAMhQNjI7SGWPB1KS7ykLAbsrOpHUf9DIhh1LllmW8Kt0i93?= =?us-ascii?Q?35WMhnjDysARQaZVqUqMkrSRiTJH/9Os9ZIsxmFwsJztpa90MGtlFetcb/ig?= =?us-ascii?Q?0xQRkv/NGq4cdf3w4ZqT4kSbemPjBYEWS4DLwlW+DdUKZk4Q+W1G0Nu/fwKB?= =?us-ascii?Q?6dxhkBDwdQHQ0fnX6xKWeTGcc10LxGdVv0ZHWy7aW7fYJ82LPSOCMPFFOWaq?= =?us-ascii?Q?EOxZFCmBZ1aVBiKMqRg5ZXwSlTQ2tguhTNB3fp5LXhVYRCL0VC41AHRSRd8S?= =?us-ascii?Q?MTwXFY7YXSKf/fQWB6btVUxWkFdDBLHQxoafbFVGcmPqnax2VoxdG2AxedUu?= =?us-ascii?Q?Fqd5+EHnI7mxEGdYH3nVxy+xQyVjw21BBifpMzx3ksRWgr/THeZZ67RTl/OB?= =?us-ascii?Q?SgJIIi2w0Ys6t2YI7MFhxkakd57Ahlc/ecK1Q5d0q+hV/HR/Of7Yi1/bGZWO?= =?us-ascii?Q?EASGO3/hjSutP4XAWk5SHXaoY/GHe2ZqrKN7KLk4SkRtDtUwIc556TDAb37v?= =?us-ascii?Q?B7aoQr24f5YggZMmRzXFMENO5PuTM6P9gbSDnMq258qJ8xoNJaXGYNBb2Oxg?= =?us-ascii?Q?Ykyp04B3+mjyXLUyttgRWqlESmdLFfE9eyGIEJ4c7A90TN2MnBLeeq0/QJOl?= =?us-ascii?Q?TAif6Hg5S6fjCA6jP3XJ92O/zYs1BlSX5dMyej+ZFLXKjclWy5U6eDQpuR8s?= =?us-ascii?Q?g22dDUavuCiQw0bi87eIzSGVnUH2rbgyMvT47aDL/IT1XGufK59DtU99j2M3?= =?us-ascii?Q?hK4Dne62FPbSTGke1rtfJFwnYgm1A6JAoa51H3whY32AzrkVB3EySCT6b86q?= =?us-ascii?Q?vwFWZ77/SDe+5OwaMdE65h2q1Fd73NxpbARm6697CUqDgKj8CMqFUxXPtSxW?= =?us-ascii?Q?xKVAUmzE0eZfZZFHvCr+keDPojvAnbkbZHvDCjfHdG0l0ZHZoVw5cwJ3czWg?= =?us-ascii?Q?ipvtIZx1BRvEeuKhp+t5HyI/GrqXnRUYpbqnG6rnB+lxm+H0KVS7N3SRRJqa?= =?us-ascii?Q?11KTUFlDU5bN7Xx/nuQvgHDj1Pi33Tp7KyAkebXq5yj7BLvAJD8nDN8KxYfa?= =?us-ascii?Q?RyLlzkfKfXd5kRdRYeEHxngd9rqB/bPVGSalO+JBRlaJN/bSBeiYFcf1jLgB?= =?us-ascii?Q?2Rx4BDOr7i0AREa94Qr931v4GvodgRdmi2Md/1dOAN8q2ybqORuHwm/gTWkm?= =?us-ascii?Q?KNyz9dVThmg+c0ljZfLtmwwdblqYqObGAHvUdrY+oq3feYKrDlC3UZFoeCse?= =?us-ascii?Q?xxyZk75rf5u/h5F1oVUVfMrg7TIrZ0Oe2ntaNDOSZjDME4xhkOOEXaCXJia1?= =?us-ascii?Q?jVi1+zPijAfg2r2YOvy/aatLjTDoJFkgNn0qiu4wL0EgsNhH5tqJBwaNXAUr?= =?us-ascii?Q?Wq/esDe4XrtdqtvIJlnOLk1yGW6Kltu+aapELgc8dV2WjXaYLGcIFRLaWwIK?= =?us-ascii?Q?b4bG1GG37h+CBL5JzQiOTxxD5ZGnpGrsGV4S/hyvpQguKDHorlia/afv8bUT?= =?us-ascii?Q?2KzPGullwT3bIi/qcMXS/TDy6u7iWpD3IPEm5LQq?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c538855-267a-46dd-2916-08da7c340d4c X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Aug 2022 07:27:02.8960 (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: c/mPPXquwA4wuW9fMq33SuytW4jyy1is/NByiiSiDcsbTCSyf7NpjkFcdKwcj4d4Uz2cJm7cLTn2OsQ8kcUDVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6435 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Applied, thanks! > -----Original Message----- > From: Alexander Kozyrev > Sent: Thursday, August 11, 2022 8:36 AM > To: stable@dpdk.org > Cc: Slava Ovsiienko ; Xueming(Steven) Li ; christian.ehrhardt@canonical.com; > ktraynor@redhat.com; bluca@debian.org > Subject: [PATCH 20.11] net/mlx5: handle MPRQ incompatibility with externa= l buffers >=20 > [ upstream commit 3a29cb3a730ba0def6b088c969da379a9ffea988 ] >=20 > Multi-Packet Rx queue uses PMD-managed buffers to store packets. > These buffers are externally attached to user mbufs. > This conflicts with the feature that allows using user-managed externally= attached buffers in an application. > Fall back to SPRQ in case external buffers mempool is configured. > The limitation is already documented in mlx5 guide. >=20 > Signed-off-by: Alexander Kozyrev > Acked-by: Viacheslav Ovsiienko > --- > drivers/net/mlx5/mlx5_rxq.c | 23 ++++++++++++++++------- drivers/net/m= lx5/mlx5_rxtx.h | 2 +- > 2 files changed, 17 insertions(+), 8 deletions(-) >=20 > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c in= dex 4a263a5803..80d9d2fe12 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -754,6 +754,7 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t= idx, uint16_t desc, > (struct rte_eth_rxseg_split *)conf->rx_seg; > struct rte_eth_rxseg_split rx_single =3D {.mp =3D mp}; > uint16_t n_seg =3D conf->rx_nseg; > + bool is_extmem =3D false; > int res; >=20 > if (mp) { > @@ -764,6 +765,8 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t= idx, uint16_t desc, > */ > rx_seg =3D &rx_single; > n_seg =3D 1; > + is_extmem =3D rte_pktmbuf_priv_flags(mp) & > + RTE_PKTMBUF_POOL_F_PINNED_EXT_BUF; > } > if (n_seg > 1) { > uint64_t offloads =3D conf->offloads | > @@ -783,7 +786,8 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t= idx, uint16_t desc, > res =3D mlx5_rx_queue_pre_setup(dev, idx, &desc); > if (res) > return res; > - rxq_ctrl =3D mlx5_rxq_new(dev, idx, desc, socket, conf, rx_seg, n_seg); > + rxq_ctrl =3D mlx5_rxq_new(dev, idx, desc, socket, > + conf, rx_seg, n_seg, is_extmem); > if (!rxq_ctrl) { > DRV_LOG(ERR, "port %u unable to allocate queue index %u", > dev->data->port_id, idx); > @@ -1397,6 +1401,8 @@ mlx5_max_lro_msg_size_adjust(struct rte_eth_dev *de= v, uint16_t idx, > * Log number of strides to configure for this queue. > * @param actual_log_stride_size > * Log stride size to configure for this queue. > + * @param is_extmem > + * Is external pinned memory pool used. > * > * @return > * 0 if Multi-Packet RQ is supported, otherwise -1. > @@ -1405,7 +1411,8 @@ static int > mlx5_mprq_prepare(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, > bool rx_seg_en, uint32_t min_mbuf_size, > uint32_t *actual_log_stride_num, > - uint32_t *actual_log_stride_size) > + uint32_t *actual_log_stride_size, > + bool is_extmem) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > struct mlx5_dev_config *config =3D &priv->config; @@ -1423,7 +1430,7 @@= mlx5_mprq_prepare(struct rte_eth_dev *dev, uint16_t > idx, uint16_t desc, > log_max_stride_size); > uint32_t log_stride_wqe_size; >=20 > - if (mlx5_check_mprq_support(dev) !=3D 1 || rx_seg_en) > + if (mlx5_check_mprq_support(dev) !=3D 1 || rx_seg_en || is_extmem) > goto unsupport; > /* Checks if chosen number of strides is in supported range. */ > if (config->mprq.log_stride_num > log_max_stride_num || @@ -1489,7 +149= 6,7 @@ mlx5_mprq_prepare(struct rte_eth_dev *dev, > uint16_t idx, uint16_t desc, > " rxq_num =3D %u, stride_sz =3D %u, stride_num =3D %u\n" > " supported: min_rxqs_num =3D %u, min_buf_wqe_sz =3D %u" > " min_stride_sz =3D %u, max_stride_sz =3D %u).\n" > - "Rx segment is %senable.", > + "Rx segment is %senabled. External mempool is %sused.", > dev->data->port_id, min_mbuf_size, desc, priv->rxqs_n, > RTE_BIT32(config->mprq.log_stride_size), > RTE_BIT32(config->mprq.log_stride_num), > @@ -1497,7 +1504,7 @@ mlx5_mprq_prepare(struct rte_eth_dev *dev, uint16_t= idx, uint16_t desc, > RTE_BIT32(config->mprq.log_min_stride_wqe_size), > RTE_BIT32(config->mprq.log_min_stride_size), > RTE_BIT32(config->mprq.log_max_stride_size), > - rx_seg_en ? "" : "not "); > + rx_seg_en ? "" : "not ", is_extmem ? "" : "not "); > return -1; > } >=20 > @@ -1519,7 +1526,8 @@ mlx5_mprq_prepare(struct rte_eth_dev *dev, uint16_t= idx, uint16_t desc, struct mlx5_rxq_ctrl * > mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, > unsigned int socket, const struct rte_eth_rxconf *conf, > - const struct rte_eth_rxseg_split *rx_seg, uint16_t n_seg) > + const struct rte_eth_rxseg_split *rx_seg, uint16_t n_seg, > + bool is_extmem) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > struct mlx5_rxq_ctrl *tmpl; > @@ -1541,7 +1549,8 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx,= uint16_t desc, > const int mprq_en =3D !mlx5_mprq_prepare(dev, idx, desc, rx_seg_en, > non_scatter_min_mbuf_size, > &mprq_log_actual_stride_num, > - &mprq_log_actual_stride_size); > + &mprq_log_actual_stride_size, > + is_extmem); > /* > * Always allocate extra slots, even if eventually > * the vector Rx will not be used. > diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h = index 237a7faa5c..9e00031ed6 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.h > +++ b/drivers/net/mlx5/mlx5_rxtx.h > @@ -336,7 +336,7 @@ struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev= *dev, uint16_t idx, > uint16_t desc, unsigned int socket, > const struct rte_eth_rxconf *conf, > const struct rte_eth_rxseg_split *rx_seg, > - uint16_t n_seg); > + uint16_t n_seg, bool is_extmem); > struct mlx5_rxq_ctrl *mlx5_rxq_hairpin_new > (struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, > const struct rte_eth_hairpin_conf *hairpin_conf); > -- > 2.18.2