From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0065.outbound.protection.outlook.com [104.47.0.65]) by dpdk.org (Postfix) with ESMTP id E77271B01E for ; Wed, 9 May 2018 13:05:08 +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=zTVRy+TN/6yllvuDmVNjBqiYxO0dwHjQsph3Rs4k6K4=; b=jSYcWJV1+bT/ybc5f7vLpBFflQeIS/bXlAr8kkYUS5Q8I1Aowr+pPME+08mYXsV+IHj7/dnagJ8QuAXv4iuQE6DCjAx0jGSRh8CNd8HHW+vzFcemB4Yk4A9d0cTDy3wSfQXMii4B+VotdQ+elHzQ5YIFI8zcSW0WY8XQN/h8PoI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by HE1PR0501MB2043.eurprd05.prod.outlook.com (2603:10a6:3:35::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.18; Wed, 9 May 2018 11:05:05 +0000 From: Yongseok Koh To: adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com Cc: dev@dpdk.org, Yongseok Koh Date: Wed, 9 May 2018 04:04:50 -0700 Message-Id: <20180509110450.19316-1-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180502061320.6675-1-yskoh@mellanox.com> References: <20180502061320.6675-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: CO1PR15CA0050.namprd15.prod.outlook.com (2603:10b6:101:1f::18) To HE1PR0501MB2043.eurprd05.prod.outlook.com (2603:10a6:3:35::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0501MB2043; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2043; 3:QR/rPTBmCVZfuQ0RFRYxvhIx95V6oo9oqo2BLGX5mfWsGEk3k3WuAx8eRUuy4BUPPyI8EukG2MpT5kH6XD//ueUZt/siuSsqlmEWNqVf0TIIwjRQJQJlIjNGxTiGJMyojFUUpJtWjncLv/7X5fZDNNxLM8+2oisrcj2suVj4PHpMI1Sc7nrrolKGqcpHsDqbCQ9uHg0pMQ/h2fddMAIU5j1SqympSyhLU8fo3BtvvFOhNK3pJd6mwYJEX0QIB4CV; 25:QzQ7tgbhxz6veWfWTBpJx75dZjmzjBkVBRPWHKFgxxhimlcavLFUPDknVw3vbxSjEtyfHsUUYvHpNJD2TXL4+nA6OAuaJOjETJAsN9/h8Cz19+anAu1l4qAkRIVabAu95PV//kaBW70M/qf5HX+4veLLXHwKdc+uwwVeUHcZ7C2AAriG6Pz9WfnuYWEXAGHfiYgNYP4i8CdiRXbNc11twNZJLXCcmAE3XcWzWHjMjwn1A6M1OH8GIO7XoqFV0O2StY+cqs56jbPGH3Cnz7DGt8kkbYOBoQIj/hN+XnSvHkPMOBmlbbLOIBji2QLNJTaTy2GeKkarC+d4PKUGs16Yfg==; 31:OIK2TQV5i/J5ukV9nXrcjcB2rqRLYlfDyiipxRaibLya5kw0UN7WfaXcUH2AmcDCjv0eUEhrEBjVBDfOhDBC5O8oncw0Ywhb/hGMWKVanFXfKpupsfUkvcQ7BiVwY/Kx2NyPkm9lRHCKrVVilGaCm9YLmeuIVIgZS/AgXtDOwVbX9tkBInL8scedaLVMFYRBQFtMvg2hVe0i+cuth5S02NQ9M0Zjl4lzVBkaaRJdMqU= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2043: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2043; 20:v4T4dPhizeEBse6doHF7c7COlZBMA2hzwScW9tHegEVDhRaTfwYMGBaBNKoq/xchzc1Z5kn+OS17gmsG6wlJiKZ78HZ8b4d/wHIUhF+KcRwEedtboz5Lqf0J1SsAYBxEjW8MZUFj13albcHxwpHO5lfoyMJHMY3kAua8GzIEZILGxMbWwNhRKVyINtfFDPIWKb1kr4VTLgtw/Mz6vy/YXaxuULJ5By71iIXCxgGER8E0sowIO2++hY6IHeEQ7aysDXDNBS8VpI5hbPp9LA3UlfRUfO8IyhhcQWLOBeKtZTRksz+8AUkmU8nydyGju23l1S7EV/VlviTIVB2OwfBXeGKBiuimVxdVXSgyznC6lB/Pajn9mime91+eZgR/hls+Kdh1NhpLBMARUE7WkZsHUqyuKgyeolbVKF6DLKFMGJDMnX32L6bv/QHtG1AOnozV589gDUL6awsW4IFWOr7SPj2JeOCfGTMox8vTr6mySYSG59iuxN9tiTFYmFfc/7ec; 4:h2U88p4JqKAVa9nGU37wNwaGdOfYUAODGYDQCTuFQwZk/Vw5VZCTg6Yk/1B77gCU5NZH5yB15TcZjDgTFfyAUh8ms5OufZepQWTwT4H0fV6K9nPhgtrhh/Lvip7XDSbVLRtvCH06QVtFUlFjCR9z010hKT37tqKn7pniCiBnNaj+1vRd1LCzmM1SIZfA4FuGdZtUcq6Xs5lOAsPkcFM8BGXbNBydz7UQVepB8v8TZ+2mBDY2GC0mt1fwqxIj4xWjiz1IGdMQXo7ZTFbkBuB9Ew== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2043; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2043; X-Forefront-PRVS: 0667289FF8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(366004)(39860400002)(376002)(396003)(346002)(199004)(189003)(8676002)(5660300001)(48376002)(26005)(107886003)(1076002)(3846002)(97736004)(2906002)(478600001)(81156014)(68736007)(4326008)(55016002)(305945005)(16586007)(7736002)(53936002)(6116002)(50466002)(69596002)(66066001)(956004)(8936002)(106356001)(76176011)(105586002)(476003)(11346002)(16526019)(50226002)(47776003)(386003)(316002)(59450400001)(52116002)(81166006)(51416003)(575784001)(2616005)(7696005)(25786009)(21086003)(446003)(186003)(486006)(6666003)(86362001)(36756003)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2043; H:mellanox.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-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0501MB2043; 23:O5j+YIyIXSP9x0EhxDmmYhSPGCk1KUbvCQdaZUE?= =?us-ascii?Q?iel/2geRSpSlYU1rgZFRnvfYsuQPGoWGzGpComWt9i1JNUAu7NbOqtz873FG?= =?us-ascii?Q?3HN5hfCSNu7qEtc262ThO9L3kA1Ut4ntd9yiL5dFpIzr5xU5MbeoMQ/E8VyN?= =?us-ascii?Q?97b7rApkcbc1WNjP2cqEfMtHNpK1VD9RZmasTEc+IX6zWnAQFJWKmMOjBJ6j?= =?us-ascii?Q?o5C/CFWuchjQbdt9URIzcIKFkbQm9/ntl+waN9WoqLrC34yAH76G4Ag+nROl?= =?us-ascii?Q?m7g4Ki53nIXzVhCQjMqmHw/ETkvxduPNPnhOd2XGtnZ+wRRWZCpgWumYL1Fp?= =?us-ascii?Q?LfeVMIN7s5glFH+ti0eVAoXFUZjQrbpRaLoNWMxlYSHBYc9PHaTEiZ0mrGd2?= =?us-ascii?Q?AimVwI4Q9LgQkA5OK0WkRaznhR87c2RJdBLDGsUtXdc7z9dVxT4gWfnS7nBN?= =?us-ascii?Q?U8P27Iw9Av46uC6I/J6E1vG2NbH+rmW5s88UvVbmzUPs00wwDPUqfvhECKk1?= =?us-ascii?Q?pm/A+1I3/b9ZtgZ4vDOHXNrG/gb1U7Zw8wWqRdSI8dT75pju6H0r97Oh4sO+?= =?us-ascii?Q?M8bWxFqWsi7di0af2yCidwZTwrsNMSO96BOuAiXInuv4d3fZgP8uK+MC8JmZ?= =?us-ascii?Q?cSgFuUMG2gCmpq+bPmIdLkXIiPyu6C2l0h6C2tux2amKx0s/wJUuRs3ATIBr?= =?us-ascii?Q?3mTsRtlx6ThURn2QprOf1YYxpAO4HjqTerKiNUX+kOvKt/t2OUVXwsuP4cDD?= =?us-ascii?Q?pooXuj1U2dBjANvlZBfDwuJAZ18hDGUpzWi501SoQ/xrdeta8hmIQFHRh7RF?= =?us-ascii?Q?cls3/mvO2Jt09RAv8SoqNPSKFZn+Ck5eyAcC03YzbyDC+X9MJBQyDIqiSUa+?= =?us-ascii?Q?451678WkMSObbc6sLTrsGuMJ+YZcVj1JwOPX1Xrrz+lEQiXdfhWCkx2dpgs9?= =?us-ascii?Q?0uCdxz2xuQhsAZQQYS5Me/uazB2S/eTXzuu8UmfdXruDSvItO5PextRqxAbn?= =?us-ascii?Q?5G+W4RuUHUXtabxsaUa3fcfUK5cy/V/SVXUuCMB82FEzwCYm3JVgFP3ElfW5?= =?us-ascii?Q?tZ4TuTcZFWlmevG/4BrCfcmn73J8YWUpDOxxyh6LFC/DPp80THD6fk1SWxwT?= =?us-ascii?Q?QFQYzMD1znrvkUUlyhNIh3Y9d4mv8zzC7rZrTv9oYDnNH0XT7qaZ/NEi0Oru?= =?us-ascii?Q?5/SSXZndy1CPCXZR4JeRzy8md7ONvrtsY03NrpD+H5BMtK6dhHSk5KpVQ73a?= =?us-ascii?Q?o/uaALxtbNhbD9D+Pazvp5NNDy7/48B6+BBHqNt9/MeeOUNAJVsqOighLKKD?= =?us-ascii?Q?FCA=3D=3D?= X-Microsoft-Antispam-Message-Info: OmbSSzdPOL22Wu1TgrY9djDMa0mY9Y9ob5pY6TLr0g+rS7qAEzIgwKDd/kleyxaHtwWb6ux8nWWwxfrdmg2l2JFfbmqRTooiPo10T+BKd2REEL06AN7ctLat6rhKzbaGCAuYoLllLTDStOsEuAF+PkhpuShTuwBwAItmY0NPNhJZ/zHT3CBUK7MmZKWoF0ln X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2043; 6:0P8o8a/67Q//5oxLvv7WX2Bwt6URmGGt5l0muWtAt56JKBWVZEirx7bR2TJXLoq2yR1Ujew0JrT+ME2dAMaYqS2IE5XkrnseRfR7OLSUzngxtLHiFXhk1V/oYoFOOZJXAeNDsFmQbmdLu95yx+xuIAM2ob3/2nGmYDV6dCtSXXIEnZfH5uCIBSc8zxiH5I0B/ecOSJxn2eDcfdWOlQ0mT8EQZWkZu+TGJotfa4cpqdWaSWKQxNBsGUwdjXCjPzRY9hrzR0g1VaU6M+DTehBe4hYsDS7xjnYjbDlRa29f0TQy6Om9fNwza/ViG9d+8pG+vsKqfD4yF8tVinIqXM0fpXK02y/K0pD5o/YvCMnjIrmUXQxcG3GAK8RStCau3L6c7BFbSTS1/FJ5HSkdroYBLVYxmEW3ipnUwMQdeJEHBcv8dhBc5nkKA9W9y1MlJH0iXkyzmvWR2qJiNhd9CVifpQ==; 5:73J1yRdE5TvrrKcG5wXct9QM6032a8FbZp7P9sld+wYDJvTGOEwPwWia74wPdv8aVDo3ZW/eKrom+37kGKI6cus35AFepcdxybApYA2fvA0Ew4NnW4M7+a/AJyu4dJXP4X25oiawLVMDr+801wfse1BOHDk6iStAnWyhEFF8uxU=; 24:eg+eaIjsF4s54PTZGlK4NZNgXfzIpQlhMMUvVKxadKkfCAyWnz0uVorC7KUmZgxo8dBhVDBw+M31m++MDhUObQahc8CjJNpalpbywNPIfZg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2043; 7:VE2X5XLR5XW7rJNrt8QtsTAiFRE1+Z0sWXLRBcgfWj/YzIQuctnR61DKh4uwwjKzMeZtFPphqFJlFOQmhmyN0iy3uK7yvC9r0PTavpoLnzMYZXpqskOqYj4qfB89FaZrM4mpfAByKrZA4qw1QpYQ71FPLlla2LW4mauUEYkw+J44kwJFXs9GuOEJN3onqCqwEVG4nBHKD70B4Q1UgN9FNSYDg+4VGT1JgoBH8pmNGU7yfE/d6WCM57WX9zic31Pf X-MS-Office365-Filtering-Correlation-Id: a0bfe4c2-d103-4fe8-95a6-08d5b59cb949 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2018 11:05:05.8425 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a0bfe4c2-d103-4fe8-95a6-08d5b59cb949 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2043 Subject: [dpdk-dev] [PATCH v3] 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: Wed, 09 May 2018 11:05:09 -0000 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; Two macros are added, #define PORT_ID(priv) ((priv)->dev_data->port_id) #define ETH_DEV(priv) (&rte_eth_devices[PORT_ID(priv)]) Signed-off-by: Yongseok Koh --- v3: * eth_dev() -> ETH_DEV() * port_id() -> PORT_ID() 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 | 38 +++++++++++++++++++------------------- drivers/net/mlx5/mlx5_txq.c | 15 +++++++-------- 6 files changed, 49 insertions(+), 51 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index fcb14fe1a..efc6313fe 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -954,7 +954,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, goto port_error; } eth_dev->data->dev_private = priv; - priv->dev = eth_dev; + priv->dev_data = eth_dev->data; eth_dev->data->mac_addrs = priv->mac; eth_dev->device = &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..f1294c54b 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -121,7 +121,7 @@ struct mlx5_verbs_alloc_ctx { }; 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. */ }; +#define PORT_ID(priv) ((priv)->dev_data->port_id) +#define ETH_DEV(priv) (&rte_eth_devices[PORT_ID(priv)]) + /* mlx5.c */ int mlx5_getenv_int(const char *); diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 38811bbce..ec6d00f21 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -2034,7 +2034,7 @@ mlx5_flow_create_action_queue_drop(struct rte_eth_dev *dev, parser->queue[HASH_RXQ_ETH].ibv_attr; if (parser->count) flow->cs = parser->cs; - if (!priv->dev->data->dev_started) + if (!dev->data->dev_started) return 0; parser->queue[HASH_RXQ_ETH].ibv_attr = NULL; flow->frxq[HASH_RXQ_ETH].ibv_flow = @@ -2086,7 +2086,6 @@ mlx5_flow_create_action_queue_rss(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; unsigned int i; for (i = 0; i != hash_rxq_init_n; ++i) { @@ -2095,7 +2094,7 @@ mlx5_flow_create_action_queue_rss(struct rte_eth_dev *dev, flow->frxq[i].ibv_attr = parser->queue[i].ibv_attr; parser->queue[i].ibv_attr = NULL; flow->frxq[i].hash_fields = parser->queue[i].hash_fields; - if (!priv->dev->data->dev_started) + if (!dev->data->dev_started) continue; flow->frxq[i].hrxq = mlx5_hrxq_get(dev, @@ -2241,7 +2240,7 @@ mlx5_flow_create_action_queue(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct priv *priv __rte_unused = dev->data->dev_private; int ret; unsigned int i; unsigned int flows_n = 0; @@ -2254,7 +2253,7 @@ mlx5_flow_create_action_queue(struct rte_eth_dev *dev, goto error; if (parser->count) flow->cs = parser->cs; - if (!priv->dev->data->dev_started) + if (!dev->data->dev_started) return 0; for (i = 0; i != hash_rxq_init_n; ++i) { if (!flow->frxq[i].hrxq) @@ -3097,9 +3096,9 @@ mlx5_flow_isolate(struct rte_eth_dev *dev, } priv->isolated = !!enable; if (enable) - priv->dev->dev_ops = &mlx5_dev_ops_isolate; + dev->dev_ops = &mlx5_dev_ops_isolate; else - priv->dev->dev_ops = &mlx5_dev_ops; + dev->dev_ops = &mlx5_dev_ops; return 0; } @@ -3487,11 +3486,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 = dev->data->dev_private; struct rte_eth_fdir_masks *mask = - &priv->dev->data->dev_conf.fdir_conf.mask; + &dev->data->dev_conf.fdir_conf.mask; - fdir_info->mode = priv->dev->data->dev_conf.fdir_conf.mode; + fdir_info->mode = dev->data->dev_conf.fdir_conf.mode; fdir_info->guarant_spc = 0; rte_memcpy(&fdir_info->mask, mask, sizeof(fdir_info->mask)); fdir_info->max_flexpayload = 0; @@ -3519,9 +3517,8 @@ static int mlx5_fdir_ctrl_func(struct rte_eth_dev *dev, enum rte_filter_op filter_op, void *arg) { - struct priv *priv = dev->data->dev_private; enum rte_fdir_mode fdir_mode = - priv->dev->data->dev_conf.fdir_conf.mode; + dev->data->dev_conf.fdir_conf.mode; if (filter_op == RTE_ETH_FILTER_NOP) return 0; diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c index 1b4c7ec5d..48ac84bc8 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 = txq_ctrl->priv->dev; + PORT_ID(txq_ctrl->priv), mp->name, (void *)mp); + dev = ETH_DEV(txq_ctrl->priv); mr = mlx5_mr_get(dev, mp); if (mr == NULL) { if (rte_eal_process_type() != 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 = 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) == 0 || data.ret == -1) return; - mr = mlx5_mr_get(priv->dev, mp); + mr = mlx5_mr_get(ETH_DEV(priv), mp); if (mr) { mlx5_mr_release(mr); return; } - mr = mlx5_mr_new(priv->dev, mp); + mr = 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)); } /** diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 126412ddd..aa1ddd0b6 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 = rte_pktmbuf_alloc(rxq_ctrl->rxq.mp); if (buf == NULL) { DRV_LOG(ERR, "port %u empty mbuf pool", - rxq_ctrl->priv->dev->data->port_id); + PORT_ID(rxq_ctrl->priv)); rte_errno = 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] = 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 = err; /* Restore rte_errno. */ return -rte_errno; } @@ -155,7 +155,7 @@ rxq_free_elts(struct mlx5_rxq_ctrl *rxq_ctrl) uint16_t i; 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 == 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 = container_of(rxq, struct mlx5_rxq_ctrl, rxq); priv = 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); } /** @@ -378,9 +378,9 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev) unsigned int rxqs_n = priv->rxqs_n; unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); unsigned int count = 0; - struct rte_intr_handle *intr_handle = priv->dev->intr_handle; + struct rte_intr_handle *intr_handle = dev->intr_handle; - 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 = 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 = dev->data->dev_private; - struct rte_intr_handle *intr_handle = priv->dev->intr_handle; + struct rte_intr_handle *intr_handle = dev->intr_handle; unsigned int i; unsigned int rxqs_n = priv->rxqs_n; unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); - 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 = 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 = socket; - if (priv->dev->data->dev_conf.intr_conf.rxq) + if (dev->data->dev_conf.intr_conf.rxq) tmpl->irq = 1; /* Enable scattered packets support for this queue if necessary. */ assert(mb_len >= RTE_PKTMBUF_HEADROOM); @@ -1328,8 +1328,8 @@ mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, unsigned int i; DRV_LOG(DEBUG, "port %u indirection table %p: refcnt %d", - ((struct priv *)dev->data->dev_private)->port, - (void *)ind_tbl, rte_atomic32_read(&ind_tbl->refcnt)); + dev->data->port_id, (void *)ind_tbl, + rte_atomic32_read(&ind_tbl->refcnt)); if (rte_atomic32_dec_and_test(&ind_tbl->refcnt)) { claim_zero(mlx5_glue->destroy_rwq_ind_table (ind_tbl->ind_table)); @@ -1589,8 +1589,8 @@ int mlx5_hrxq_release(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq) { DRV_LOG(DEBUG, "port %u hash Rx queue %p: refcnt %d", - ((struct priv *)dev->data->dev_private)->port, - (void *)hrxq, rte_atomic32_read(&hrxq->refcnt)); + dev->data->port_id, (void *)hrxq, + rte_atomic32_read(&hrxq->refcnt)); if (rte_atomic32_dec_and_test(&hrxq->refcnt)) { claim_zero(mlx5_glue->destroy_qp(hrxq->qp)); DEBUG("port %u delete QP %p: hash: 0x%" PRIx64 ", tunnel:" diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index e05d1a0e8..af2537379 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 = 0; (i != elts_n); ++i) (*txq_ctrl->txq.elts)[i] = 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 = 0; txq_ctrl->txq.elts_tail = 0; txq_ctrl->txq.elts_comp = 0; @@ -70,7 +70,7 @@ txq_free_elts(struct mlx5_txq_ctrl *txq_ctrl) struct rte_mbuf *(*elts)[elts_n] = txq_ctrl->txq.elts; 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 = 0; txq_ctrl->txq.elts_tail = 0; txq_ctrl->txq.elts_comp = 0; @@ -255,9 +255,9 @@ mlx5_tx_queue_release(void *dpdk_txq) priv = txq_ctrl->priv; for (i = 0; (i != priv->txqs_n); ++i) if ((*priv->txqs)[i] == 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 = - mlx5_select_tx_function(txq_ctrl->priv->dev); + mlx5_select_tx_function(ETH_DEV(priv)); int is_empw_func = is_empw_burst_func(tx_pkt_burst); int tso = !!(txq_ctrl->txq.offloads & (DEV_TX_OFFLOAD_TCP_TSO | DEV_TX_OFFLOAD_VXLAN_TNL_TSO | @@ -747,8 +747,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 = max_inline / RTE_CACHE_LINE_SIZE; } -- 2.11.0