From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by dpdk.org (Postfix) with ESMTP id 43BE623B for ; Mon, 7 May 2018 08:47:02 +0200 (CEST) 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; bh=SlgDiQWkQ42c6jx3wESANUOp9Cc9xfvXBEHXhwx4pPo=; b=Tp8ipzEB4ElDa7wp7msSH0Cdi6huk1aKMhsraMG456qsgki74ZsJ7c9zzdH31rJT1WS0ssL+srM2OYKk0b+ad8eVFZvAGcku45Rq0z86f4qUSSgyOhtZx7x9Xz3jVRS4FxqAvexsQGnvbWNFdeNxYsl8/HsKsj+Mr6q93QZtaNo= Received: from HE1PR0501MB2043.eurprd05.prod.outlook.com (10.167.245.149) by HE1PR0501MB3579.eurprd05.prod.outlook.com (10.166.196.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.17; Mon, 7 May 2018 06:46:59 +0000 Received: from HE1PR0501MB2043.eurprd05.prod.outlook.com ([fe80::45e0:70c0:eb32:1cb6]) by HE1PR0501MB2043.eurprd05.prod.outlook.com ([fe80::45e0:70c0:eb32:1cb6%14]) with mapi id 15.20.0735.018; Mon, 7 May 2018 06:46:58 +0000 From: Yongseok Koh To: Shahaf Shuler , Adrien Mazarguil CC: =?iso-8859-1?Q?N=E9lio_Laranjeiro?= , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2] net/mlx5: change device reference for secondary process Thread-Index: AQHT5QMH7lZw9gJK1kehNRF9p/NQ1KQj1HGA Date: Mon, 7 May 2018 06:46:58 +0000 Message-ID: References: <20180502061320.6675-1-yskoh@mellanox.com> <20180502231039.7369-1-yskoh@mellanox.com> 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: [73.222.116.174] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0501MB3579; 7:eHxDA9sluvDTeqZ/fnuFSd8GnrjRhYx8pW+w4HNHiCf90MrPh0zhAUGncjSJqnTYZL2qV9fJS2ZiMcnPEiaTY4XPYr+UIQyIsMfSnWj8ww3s9d9gGR3DNXThKZH2a2EiAgUQ9DYqvhZoPFPczeUSl1RWpXNZUeZUFHxyl4Wg9X9OoCwMexyc8RrbnXNPO4wblc5AJL3im9Y1oxA1+qyA8eUBsD2Nsdu4mTv1aan9/cfKffaYrshz8/59yluB5HgI x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:HE1PR0501MB3579; x-ms-traffictypediagnostic: HE1PR0501MB3579: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(17755550239193); x-ms-exchange-senderadcheck: 0 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(6055026)(149027)(6041310)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(6072148)(201708071742011); SRVR:HE1PR0501MB3579; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB3579; x-forefront-prvs: 066517B35B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39380400002)(396003)(346002)(376002)(366004)(39860400002)(189003)(199004)(8936002)(305945005)(14454004)(4326008)(5660300001)(7736002)(53936002)(6486002)(81156014)(6512007)(81166006)(33656002)(53946003)(6246003)(229853002)(68736007)(5250100002)(2900100001)(3280700002)(3660700001)(106356001)(2906002)(36756003)(83716003)(97736004)(25786009)(54906003)(110136005)(3846002)(6116002)(316002)(478600001)(53546011)(59450400001)(6506007)(102836004)(26005)(6436002)(76176011)(446003)(11346002)(2616005)(66066001)(476003)(82746002)(486006)(99286004)(86362001)(105586002)(575784001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB3579; H:HE1PR0501MB2043.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: F9c3Ld1lWjCiEyHesABTMtA5TsksvypFd3PX4uE+M/uwtB+L/xQFtMeO6lGMroAMyli251kGGFdrw11FHnfjWoqhzvVLzbqESy2+VomT7+07JedkDQzVYazDk/4hPw8oM0rZ7xX4a7VcL/8KUr+6AstBOdZHkOOqMiFTILeJ9tfqfQvE9rYukB7dE1snMHXx spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-ID: <743BC23525F2E4448127DFA8DF541FFE@eurprd05.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: cf5fe719-be19-4d7e-0333-08d5b3e6547f X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf5fe719-be19-4d7e-0333-08d5b3e6547f X-MS-Exchange-CrossTenant-originalarrivaltime: 07 May 2018 06:46:58.1284 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB3579 Subject: Re: [dpdk-dev] [PATCH v2] net/mlx5: change device reference for secondary process 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: Mon, 07 May 2018 06:47:02 -0000 > On May 5, 2018, at 11:25 PM, Shahaf Shuler wrote: >=20 > Hi Koh, >=20 > See some small comments.=20 >=20 > Thursday, May 3, 2018 2:11 AM, Yongseok Koh: >> Subject: [dpdk-dev] [PATCH v2] net/mlx5: change device reference for >> secondary process >>=20 >> rte_eth_devices[] is not shared between primary and secondary process, >> but a static array to each process. The reverse pointer of device (priv-= >dev) is >> invalid. Instead, priv has the pointer to shared data of the device, >> struct rte_eth_dev_data *dev_data; >>=20 >> Two macros are added, >> #define port_id(priv) ((priv)->dev_data->port_id) >> #define eth_dev(priv) (&rte_eth_devices[(priv)->dev_data->port_id]) >>=20 >> Signed-off-by: Yongseok Koh >> --- >> drivers/net/mlx5/mlx5.c | 2 +- >> drivers/net/mlx5/mlx5.h | 5 ++++- >> drivers/net/mlx5/mlx5_flow.c | 21 +++++++++------------ >> drivers/net/mlx5/mlx5_mr.c | 19 +++++++++---------- >> drivers/net/mlx5/mlx5_rxq.c | 30 +++++++++++++++--------------- >> drivers/net/mlx5/mlx5_txq.c | 15 +++++++-------- >> 6 files changed, 45 insertions(+), 47 deletions(-) >>=20 >> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index >> 8f983061a..6c4a571ab 100644 >> --- a/drivers/net/mlx5/mlx5.c >> +++ b/drivers/net/mlx5/mlx5.c >> @@ -946,7 +946,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv >> __rte_unused, >> goto port_error; >> } >> eth_dev->data->dev_private =3D priv; >> - priv->dev =3D eth_dev; >> + priv->dev_data =3D eth_dev->data; >> eth_dev->data->mac_addrs =3D priv->mac; >> eth_dev->device =3D &pci_dev->device; >> rte_eth_copy_pci_info(eth_dev, pci_dev); diff --git >> a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index >> c4d1d456b..3ab16bfa2 100644 >> --- a/drivers/net/mlx5/mlx5.h >> +++ b/drivers/net/mlx5/mlx5.h >> @@ -121,7 +121,7 @@ struct mlx5_verbs_alloc_ctx { }; >>=20 >> struct priv { >> - struct rte_eth_dev *dev; /* Ethernet device of master process. */ >> + struct rte_eth_dev_data *dev_data; /* Pointer to device data. */ >> struct ibv_context *ctx; /* Verbs context. */ >> struct ibv_device_attr_ex device_attr; /* Device properties. */ >> struct ibv_pd *pd; /* Protection Domain. */ @@ -168,6 +168,9 @@ >> struct priv { >> uint32_t nl_sn; /* Netlink message sequence number. */ }; >>=20 >> +#define port_id(priv) ((priv)->dev_data->port_id) >> +#define eth_dev(priv) (&rte_eth_devices[(priv)->dev_data->port_id]) >=20 > MACRO should with capital letters and prefixed with MLX5 to align with th= e files consistency.=20 > Also suggest to use the port_id macro inside the eth_dev one.=20 The reason was, I wanted to make it naturally mingle with other code becaus= e it is neither a functional macro nor a representation of a value. Either wa= y is okay to me anyway. As Nelio is OOO, let's hear from Adrien. Majority vote :-) Adrien?? >> + >> /* mlx5.c */ >>=20 >> int mlx5_getenv_int(const char *); >> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c >> index 129311d50..2e4bfac58 100644 >> --- a/drivers/net/mlx5/mlx5_flow.c >> +++ b/drivers/net/mlx5/mlx5_flow.c >> @@ -2061,7 +2061,7 @@ mlx5_flow_create_action_queue_drop(struct >> rte_eth_dev *dev, >> parser->queue[HASH_RXQ_ETH].ibv_attr; >> if (parser->count) >> flow->cs =3D parser->cs; >> - if (!priv->dev->data->dev_started) >> + if (!dev->data->dev_started) >> return 0; >> parser->queue[HASH_RXQ_ETH].ibv_attr =3D NULL; >> flow->frxq[HASH_RXQ_ETH].ibv_flow =3D >> @@ -2113,7 +2113,6 @@ mlx5_flow_create_action_queue_rss(struct >> rte_eth_dev *dev, >> struct rte_flow *flow, >> struct rte_flow_error *error) >> { >> - struct priv *priv =3D dev->data->dev_private; >> unsigned int i; >>=20 >> for (i =3D 0; i !=3D hash_rxq_init_n; ++i) { @@ -2122,7 +2121,7 @@ >> mlx5_flow_create_action_queue_rss(struct rte_eth_dev *dev, >> flow->frxq[i].ibv_attr =3D parser->queue[i].ibv_attr; >> parser->queue[i].ibv_attr =3D NULL; >> flow->frxq[i].hash_fields =3D parser->queue[i].hash_fields; >> - if (!priv->dev->data->dev_started) >> + if (!dev->data->dev_started) >> continue; >> flow->frxq[i].hrxq =3D >> mlx5_hrxq_get(dev, >> @@ -2268,7 +2267,7 @@ mlx5_flow_create_action_queue(struct >> rte_eth_dev *dev, >> struct rte_flow *flow, >> struct rte_flow_error *error) >> { >> - struct priv *priv =3D dev->data->dev_private; >> + struct priv *priv __rte_unused =3D dev->data->dev_private; >=20 > Why not removing it?=20 It is used in assert() below when NDEBUG is off. I could have made the asse= rt() longer by deleting it but I preferred this way. >> int ret; >> unsigned int i; >> unsigned int flows_n =3D 0; >> @@ -2281,7 +2280,7 @@ mlx5_flow_create_action_queue(struct >> rte_eth_dev *dev, >> goto error; >> if (parser->count) >> flow->cs =3D parser->cs; >> - if (!priv->dev->data->dev_started) >> + if (!dev->data->dev_started) >> return 0; >> for (i =3D 0; i !=3D hash_rxq_init_n; ++i) { >> if (!flow->frxq[i].hrxq) >> @@ -3124,9 +3123,9 @@ mlx5_flow_isolate(struct rte_eth_dev *dev, >> } >> priv->isolated =3D !!enable; >> if (enable) >> - priv->dev->dev_ops =3D &mlx5_dev_ops_isolate; >> + dev->dev_ops =3D &mlx5_dev_ops_isolate; >> else >> - priv->dev->dev_ops =3D &mlx5_dev_ops; >> + dev->dev_ops =3D &mlx5_dev_ops; >> return 0; >> } >>=20 >> @@ -3514,11 +3513,10 @@ mlx5_fdir_filter_flush(struct rte_eth_dev *dev) >> static void mlx5_fdir_info_get(struct rte_eth_dev *dev, struct >> rte_eth_fdir_info *fdir_info) { >> - struct priv *priv =3D dev->data->dev_private; >> struct rte_eth_fdir_masks *mask =3D >> - &priv->dev->data->dev_conf.fdir_conf.mask; >> + &dev->data->dev_conf.fdir_conf.mask; >>=20 >> - fdir_info->mode =3D priv->dev->data->dev_conf.fdir_conf.mode; >> + fdir_info->mode =3D dev->data->dev_conf.fdir_conf.mode; >> fdir_info->guarant_spc =3D 0; >> rte_memcpy(&fdir_info->mask, mask, sizeof(fdir_info->mask)); >> fdir_info->max_flexpayload =3D 0; >> @@ -3546,9 +3544,8 @@ static int >> mlx5_fdir_ctrl_func(struct rte_eth_dev *dev, enum rte_filter_op filter_o= p, >> void *arg) >> { >> - struct priv *priv =3D dev->data->dev_private; >> enum rte_fdir_mode fdir_mode =3D >> - priv->dev->data->dev_conf.fdir_conf.mode; >> + dev->data->dev_conf.fdir_conf.mode; >>=20 >> if (filter_op =3D=3D RTE_ETH_FILTER_NOP) >> return 0; >> diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c ind= ex >> 1b4c7ec5d..7a337d0c3 100644 >> --- a/drivers/net/mlx5/mlx5_mr.c >> +++ b/drivers/net/mlx5/mlx5_mr.c >> @@ -105,8 +105,8 @@ mlx5_txq_mp2mr_reg(struct mlx5_txq_data *txq, >> struct rte_mempool *mp, >> rte_spinlock_lock(&txq_ctrl->priv->mr_lock); >> /* Add a new entry, register MR first. */ >> DRV_LOG(DEBUG, "port %u discovered new memory pool \"%s\" >> (%p)", >> - txq_ctrl->priv->dev->data->port_id, mp->name, (void >> *)mp); >> - dev =3D txq_ctrl->priv->dev; >> + port_id(txq_ctrl->priv), mp->name, (void *)mp); >> + dev =3D eth_dev(txq_ctrl->priv); >> mr =3D mlx5_mr_get(dev, mp); >> if (mr =3D=3D NULL) { >> if (rte_eal_process_type() !=3D RTE_PROC_PRIMARY) { @@ - >> 114,8 +114,7 @@ mlx5_txq_mp2mr_reg(struct mlx5_txq_data *txq, struct >> rte_mempool *mp, >> "port %u using unregistered mempool >> 0x%p(%s)" >> " in secondary process, please create >> mempool" >> " before rte_eth_dev_start()", >> - txq_ctrl->priv->dev->data->port_id, >> - (void *)mp, mp->name); >> + port_id(txq_ctrl->priv), (void *)mp, mp- >>> name); >> rte_spinlock_unlock(&txq_ctrl->priv->mr_lock); >> rte_errno =3D ENOTSUP; >> return NULL; >> @@ -126,7 +125,7 @@ mlx5_txq_mp2mr_reg(struct mlx5_txq_data *txq, >> struct rte_mempool *mp, >> DRV_LOG(DEBUG, >> "port %u unable to configure memory region," >> " ibv_reg_mr() failed.", >> - txq_ctrl->priv->dev->data->port_id); >> + port_id(txq_ctrl->priv)); >> rte_spinlock_unlock(&txq_ctrl->priv->mr_lock); >> return NULL; >> } >> @@ -135,7 +134,7 @@ mlx5_txq_mp2mr_reg(struct mlx5_txq_data *txq, >> struct rte_mempool *mp, >> DRV_LOG(DEBUG, >> "port %u memory region <-> memory pool table full, >> " >> " dropping oldest entry", >> - txq_ctrl->priv->dev->data->port_id); >> + port_id(txq_ctrl->priv)); >> --idx; >> mlx5_mr_release(txq->mp2mr[0]); >> memmove(&txq->mp2mr[0], &txq->mp2mr[1], @@ -146,7 >> +145,7 @@ mlx5_txq_mp2mr_reg(struct mlx5_txq_data *txq, struct >> rte_mempool *mp, >> DRV_LOG(DEBUG, >> "port %u new memory region lkey for MP \"%s\" (%p): >> 0x%08" >> PRIu32, >> - txq_ctrl->priv->dev->data->port_id, mp->name, (void *)mp, >> + port_id(txq_ctrl->priv), mp->name, (void *)mp, >> txq_ctrl->txq.mp2mr[idx]->lkey); >> rte_spinlock_unlock(&txq_ctrl->priv->mr_lock); >> return mr; >> @@ -207,15 +206,15 @@ mlx5_mp2mr_iter(struct rte_mempool *mp, void >> *arg) >> if (rte_mempool_obj_iter(mp, txq_mp2mr_mbuf_check, &data) =3D=3D >> 0 || >> data.ret =3D=3D -1) >> return; >> - mr =3D mlx5_mr_get(priv->dev, mp); >> + mr =3D mlx5_mr_get(eth_dev(priv), mp); >> if (mr) { >> mlx5_mr_release(mr); >> return; >> } >> - mr =3D mlx5_mr_new(priv->dev, mp); >> + mr =3D mlx5_mr_new(eth_dev(priv), mp); >> if (!mr) >> DRV_LOG(ERR, "port %u cannot create memory region: %s", >> - priv->dev->data->port_id, strerror(rte_errno)); >> + port_id(priv), strerror(rte_errno)); >> } >>=20 >> /** >> diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c >> index 126412ddd..a85b628fe 100644 >> --- a/drivers/net/mlx5/mlx5_rxq.c >> +++ b/drivers/net/mlx5/mlx5_rxq.c >> @@ -78,7 +78,7 @@ rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl) >> buf =3D rte_pktmbuf_alloc(rxq_ctrl->rxq.mp); >> if (buf =3D=3D NULL) { >> DRV_LOG(ERR, "port %u empty mbuf pool", >> - rxq_ctrl->priv->dev->data->port_id); >> + port_id(rxq_ctrl->priv)); >> rte_errno =3D ENOMEM; >> goto error; >> } >> @@ -122,7 +122,7 @@ rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl) >> DRV_LOG(DEBUG, >> "port %u Rx queue %u allocated and configured %u >> segments" >> " (max %u packets)", >> - rxq_ctrl->priv->dev->data->port_id, rxq_ctrl->idx, elts_n, >> + port_id(rxq_ctrl->priv), rxq_ctrl->idx, elts_n, >> elts_n / (1 << rxq_ctrl->rxq.sges_n)); >> return 0; >> error: >> @@ -134,7 +134,7 @@ rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl) >> (*rxq_ctrl->rxq.elts)[i] =3D NULL; >> } >> DRV_LOG(DEBUG, "port %u Rx queue %u failed, freed everything", >> - rxq_ctrl->priv->dev->data->port_id, rxq_ctrl->idx); >> + port_id(rxq_ctrl->priv), rxq_ctrl->idx); >> rte_errno =3D err; /* Restore rte_errno. */ >> return -rte_errno; >> } >> @@ -155,7 +155,7 @@ rxq_free_elts(struct mlx5_rxq_ctrl *rxq_ctrl) >> uint16_t i; >>=20 >> DRV_LOG(DEBUG, "port %u Rx queue %u freeing WRs", >> - rxq_ctrl->priv->dev->data->port_id, rxq_ctrl->idx); >> + port_id(rxq_ctrl->priv), rxq_ctrl->idx); >> if (rxq->elts =3D=3D NULL) >> return; >> /** >> @@ -186,7 +186,7 @@ void >> mlx5_rxq_cleanup(struct mlx5_rxq_ctrl *rxq_ctrl) { >> DRV_LOG(DEBUG, "port %u cleaning up Rx queue %u", >> - rxq_ctrl->priv->dev->data->port_id, rxq_ctrl->idx); >> + port_id(rxq_ctrl->priv), rxq_ctrl->idx); >> if (rxq_ctrl->ibv) >> mlx5_rxq_ibv_release(rxq_ctrl->ibv); >> memset(rxq_ctrl, 0, sizeof(*rxq_ctrl)); @@ -354,11 +354,11 @@ >> mlx5_rx_queue_release(void *dpdk_rxq) >> return; >> rxq_ctrl =3D container_of(rxq, struct mlx5_rxq_ctrl, rxq); >> priv =3D rxq_ctrl->priv; >> - if (!mlx5_rxq_releasable(priv->dev, rxq_ctrl->rxq.stats.idx)) >> + if (!mlx5_rxq_releasable(eth_dev(priv), rxq_ctrl->rxq.stats.idx)) >> rte_panic("port %u Rx queue %u is still used by a flow and" >> - " cannot be removed\n", priv->dev->data->port_id, >> - rxq_ctrl->idx); >> - mlx5_rxq_release(priv->dev, rxq_ctrl->rxq.stats.idx); >> + " cannot be removed\n", >> + port_id(priv), rxq_ctrl->idx); >> + mlx5_rxq_release(eth_dev(priv), rxq_ctrl->rxq.stats.idx); >> } >>=20 >> /** >> @@ -378,9 +378,9 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev) >> unsigned int rxqs_n =3D priv->rxqs_n; >> unsigned int n =3D RTE_MIN(rxqs_n, >> (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); >> unsigned int count =3D 0; >> - struct rte_intr_handle *intr_handle =3D priv->dev->intr_handle; >> + struct rte_intr_handle *intr_handle =3D dev->intr_handle; >>=20 >> - if (!priv->dev->data->dev_conf.intr_conf.rxq) >> + if (!dev->data->dev_conf.intr_conf.rxq) >> return 0; >> mlx5_rx_intr_vec_disable(dev); >> intr_handle->intr_vec =3D malloc(n * sizeof(intr_handle->intr_vec[0])); >> @@ -452,12 +452,12 @@ void >> mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev) { >> struct priv *priv =3D dev->data->dev_private; >> - struct rte_intr_handle *intr_handle =3D priv->dev->intr_handle; >> + struct rte_intr_handle *intr_handle =3D dev->intr_handle; >> unsigned int i; >> unsigned int rxqs_n =3D priv->rxqs_n; >> unsigned int n =3D RTE_MIN(rxqs_n, >> (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); >>=20 >> - if (!priv->dev->data->dev_conf.intr_conf.rxq) >> + if (!dev->data->dev_conf.intr_conf.rxq) >> return; >> if (!intr_handle->intr_vec) >> goto free; >> @@ -897,7 +897,7 @@ mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) >> if (!ret) >> rxq_ibv->mr =3D NULL; >> DRV_LOG(DEBUG, "port %u Verbs Rx queue %u: refcnt %d", >> - rxq_ibv->rxq_ctrl->priv->dev->data->port_id, >> + port_id(rxq_ibv->rxq_ctrl->priv), >> rxq_ibv->rxq_ctrl->idx, rte_atomic32_read(&rxq_ibv- >>> refcnt)); >> if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { >> rxq_free_elts(rxq_ibv->rxq_ctrl); >> @@ -990,7 +990,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t >> idx, uint16_t desc, >> return NULL; >> } >> tmpl->socket =3D socket; >> - if (priv->dev->data->dev_conf.intr_conf.rxq) >> + if (dev->data->dev_conf.intr_conf.rxq) >> tmpl->irq =3D 1; >> /* Enable scattered packets support for this queue if necessary. */ >> assert(mb_len >=3D RTE_PKTMBUF_HEADROOM); diff --git >> a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index >> 44358744d..29959b4c7 100644 >> --- a/drivers/net/mlx5/mlx5_txq.c >> +++ b/drivers/net/mlx5/mlx5_txq.c >> @@ -48,7 +48,7 @@ txq_alloc_elts(struct mlx5_txq_ctrl *txq_ctrl) >> for (i =3D 0; (i !=3D elts_n); ++i) >> (*txq_ctrl->txq.elts)[i] =3D NULL; >> DRV_LOG(DEBUG, "port %u Tx queue %u allocated and configured >> %u WRs", >> - txq_ctrl->priv->dev->data->port_id, txq_ctrl->idx, elts_n); >> + port_id(txq_ctrl->priv), txq_ctrl->idx, elts_n); >> txq_ctrl->txq.elts_head =3D 0; >> txq_ctrl->txq.elts_tail =3D 0; >> txq_ctrl->txq.elts_comp =3D 0; >> @@ -70,7 +70,7 @@ txq_free_elts(struct mlx5_txq_ctrl *txq_ctrl) >> struct rte_mbuf *(*elts)[elts_n] =3D txq_ctrl->txq.elts; >>=20 >> DRV_LOG(DEBUG, "port %u Tx queue %u freeing WRs", >> - txq_ctrl->priv->dev->data->port_id, txq_ctrl->idx); >> + port_id(txq_ctrl->priv), txq_ctrl->idx); >> txq_ctrl->txq.elts_head =3D 0; >> txq_ctrl->txq.elts_tail =3D 0; >> txq_ctrl->txq.elts_comp =3D 0; >> @@ -255,9 +255,9 @@ mlx5_tx_queue_release(void *dpdk_txq) >> priv =3D txq_ctrl->priv; >> for (i =3D 0; (i !=3D priv->txqs_n); ++i) >> if ((*priv->txqs)[i] =3D=3D txq) { >> - mlx5_txq_release(priv->dev, i); >> + mlx5_txq_release(eth_dev(priv), i); >> DRV_LOG(DEBUG, "port %u removing Tx queue %u >> from list", >> - priv->dev->data->port_id, txq_ctrl->idx); >> + port_id(priv), txq_ctrl->idx); >> break; >> } >> } >> @@ -618,7 +618,7 @@ mlx5_txq_ibv_release(struct mlx5_txq_ibv *txq_ibv) >> { >> assert(txq_ibv); >> DRV_LOG(DEBUG, "port %u Verbs Tx queue %u: refcnt %d", >> - txq_ibv->txq_ctrl->priv->dev->data->port_id, >> + port_id(txq_ibv->txq_ctrl->priv), >> txq_ibv->txq_ctrl->idx, rte_atomic32_read(&txq_ibv- >>> refcnt)); >> if (rte_atomic32_dec_and_test(&txq_ibv->refcnt)) { >> claim_zero(mlx5_glue->destroy_qp(txq_ibv->qp)); >> @@ -685,7 +685,7 @@ txq_set_params(struct mlx5_txq_ctrl *txq_ctrl) >> unsigned int txqs_inline; >> unsigned int inline_max_packet_sz; >> eth_tx_burst_t tx_pkt_burst =3D >> - mlx5_select_tx_function(txq_ctrl->priv->dev); >> + mlx5_select_tx_function(eth_dev(priv)); >> int is_empw_func =3D is_empw_burst_func(tx_pkt_burst); >> int tso =3D !!(txq_ctrl->txq.offloads & (DEV_TX_OFFLOAD_TCP_TSO | >>=20 >> DEV_TX_OFFLOAD_VXLAN_TNL_TSO | @@ -759,8 +759,7 @@ >> txq_set_params(struct mlx5_txq_ctrl *txq_ctrl) >> DRV_LOG(WARNING, >> "port %u txq inline is too large (%d) setting" >> " it to the maximum possible: %d\n", >> - priv->dev->data->port_id, txq_inline, >> - max_inline); >> + port_id(priv), txq_inline, max_inline); >> txq_ctrl->txq.max_inline =3D max_inline / >> RTE_CACHE_LINE_SIZE; >> } >> -- >> 2.11.0