From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0083.outbound.protection.outlook.com [104.47.0.83]) by dpdk.org (Postfix) with ESMTP id DBC5629D6 for ; Thu, 3 May 2018 01:10:57 +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=5lFWVqqdnVLrHK9u7KReRpj1fsEO6JfKVuTMa8cS5Nw=; b=vkUCURHSvwc7uQ7pmsjUWtex9C9XXhbw7LEDKY7y+DT+oIeCqW/vkQv41Ng5361KdCzCXmf0NCAkgWPpykPSVpIRFTV0ZDuxbw8RCVQws6jyN7S+uEadXkmwUaUaBqF82r6sxtG+CVE+FZcp5gzcSXgkp/UORrFIrntomgA9J/c= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by VI1PR0501MB2045.eurprd05.prod.outlook.com (2603:10a6:800:36::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.20; Wed, 2 May 2018 23:10:54 +0000 From: Yongseok Koh To: adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com Cc: dev@dpdk.org, Yongseok Koh Date: Wed, 2 May 2018 16:10:39 -0700 Message-Id: <20180502231039.7369-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: MWHPR15CA0071.namprd15.prod.outlook.com (2603:10b6:301:4c::33) To VI1PR0501MB2045.eurprd05.prod.outlook.com (2603:10a6:800:36::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2045; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 3:FDG1ytiUyNQUy4FfmpYKjTgfLZvu2vleic7cZx3WmTcoCFJ5x4P4tOFVBREOX8a+BNiJKmczqNGhDl2hlD34wQ1Ujcm6laakij5e/nRk//daeKDNr7+kSlCzVSLTQy541GrhaX5lKrGiBCYTn2mCu/nN6lhH8wv7CiAU2KB1zZqYZmhML7khzG/E69Ieb9dN46kohGkGahbwnW0tV9ePpFHEyXHL+oBMKSNw9+vTx6tkMjo6Y7gDzBDSmxD0Py6o; 25:QWsykwjGPDeJ5IUSNamGCU1nO+5to1DlavFfw2vvQywT5hbZpEwlrESoIkD1TxOyX35MPEUbYwMz/7mqm+Jm0aSC3s0CoULORewJzQjZWX7wRNlbKzu8JS6YwvuZYokGVgqGDnIOz8Hw0siSm4uUGvMxrt1+qevVVpwq7JMGxLz+Mbu6AaYZr7N+ULJf80i7sR/ksr1lj4cvDIc+3p2DI2TZPGod4CJNq1ygcSeqyKnx24CGrUApfaWvmvqQi+pbnexTRLLCUpRBx1wlTsulUOTd+tF8Vx1l4KSYQgNuU/A73/EDHJTMAHzoFCQnnAkz9DX8m41+uPhIa5o+wDwfpw==; 31:/PJn7kUi+M4Su8zjC2dmAbiGmWRQJ/vdVEdwFbLDuZh5fY9tub7QgOmLf1Y3xq1/pwwsD7UV062hjXDzrclU+USu2sBEXAFHQ4nDMWkASRBCn7ajqrjt+S1HphRJhtgV5VbZ8o9n2LM94lmdwg9NPvFLUxLamHWm3Lb8zKxxQb+WhMTmG9rDK/7MWEQuV0bw1JQGn0gsAJny47RymW6bskjep66A9n+JgBkNs8G0SQY= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2045: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 20:i+5GfV08Oj/bf7s1t+6Zz7i+NIm6W0ybHe/gkhSdDyDBER9Y+NTisJmQLcPozHeWDls3y2GEpWCjIVdsMwdfC76YHpaf9L7xCeOwzqh84HB2Nn67RXIv73vxF5DZbdoR4XaaHHHJIAEtZhZaew2D95bPRfC9MBPr/I7GAWt402AlCT9V/pn1ZBor1ID11YZY2KsPcCXof3pizhxIoMaIEd42qObRk+cNKPB4TMxYjV9aRixdlmNaz2oO5Ssc8UJ7frZJJXgleBBUBvCirY2WdCuPxuYV91AZ2oIlTwkR9Yx23nrtV6aPRMY2cUfcXuHPSiDCYr1ka9yroBGgsbwCky9ioG2oJBet5e2K6skT9l+CiLGlUmdJgPHYaog2JqhYUp+PMU3jy+cdiWTmlHs71hDkwdFu488xVQKMP+tPpmIyt1eQEjs1bPjkYyzs4Ph4GOIhmwoWhQIAQaIjOTMuuWSVAmzs7QNNbOfnVjEJrBQdUNub5x9cN6Gd69fDMtVG; 4:RRtRvdaEFi+FEdhKeTuk30bOE3FSgvECg4tiIG7fPKB7CF/8m+6TKH8ADKCqb3CWiU2+3iH1GvEUw/MmVqGRXlTnw2kK3/c36umIQ7G2yMqXD1bnF4Egg4c0lcjGUeCKO3wmXwiPWGCuvdA2VNR2icdSl74M/X/hMzXV74b0PycaFb1A0mRalht3tQtG01PN/kGX0io/wmZuXaYrws+j71pPs7442/kbtTw8gFuokHkY9oTxbj/7GsSjFuCmdrN5L3BS5HmgRkxKuiSdpEp4OQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR0501MB2045; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2045; X-Forefront-PRVS: 06607E485E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(366004)(346002)(39860400002)(39380400002)(189003)(199004)(68736007)(97736004)(69596002)(316002)(16586007)(21086003)(16526019)(186003)(6116002)(3846002)(50466002)(86362001)(1076002)(48376002)(66066001)(105586002)(575784001)(11346002)(47776003)(106356001)(4326008)(76176011)(305945005)(107886003)(53936002)(478600001)(2906002)(55016002)(5660300001)(25786009)(52116002)(6666003)(59450400001)(386003)(7696005)(51416003)(486006)(476003)(446003)(81166006)(956004)(7736002)(50226002)(8936002)(8676002)(2616005)(36756003)(26005)(81156014)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2045; H:mellanox.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-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2045; 23:AS6FN/2seRBJQG4Mvq54IaygcsQMjiWADIeGRqF?= =?us-ascii?Q?tl7MO3KyjRtha4HexNKbgUleDlCYb+FET8gw4r7cgJnbuE4ZYYIhcRUA21HY?= =?us-ascii?Q?X8QjNpCMpxaeW0wXa33BcGPzBl2Q4VWFy8itOY9nX5nqwNeWLA792KkfmwWA?= =?us-ascii?Q?NID+gjQVXg/oMBFNwzkAj/SGNH99O0Le5iVpBcmGz5N9rjTmdQo53x/QepBD?= =?us-ascii?Q?gd+oJgFiWokJ88BycYcEF3MxzMsjzJ5ogQfFP/DYwGF/JeATVH/QFfOsRHpT?= =?us-ascii?Q?ZOlDPOND1I1vQh4UnGmgc582yT7y+d/ZxSgxfyPLfBVq1egIFxEYghfSwKGY?= =?us-ascii?Q?lN77ej/TdhsKn3vgAbZ6574nkUsI3aRYpdaxi/5x1VXG033K7JQ7S5wcVgIB?= =?us-ascii?Q?LyEZtia+Lo+raypKO3hIWz2cCSFI+9ZtedI8fKUmv8cA+ZZ1H5pNps4a7zxj?= =?us-ascii?Q?9plucATedeno1/SiJE2wUGU8HZtXc+LzbcyGv6rHX0NMJ+4GT4UALKy0CkPb?= =?us-ascii?Q?TOpdiuEWZXnv6XQ+OQs2b04qKLhM7maCX02GVJI7Eg9+nILJ/x1sMpXRXGzp?= =?us-ascii?Q?4Sqi67/raJkoL2MqpMSChoqcJ89VlBJQsqT+HrKi/vDlxkput71AVhtHvHQD?= =?us-ascii?Q?+8eexoKWdqw40d5SYbZPtadyqn1bSqsRZ4iuCSoQl6uPONKWwNW0+CUpwX9c?= =?us-ascii?Q?sf3w+nLcoAS3TEasmuZHTZsymJxs1iw5kOFQ4tSYDKxbnyBAY3xhIDotiEMk?= =?us-ascii?Q?JO/BY/Ixw2Y00rZ2CQWsY9y0CneCm30sHJNnjLuJtKP6jHbxr79y6q25sUL3?= =?us-ascii?Q?FEe7jMsKcstPB9qxTarcr+BIxXVBzgNdTk7FUou62xpoN4m3uejT3F0CNwEd?= =?us-ascii?Q?AP1b8zOYtE0F5/erI1ahBZod6yETvwf7o5VZqLRXYApYxbTOz1FoXRGX3NIn?= =?us-ascii?Q?Zl1inTcEK/q/shalms++zIHDq7+iYHbXg95GXv5z1xxf01ypWO8bn3a/6w8m?= =?us-ascii?Q?Nj/HYr1MPutpfPMDECWagLJ2FGDbEzDCEZsRyBpl5v7ycGgtB6pwRkQFhF5/?= =?us-ascii?Q?GNCxrjChHR2R71XI+yTya/v+8C6RssBls1s27y8TykPFrPeqLs/qZEzEc3vn?= =?us-ascii?Q?fIpG4euGHB/MF0hoVgnJaAP3A5g0OBwldGBAdCpPOc7MI60Kf6zwXQzRwswe?= =?us-ascii?Q?pBEnkNwkZnwAUODxG+KXhXpnUCQSHG6xqCozHticOE73oY0gZgOTMvKvJM+0?= =?us-ascii?Q?epFHB+L37882nH4OuJjF1s8oWPnCtkdpxys8hj5AnU8j/w0Zl87EZ6CZdICU?= =?us-ascii?Q?h7Q=3D=3D?= X-Microsoft-Antispam-Message-Info: 4jfJYcfVBAhXLsbxmkXvFFkQplPvFdZG6eoAEruaUW7rjJtV+CJmxVMy6R5v+ZXet0/xR+rA8YoJRgArlCuUSY+kuu6t3Ls6UdviviufR1+ySFW50GYB+ub4HEqRM0qpeiVwyHulWZAjYTYCVyv/H8Vx2VqjVtqZiLKhE9Roo6qza4gL2paevof31ZhznYyc X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 6:gC7JR2Xn/pflFrgYrucKuZmSTT/Wz8rJdAPjuNa1nTFdUjtx1M6L9O6rrUyjqYHMyqelBUqDPj6A2oigIVxZpoA2yYVcKGMNyFwQ1yuL372+DrJGz43tMbjfYd72gi9oys3zp9Fgpt/6EWO5yJfLzSCsjw3h54MfP6NbIdn27gsfgXUl/Us6pp5SaU4I4syKSQ/3EBpju/1gihvijlNiHRIFU3Sd+zO3Hc3uxnn44OTAbRtvxAuciz2SuleWOVtQ4W288EZpRD8OhQ73HiMcCOc64Ch+DSX1PPnKuBb3sKd2Pxqn6JUCSvIugHe08215RhE12RGAg+uUMV4X1zfSlnHRIBnqNdiHMXfhZRboOepYU7RZ6RwE96sWa1hIVqiG9H9diPkIcv2e2y2oY/4Th554AIcUiU3PQwWo+z5cSSqVT3tr0DqV2Y60M1Z/R5C44Xboqxwc6RcGyY3BNRKwgA==; 5:1+ua6ZPrYuUONJD56P4GcCnELk9DhHpN5C+Fz5mvjNNNjIpbm4GZNzzn+rNiRBN8WBItApUsYtCV9xovlFH5DEYoq6Oe3UmhTTxEvsG6CBCu9LsQAnmC/vVPnR3lFsXRjTrDc0sN5sGginYHVxUR7ofiRYh5rWJd4zN42XGcEPI=; 24:SiywpK4lgTH4Kdi9NB6UxRCFA8n1ZESMjDH6bxfn8sk+3PcChX14/Mx47CzZHobyteINhpgWSL2yTOHK5e12Nb1tYbepIPD4W9vQI3WTJhw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 7:GoENW4W9nLztL/06vivXCXYVXslMHeX0d41Tq4DH7zMAG/FLJOmx+xBdzogd+b8B+hqbkjdPKBRiX1TsKieKdsVdWpduq8TAadPA5t3Pk32dKeWsuq+hLS3E3GNIiVJNIcFIu4mXr/cCirPRyxDSfdmd0TL0WKU7Bu/XQ6xNqQ1TMx10GxiX0rYhBCw2GD1YcARxEeKH9MPeMoG3fhDxX0GYe/NQs8nso4+u4VofedM1PQUeciN89wqA+LMV2F/W X-MS-Office365-Filtering-Correlation-Id: d35221b8-6acc-4a99-7bb2-08d5b081f51c X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 May 2018 23:10:54.1409 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d35221b8-6acc-4a99-7bb2-08d5b081f51c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2045 Subject: [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: Wed, 02 May 2018 23:10:58 -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[(priv)->dev_data->port_id]) 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(-) 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 = 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..3ab16bfa2 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[(priv)->dev_data->port_id]) + /* 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 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 = 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 = @@ -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 = dev->data->dev_private; unsigned int i; for (i = 0; i != 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 = 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, @@ -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 = dev->data->dev_private; + struct priv *priv __rte_unused = dev->data->dev_private; int ret; unsigned int i; unsigned int flows_n = 0; @@ -2281,7 +2280,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) @@ -3124,9 +3123,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; } @@ -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 = 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; @@ -3546,9 +3544,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..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 = 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..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 = 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); 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 = 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 | @@ -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 = max_inline / RTE_CACHE_LINE_SIZE; } -- 2.11.0