From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70052.outbound.protection.outlook.com [40.107.7.52]) by dpdk.org (Postfix) with ESMTP id 7C61D1B17F for ; Thu, 2 May 2019 20:14:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qEQTHl5tpP41kMiBMRmkze3eJWmVCswQ29Z2FBvsgks=; b=S2u1eMhSLmBsexe1k6GX7g61U9O8z+qGqZfPSUG4kRVYfqu6b5QaKpElhrs4irMEzqBX/PVzcyBRCwpO8X9x+B1AUk1pibitKiGxqo89J0mgwXIj8T4TQp6BP7gIGS9uStl8o+aDkgRzqa2C4prFWfjLf7L947rGDfHaIbDk9E4= Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com (52.134.72.27) by DB3PR0502MB3979.eurprd05.prod.outlook.com (52.134.67.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1856.11; Thu, 2 May 2019 18:14:01 +0000 Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::e8d5:4aff:902d:6e98]) by DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::e8d5:4aff:902d:6e98%5]) with mapi id 15.20.1856.008; Thu, 2 May 2019 18:14:00 +0000 From: Yongseok Koh To: Dekel Peled CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v2 4/4] net/mlx5: move locally used functions to static Thread-Index: AQHVAPhw/mh370bO4kGNuwl6rzUThKZYI7AA Date: Thu, 2 May 2019 18:14:00 +0000 Message-ID: References: In-Reply-To: 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=yskoh@mellanox.com; x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7150d74f-d3e4-4556-a757-08d6cf29f3c6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:DB3PR0502MB3979; x-ms-traffictypediagnostic: DB3PR0502MB3979: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1013; x-forefront-prvs: 0025434D2D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(199004)(189003)(6436002)(6116002)(3846002)(68736007)(14454004)(73956011)(37006003)(91956017)(316002)(54906003)(6862004)(8936002)(6636002)(83716004)(4326008)(186003)(71200400001)(71190400001)(66946007)(99286004)(2906002)(66066001)(66476007)(66556008)(66446008)(64756008)(229853002)(26005)(6486002)(5660300002)(30864003)(76116006)(486006)(305945005)(7736002)(6506007)(82746002)(6246003)(8676002)(53936002)(81166006)(81156014)(14444005)(25786009)(33656002)(102836004)(256004)(6512007)(86362001)(446003)(11346002)(476003)(76176011)(478600001)(36756003)(2616005)(53546011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0502MB3979; H:DB3PR0502MB3980.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: y59CBSub/w19E+HRq8ANkv6xL5FE3jeLwXxLb4Ztq/RzIbz+1QQ/QRPTPwvLia00zZN2yNVIqWkpNl4jxjALuiHjoOyB8cUPnP7Hgr7NFJ1BGRrgCB6n4b1b0vTr9UE+85ShqAooWa58rmE+uLFYN1yVKyje3Y/BuQSV2Il72B3AshtGrIm6gVdBC96Ad1w4LtUk7ZnV+BuoRZU4OzlHv4nteJboUrpey0M1Q8dCbZ0F6oghrNn+Vh9bacaBvUqPOL6eXQ2DyGL4boeVa3Z5fXmVPenP+L8sdcokcSnWSUqYPyYLZbJB1lKHPWoeD6f1JT8CoziVNfmMF+Se3rXufNs8X+0vUxOi5xze1hocVMzw6Al7cEfp/OorutW/mB2Qf6W9FOlpYitAUjcjhfU28S5DXI3HTB75ixiB3JzyWbo= Content-Type: text/plain; charset="us-ascii" Content-ID: <4770BB44AFB33343903E656EE87F4EDF@eurprd05.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7150d74f-d3e4-4556-a757-08d6cf29f3c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2019 18:14:00.8203 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB3979 Subject: Re: [dpdk-dev] [PATCH v2 4/4] net/mlx5: move locally used functions to static 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: Thu, 02 May 2019 18:14:02 -0000 > On May 2, 2019, at 8:01 AM, Dekel Peled wrote: >=20 > Multiple functions were declared in header file mlx5_rxtx.h, > inplemented in mlx5_rxq.c, and called only in mlx5_rxq.c. >=20 > This patch moves all these functions declarations into mlx5_rxq.c, > as static functions. > Some functions implementation was copied higher in the file to > precede the functions calls. >=20 > Signed-off-by: Dekel Peled > --- Acked-by: Yongseok Koh > drivers/net/mlx5/mlx5_rxq.c | 185 +++++++++++++++++++++-----------------= ----- > drivers/net/mlx5/mlx5_rxtx.h | 16 ---- > 2 files changed, 92 insertions(+), 109 deletions(-) >=20 > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c > index a547f2a..36fd0b3 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -65,7 +65,7 @@ > * @return > * 1 if supported, negative errno value if not. > */ > -inline int > +static inline int > mlx5_check_mprq_support(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -418,6 +418,33 @@ > } >=20 > /** > + * Verify if the queue can be released. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * RX queue index. > + * > + * @return > + * 1 if the queue can be released > + * 0 if the queue can not be released, there are references to it. > + * Negative errno and rte_errno is set if queue doesn't exist. > + */ > +static int > +mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv =3D dev->data->dev_private; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (!(*priv->rxqs)[idx]) { > + rte_errno =3D EINVAL; > + return -rte_errno; > + } > + rxq_ctrl =3D container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq= ); > + return (rte_atomic32_read(&rxq_ctrl->refcnt) =3D=3D 1); > +} > + > +/** > * > * @param dev > * Pointer to Ethernet device structure. > @@ -505,6 +532,63 @@ > } >=20 > /** > + * Get an Rx queue Verbs object. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * Queue index in DPDK Rx queue array > + * > + * @return > + * The Verbs object if it exists. > + */ > +static struct mlx5_rxq_ibv * > +mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv =3D dev->data->dev_private; > + struct mlx5_rxq_data *rxq_data =3D (*priv->rxqs)[idx]; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (idx >=3D priv->rxqs_n) > + return NULL; > + if (!rxq_data) > + return NULL; > + rxq_ctrl =3D container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > + if (rxq_ctrl->ibv) > + rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > + return rxq_ctrl->ibv; > +} > + > +/** > + * Release an Rx verbs queue object. > + * > + * @param rxq_ibv > + * Verbs Rx queue object. > + * > + * @return > + * 1 while a reference on it exists, 0 when freed. > + */ > +static int > +mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > +{ > + assert(rxq_ibv); > + assert(rxq_ibv->wq); > + assert(rxq_ibv->cq); > + if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > + rxq_free_elts(rxq_ibv->rxq_ctrl); > + claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > + claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > + if (rxq_ibv->channel) > + claim_zero(mlx5_glue->destroy_comp_channel > + (rxq_ibv->channel)); > + LIST_REMOVE(rxq_ibv, next); > + rte_free(rxq_ibv); > + return 0; > + } > + return 1; > +} > + > +/** > * Allocate queue vector and fill epoll fd list for Rx interrupts. > * > * @param dev > @@ -1032,64 +1116,6 @@ struct mlx5_rxq_ibv * > } >=20 > /** > - * Get an Rx queue Verbs object. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * Queue index in DPDK Rx queue array > - * > - * @return > - * The Verbs object if it exists. > - */ > -struct mlx5_rxq_ibv * > -mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv =3D dev->data->dev_private; > - struct mlx5_rxq_data *rxq_data =3D (*priv->rxqs)[idx]; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (idx >=3D priv->rxqs_n) > - return NULL; > - if (!rxq_data) > - return NULL; > - rxq_ctrl =3D container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > - if (rxq_ctrl->ibv) { > - rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > - } > - return rxq_ctrl->ibv; > -} > - > -/** > - * Release an Rx verbs queue object. > - * > - * @param rxq_ibv > - * Verbs Rx queue object. > - * > - * @return > - * 1 while a reference on it exists, 0 when freed. > - */ > -int > -mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > -{ > - assert(rxq_ibv); > - assert(rxq_ibv->wq); > - assert(rxq_ibv->cq); > - if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > - rxq_free_elts(rxq_ibv->rxq_ctrl); > - claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > - claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > - if (rxq_ibv->channel) > - claim_zero(mlx5_glue->destroy_comp_channel > - (rxq_ibv->channel)); > - LIST_REMOVE(rxq_ibv, next); > - rte_free(rxq_ibv); > - return 0; > - } > - return 1; > -} > - > -/** > * Verify the Verbs Rx queue list is empty > * > * @param dev > @@ -1538,33 +1564,6 @@ struct mlx5_rxq_ctrl * > } >=20 > /** > - * Verify if the queue can be released. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * RX queue index. > - * > - * @return > - * 1 if the queue can be released > - * 0 if the queue can not be released, there are references to it. > - * Negative errno and rte_errno is set if queue doesn't exist. > - */ > -int > -mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv =3D dev->data->dev_private; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (!(*priv->rxqs)[idx]) { > - rte_errno =3D EINVAL; > - return -rte_errno; > - } > - rxq_ctrl =3D container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq= ); > - return (rte_atomic32_read(&rxq_ctrl->refcnt) =3D=3D 1); > -} > - > -/** > * Verify the Rx Queue list is empty > * > * @param dev > @@ -1601,7 +1600,7 @@ struct mlx5_rxq_ctrl * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1665,7 +1664,7 @@ struct mlx5_ind_table_ibv * > * @return > * An indirection table if found. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1700,7 +1699,7 @@ struct mlx5_ind_table_ibv * > * @return > * 1 while a reference on it exists, 0 when freed. > */ > -int > +static int > mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > struct mlx5_ind_table_ibv *ind_tbl) > { > @@ -1984,7 +1983,7 @@ struct mlx5_hrxq * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_rxq_ibv * > +static struct mlx5_rxq_ibv * > mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2044,7 +2043,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -void > +static void > mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2067,7 +2066,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2110,7 +2109,7 @@ struct mlx5_ind_table_ibv * > * @param dev > * Pointer to Ethernet device. > */ > -void > +static void > mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h > index 1732e32..4512490 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.h > +++ b/drivers/net/mlx5/mlx5_rxtx.h > @@ -246,7 +246,6 @@ struct mlx5_txq_ctrl { >=20 > extern uint8_t rss_hash_default_key[]; >=20 > -int mlx5_check_mprq_support(struct rte_eth_dev *dev); > int mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq); > int mlx5_mprq_enabled(struct rte_eth_dev *dev); > int mlx5_mprq_free_mp(struct rte_eth_dev *dev); > @@ -260,10 +259,6 @@ int mlx5_rx_queue_setup(struct rte_eth_dev *dev, uin= t16_t idx, uint16_t desc, > int mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > int mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > struct mlx5_rxq_ibv *mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t i= dx); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t = idx); > -int mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev); > -void mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev); > int mlx5_rxq_ibv_verify(struct rte_eth_dev *dev); > struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, > uint16_t desc, unsigned int socket, > @@ -271,20 +266,9 @@ struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_de= v *dev, uint16_t idx, > struct rte_mempool *mp); > struct mlx5_rxq_ctrl *mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx)= ; > int mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx); > -int mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx); > int mlx5_rxq_verify(struct rte_eth_dev *dev); > int rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_new(struct rte_eth_dev *de= v, > - const uint16_t *queues, > - uint32_t queues_n); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_get(struct rte_eth_dev *de= v, > - const uint16_t *queues, > - uint32_t queues_n); > -int mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > - struct mlx5_ind_table_ibv *ind_tbl); > int mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_drop_new(struct rte_eth_de= v *dev); > -void mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev); > struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev, > const uint8_t *rss_key, uint32_t rss_key_len, > uint64_t hash_fields, > --=20 > 1.8.3.1 >=20 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 38444A0AC5 for ; Thu, 2 May 2019 20:14:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0E4061B1A0; Thu, 2 May 2019 20:14:04 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70052.outbound.protection.outlook.com [40.107.7.52]) by dpdk.org (Postfix) with ESMTP id 7C61D1B17F for ; Thu, 2 May 2019 20:14:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qEQTHl5tpP41kMiBMRmkze3eJWmVCswQ29Z2FBvsgks=; b=S2u1eMhSLmBsexe1k6GX7g61U9O8z+qGqZfPSUG4kRVYfqu6b5QaKpElhrs4irMEzqBX/PVzcyBRCwpO8X9x+B1AUk1pibitKiGxqo89J0mgwXIj8T4TQp6BP7gIGS9uStl8o+aDkgRzqa2C4prFWfjLf7L947rGDfHaIbDk9E4= Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com (52.134.72.27) by DB3PR0502MB3979.eurprd05.prod.outlook.com (52.134.67.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1856.11; Thu, 2 May 2019 18:14:01 +0000 Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::e8d5:4aff:902d:6e98]) by DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::e8d5:4aff:902d:6e98%5]) with mapi id 15.20.1856.008; Thu, 2 May 2019 18:14:00 +0000 From: Yongseok Koh To: Dekel Peled CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v2 4/4] net/mlx5: move locally used functions to static Thread-Index: AQHVAPhw/mh370bO4kGNuwl6rzUThKZYI7AA Date: Thu, 2 May 2019 18:14:00 +0000 Message-ID: References: In-Reply-To: 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=yskoh@mellanox.com; x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7150d74f-d3e4-4556-a757-08d6cf29f3c6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:DB3PR0502MB3979; x-ms-traffictypediagnostic: DB3PR0502MB3979: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1013; x-forefront-prvs: 0025434D2D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(199004)(189003)(6436002)(6116002)(3846002)(68736007)(14454004)(73956011)(37006003)(91956017)(316002)(54906003)(6862004)(8936002)(6636002)(83716004)(4326008)(186003)(71200400001)(71190400001)(66946007)(99286004)(2906002)(66066001)(66476007)(66556008)(66446008)(64756008)(229853002)(26005)(6486002)(5660300002)(30864003)(76116006)(486006)(305945005)(7736002)(6506007)(82746002)(6246003)(8676002)(53936002)(81166006)(81156014)(14444005)(25786009)(33656002)(102836004)(256004)(6512007)(86362001)(446003)(11346002)(476003)(76176011)(478600001)(36756003)(2616005)(53546011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0502MB3979; H:DB3PR0502MB3980.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: y59CBSub/w19E+HRq8ANkv6xL5FE3jeLwXxLb4Ztq/RzIbz+1QQ/QRPTPwvLia00zZN2yNVIqWkpNl4jxjALuiHjoOyB8cUPnP7Hgr7NFJ1BGRrgCB6n4b1b0vTr9UE+85ShqAooWa58rmE+uLFYN1yVKyje3Y/BuQSV2Il72B3AshtGrIm6gVdBC96Ad1w4LtUk7ZnV+BuoRZU4OzlHv4nteJboUrpey0M1Q8dCbZ0F6oghrNn+Vh9bacaBvUqPOL6eXQ2DyGL4boeVa3Z5fXmVPenP+L8sdcokcSnWSUqYPyYLZbJB1lKHPWoeD6f1JT8CoziVNfmMF+Se3rXufNs8X+0vUxOi5xze1hocVMzw6Al7cEfp/OorutW/mB2Qf6W9FOlpYitAUjcjhfU28S5DXI3HTB75ixiB3JzyWbo= Content-Type: text/plain; charset="UTF-8" Content-ID: <4770BB44AFB33343903E656EE87F4EDF@eurprd05.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7150d74f-d3e4-4556-a757-08d6cf29f3c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2019 18:14:00.8203 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB3979 Subject: Re: [dpdk-dev] [PATCH v2 4/4] net/mlx5: move locally used functions to static 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" Message-ID: <20190502181400.chiwadnX84vHzGUli5oF_Dq_3upQpBGMaB9F2N3NFCI@z> > On May 2, 2019, at 8:01 AM, Dekel Peled wrote: >=20 > Multiple functions were declared in header file mlx5_rxtx.h, > inplemented in mlx5_rxq.c, and called only in mlx5_rxq.c. >=20 > This patch moves all these functions declarations into mlx5_rxq.c, > as static functions. > Some functions implementation was copied higher in the file to > precede the functions calls. >=20 > Signed-off-by: Dekel Peled > --- Acked-by: Yongseok Koh > drivers/net/mlx5/mlx5_rxq.c | 185 +++++++++++++++++++++-----------------= ----- > drivers/net/mlx5/mlx5_rxtx.h | 16 ---- > 2 files changed, 92 insertions(+), 109 deletions(-) >=20 > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c > index a547f2a..36fd0b3 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -65,7 +65,7 @@ > * @return > * 1 if supported, negative errno value if not. > */ > -inline int > +static inline int > mlx5_check_mprq_support(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -418,6 +418,33 @@ > } >=20 > /** > + * Verify if the queue can be released. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * RX queue index. > + * > + * @return > + * 1 if the queue can be released > + * 0 if the queue can not be released, there are references to it. > + * Negative errno and rte_errno is set if queue doesn't exist. > + */ > +static int > +mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv =3D dev->data->dev_private; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (!(*priv->rxqs)[idx]) { > + rte_errno =3D EINVAL; > + return -rte_errno; > + } > + rxq_ctrl =3D container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq= ); > + return (rte_atomic32_read(&rxq_ctrl->refcnt) =3D=3D 1); > +} > + > +/** > * > * @param dev > * Pointer to Ethernet device structure. > @@ -505,6 +532,63 @@ > } >=20 > /** > + * Get an Rx queue Verbs object. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * Queue index in DPDK Rx queue array > + * > + * @return > + * The Verbs object if it exists. > + */ > +static struct mlx5_rxq_ibv * > +mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv =3D dev->data->dev_private; > + struct mlx5_rxq_data *rxq_data =3D (*priv->rxqs)[idx]; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (idx >=3D priv->rxqs_n) > + return NULL; > + if (!rxq_data) > + return NULL; > + rxq_ctrl =3D container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > + if (rxq_ctrl->ibv) > + rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > + return rxq_ctrl->ibv; > +} > + > +/** > + * Release an Rx verbs queue object. > + * > + * @param rxq_ibv > + * Verbs Rx queue object. > + * > + * @return > + * 1 while a reference on it exists, 0 when freed. > + */ > +static int > +mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > +{ > + assert(rxq_ibv); > + assert(rxq_ibv->wq); > + assert(rxq_ibv->cq); > + if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > + rxq_free_elts(rxq_ibv->rxq_ctrl); > + claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > + claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > + if (rxq_ibv->channel) > + claim_zero(mlx5_glue->destroy_comp_channel > + (rxq_ibv->channel)); > + LIST_REMOVE(rxq_ibv, next); > + rte_free(rxq_ibv); > + return 0; > + } > + return 1; > +} > + > +/** > * Allocate queue vector and fill epoll fd list for Rx interrupts. > * > * @param dev > @@ -1032,64 +1116,6 @@ struct mlx5_rxq_ibv * > } >=20 > /** > - * Get an Rx queue Verbs object. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * Queue index in DPDK Rx queue array > - * > - * @return > - * The Verbs object if it exists. > - */ > -struct mlx5_rxq_ibv * > -mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv =3D dev->data->dev_private; > - struct mlx5_rxq_data *rxq_data =3D (*priv->rxqs)[idx]; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (idx >=3D priv->rxqs_n) > - return NULL; > - if (!rxq_data) > - return NULL; > - rxq_ctrl =3D container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > - if (rxq_ctrl->ibv) { > - rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > - } > - return rxq_ctrl->ibv; > -} > - > -/** > - * Release an Rx verbs queue object. > - * > - * @param rxq_ibv > - * Verbs Rx queue object. > - * > - * @return > - * 1 while a reference on it exists, 0 when freed. > - */ > -int > -mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > -{ > - assert(rxq_ibv); > - assert(rxq_ibv->wq); > - assert(rxq_ibv->cq); > - if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > - rxq_free_elts(rxq_ibv->rxq_ctrl); > - claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > - claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > - if (rxq_ibv->channel) > - claim_zero(mlx5_glue->destroy_comp_channel > - (rxq_ibv->channel)); > - LIST_REMOVE(rxq_ibv, next); > - rte_free(rxq_ibv); > - return 0; > - } > - return 1; > -} > - > -/** > * Verify the Verbs Rx queue list is empty > * > * @param dev > @@ -1538,33 +1564,6 @@ struct mlx5_rxq_ctrl * > } >=20 > /** > - * Verify if the queue can be released. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * RX queue index. > - * > - * @return > - * 1 if the queue can be released > - * 0 if the queue can not be released, there are references to it. > - * Negative errno and rte_errno is set if queue doesn't exist. > - */ > -int > -mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv =3D dev->data->dev_private; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (!(*priv->rxqs)[idx]) { > - rte_errno =3D EINVAL; > - return -rte_errno; > - } > - rxq_ctrl =3D container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq= ); > - return (rte_atomic32_read(&rxq_ctrl->refcnt) =3D=3D 1); > -} > - > -/** > * Verify the Rx Queue list is empty > * > * @param dev > @@ -1601,7 +1600,7 @@ struct mlx5_rxq_ctrl * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1665,7 +1664,7 @@ struct mlx5_ind_table_ibv * > * @return > * An indirection table if found. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1700,7 +1699,7 @@ struct mlx5_ind_table_ibv * > * @return > * 1 while a reference on it exists, 0 when freed. > */ > -int > +static int > mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > struct mlx5_ind_table_ibv *ind_tbl) > { > @@ -1984,7 +1983,7 @@ struct mlx5_hrxq * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_rxq_ibv * > +static struct mlx5_rxq_ibv * > mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2044,7 +2043,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -void > +static void > mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2067,7 +2066,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > @@ -2110,7 +2109,7 @@ struct mlx5_ind_table_ibv * > * @param dev > * Pointer to Ethernet device. > */ > -void > +static void > mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv =3D dev->data->dev_private; > diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h > index 1732e32..4512490 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.h > +++ b/drivers/net/mlx5/mlx5_rxtx.h > @@ -246,7 +246,6 @@ struct mlx5_txq_ctrl { >=20 > extern uint8_t rss_hash_default_key[]; >=20 > -int mlx5_check_mprq_support(struct rte_eth_dev *dev); > int mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq); > int mlx5_mprq_enabled(struct rte_eth_dev *dev); > int mlx5_mprq_free_mp(struct rte_eth_dev *dev); > @@ -260,10 +259,6 @@ int mlx5_rx_queue_setup(struct rte_eth_dev *dev, uin= t16_t idx, uint16_t desc, > int mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > int mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > struct mlx5_rxq_ibv *mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t i= dx); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t = idx); > -int mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev); > -void mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev); > int mlx5_rxq_ibv_verify(struct rte_eth_dev *dev); > struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, > uint16_t desc, unsigned int socket, > @@ -271,20 +266,9 @@ struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_de= v *dev, uint16_t idx, > struct rte_mempool *mp); > struct mlx5_rxq_ctrl *mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx)= ; > int mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx); > -int mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx); > int mlx5_rxq_verify(struct rte_eth_dev *dev); > int rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_new(struct rte_eth_dev *de= v, > - const uint16_t *queues, > - uint32_t queues_n); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_get(struct rte_eth_dev *de= v, > - const uint16_t *queues, > - uint32_t queues_n); > -int mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > - struct mlx5_ind_table_ibv *ind_tbl); > int mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_drop_new(struct rte_eth_de= v *dev); > -void mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev); > struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev, > const uint8_t *rss_key, uint32_t rss_key_len, > uint64_t hash_fields, > --=20 > 1.8.3.1 >=20