From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0088.outbound.protection.outlook.com [104.47.2.88]) by dpdk.org (Postfix) with ESMTP id 1F7E3D040 for ; Tue, 5 Jun 2018 02:42:07 +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:X-MS-Exchange-SenderADCheck; bh=PA3/HF4mPDbQeq9Z17ITuAb65Mz2IIZpeGmkDKgBMHM=; b=cozBP1XTagIiMqGuA4hX2jaFlJBULZ3EnGL+XCQuywcXmCiN/DuV79IcVuzQJH2ihcKX6lUjmMDrlyLaH+/s5kcrMfjhnLxSllN7vOsheZXA0tKZ7X6YSiM+MV0l6jXkVxufvWFpY57uakLfWpnXURe6/kB9blUSObz7RspjXFE= 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_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 00:42:04 +0000 From: Yongseok Koh To: yliu@fridaylinux.org Cc: stable@dpdk.org, shahafs@mellanox.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, Yongseok Koh Date: Mon, 4 Jun 2018 17:41:33 -0700 Message-Id: <20180605004139.14660-2-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180605004139.14660-1-yskoh@mellanox.com> References: <20180605002732.13866-1-yskoh@mellanox.com> <20180605004139.14660-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: CO2PR04CA0088.namprd04.prod.outlook.com (2603:10b6:104:6::14) 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)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2045; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 3:bSWsjkPr9f/qdo8JLzZ3DUoM19kPd9EMMu7Ef4SiTPyWdqN7Po6ZTob/GhC/XOccXoSnRxl0gCNJMrSOeuNRN2OqCeCnELAYXrNIOOmvfDpXA0YCoPI9Zae7MTLqCdmBjl5qpFW794Jlhu/84w+SdGudEmyeyf0x/nM6UAlI6rUTNQ9bizYHH8yLDova2kUvawaj/Hmw5gxSHa+kFDsgjZ5yNsR+BcHxe0dXwue6hUH9LBzJqorTIzeheAA1HWrK; 25:IBugo3+xnsgIw/T5XdKpwK0GV7YH60x19JHiKdRMU72jHcnn3d4MNMXQZAP+7xnXO11GwIw3iuAD/T/QpjZFmvBJRNbkY7DISTFn0hovLjRDKGUWa/b+RB+qEJF9d3D5ZCmyy7ZIYfI8EHZwm9vaZCJpwofec5qWmtAh56o32Lr+P68iGCKPZ2MvMMd+eiJId1jHOroEBujf1/mzeoVRpljIWloMz6ksek78X47tccaqsCibcKxrGSApP+Pg9rvS3AGcZiIcBISM1rp6QqdMKlr5Cr+hKQCAAj8LTN4u/IfK/K2ZTrwxKELBrlT4GwpSpqTd1dYzlvozmNSLJoXXPA==; 31:fDqQQw+6VD7QPiAXgOI/ZtRoKrbaaxptugffdIYc8fZeu/s6yHUFLa9MoFNxcDFBrpGoZto0QP4HN/UEf4k+vY9KYH5vjyM291Nn3l+gcrs4QsRgOEk4/YbZ2fyw1rmJbZR+jrn5a2H4zHS3+wwWqPVPxRWMy31XCOL5TxT2g8TrhFbXiqqrC0oSbIJqIMQulUsJgf3fxVB8iSsFu3RX46PLGxIfByIci7ez53CK7dc= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2045: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 20:djcmtO9PV6BiDBPCg/S8Q3iHeUlPnsi2BwsLA/9sBZujFkc5D80jMEMQsBD9s5ejn0Gy/4GNqLXAacGn81WDFWVCl47in9Lv6L97MbZ5+xTGKasgMmFdECZNqrelH8Au+VpmWGugXyHqgnDhRGEOQAkI+nyjszphV0WOIZGf+MPM4iq47ULu/fis18bDvsW6sl3fOt3w4hf/gfvCTm/43R7u+g2FCOyiaid1YNIXX4EuXNJh8NepEb1hxQVAbuZQUCQkeIy/uBz8B1i512A6mLwrxCC7W8hUN7CqEZEwQMgu7AEAySoLFsmIx7RZqKiN5yKk1a6jbB/0MmweMe4fz+eSXMEXefvbur9E13R7KHqKpTgZkROUveCGQfpGfjCfSLcpyZpFB4+OUXAYTf+Lxm72ebiuMEtu3UUhmntisWYuVNFUCgf62OSxRKkTS4y26bnY+2sZnpqbBFcdm5a9xN2pg/ULEYpC8vXm7pcgRZsnYja8O13S7KNdPTsolyqn; 4:vDk8FxcPzPZNqufUKgUnw97QcaoahT667GkTfH8waO99pSdueCidwPTtKSoAHiGZTKm846EfpeSCr5JmVUtuv95TIksYaKyj3ThhVNDjCdRU9Xj1FRkBlW2UHFjma4SidbbtBAgkAf48X/8NxWOZJ6Mcde9x984VgL/GOJ+GGXVv7pS4iH1A1UHbd8LSs2ShdBGwncuAtcJh89ryMnCkyZMHyfKpDzWYf4uX80i/wc6IKBLvCmGih+XuwnWmHEjvH4JdWka4BHgLnMYGNjwXiQ== 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)(3231254)(944501410)(52105095)(3002001)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2045; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2045; X-Forefront-PRVS: 0694C54398 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(366004)(39380400002)(376002)(396003)(189003)(199004)(5660300001)(8936002)(3846002)(6116002)(6666003)(2351001)(55016002)(97736004)(7736002)(305945005)(8676002)(48376002)(68736007)(2361001)(6916009)(2906002)(575784001)(86362001)(81166006)(81156014)(1076002)(50466002)(53936002)(47776003)(446003)(16586007)(36756003)(105586002)(2616005)(486006)(316002)(956004)(51416003)(69596002)(52116002)(7696005)(11346002)(386003)(476003)(59450400001)(50226002)(478600001)(66066001)(4326008)(107886003)(186003)(21086003)(25786009)(106356001)(76176011)(16526019)(26005)(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:wTRA7IyQzokmoS2xjdETQK7eHWdsG+xy6dx0KO/?= =?us-ascii?Q?NUf44Tff17unSJ70p8pzIxfb8ZFzUDDwGYOp7dSAcaeH6ekUCAHn7+b8bFtk?= =?us-ascii?Q?1Rm0+1KCwQpsXojXW1+e29NCgs1haqvR2ur1KdI88rS4Bw4D9N4sjArN4g/j?= =?us-ascii?Q?amyfgqGEnEtZ5VSzdadX13oK72qiK2aFCRgOpHHf5xIc2R0SsKqdURT3XJZN?= =?us-ascii?Q?bieeg5Sy3KSeogU1gW3lIhcx2l6NX5RifzvvHOw+W0WU7osAVX7lXUQ38f7B?= =?us-ascii?Q?hXL11x9W/gJkVJmobZIDbG7/NeDLy1ekb0u7Ru6p+qJk92thgROpMjad220F?= =?us-ascii?Q?m3Qrtp4HwlVXcNMduMCwrl48eHralFSCkYNiQJX2Ev4FEEXr6HwBbyHzVfXL?= =?us-ascii?Q?MGFfDYLG6Q4MFmDg3xNE+URNFMgSW96Bdq9UV8IxnDe/JFNwab3T5g9/EhXA?= =?us-ascii?Q?YWQWdfVStSIksSSCmTcckAT75mA/cnW3YxO/3bKzmkbiZUMV9LXZ1mLKRN+2?= =?us-ascii?Q?m3QTMUDjgk+86GxSJ+ynh/fkR3zNBzBC5b5eyyvhqmwprMjjQizBZbCe3KD5?= =?us-ascii?Q?wBdBt0mmPxAeITFteQtjh2Cn73/1zILt6m+6yN3jD9Lk6JEuIsZKuhjxT1IB?= =?us-ascii?Q?6b2y1fzBLVrbe0s863yDqsAdw4DxekSpmFD4Tna2z5CunX2CHv3Ih4SFwlXt?= =?us-ascii?Q?rnpq/8xYQ1g3OSxWm9LzaIvQqnAvPntKhO0xd2NzdPuvhSVCchS2VU64H80+?= =?us-ascii?Q?0dW2RnzttSyAlCKDsWg20oyBRd2PPsMOxQmgRD3VgAVvl0it0tiSODGRUyVP?= =?us-ascii?Q?ksjPNaGIRmyJq2worvBHZisJNnU6IC9YDZnbGcG21a6PYb2jnjEKL5Wmep1Q?= =?us-ascii?Q?kOJf2lZVgx0gbfw/80jEZoiVuSbbV826edJalm/eCXjwXboNjWPtXHMUXLlX?= =?us-ascii?Q?qctjutED/H1e2EiKAxxgIFXbjLKmSqSuva9nrVLdlEX4fQiPgZzee9d/DRxq?= =?us-ascii?Q?AOZE+AHODfouUWaX8mxyh1AJkUQUuYSF6ZFp1Ztb3o9dRd9DtdRGYCOkZqd1?= =?us-ascii?Q?nRUFmmg78ZB0do5ppv2Iw4eu5m5wHQEfdLtT7PjvAhB5MnD4WU49izyfV1gs?= =?us-ascii?Q?kTk4UJSN6xLftGyhiKgZlkS2sHdxTwDqkYVVRtQkoT51K4D5vgxTXNPNzX8x?= =?us-ascii?Q?SF2Zjseyc51HcOupooBHlr8P3bKvxHwrW8eNHBpahOoVbyvuIjipT3aSBOZl?= =?us-ascii?Q?F9t28DJXpjCiqSnZkdpj4f6WNAbsOh/BkozehIOpJkRt39ndnlXegANg2UlF?= =?us-ascii?Q?M+/+OvN1EMpAJ7FkOypH9zXeT1V5iqd8KvGw6Zh0R9Ecu4n2txR9VdSx5E/p?= =?us-ascii?Q?0owhWdQ=3D=3D?= X-Microsoft-Antispam-Message-Info: 8KubVwWdQI8W6pxZPL0j5Lf3Ybpxy3ezk3FvlLSnp2t65iuPq5Ephi2K3lbxvQwrFS7HDjAs1zhy4+WwFVHKNgKNK26qdHfaqDoCTGsL+rEDXBAcgtGTdP52ixXucX8VkuB11zRY58/V4LNg1WHhXCBMOm9yLvfw2immyKMPN5bz+NdQD7DurPp7chjF4AxC X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 6:UWqTcMylN/2hd/mWypzCB5YvWZOlqMMVo4AE4XsKjGVZImRuTmUG3tVB3XCxJiyuY03bTn644aQMDKvNSGG2FQYibXIxyXZfMzlQexm30XdsEOYL+aAeGpRYms9qqFEehmkfy26PTdBidnuBo70e045XVkiZ4Ikf9s6ASW/8oSTGR2nFgSCuG0GGvAnpFf6h0j7FpOwSQx72QmCXO2Ukc0gw4Enl7YLypI/Clw00ecfsQTlWIT6hIardYW3wHJvXPd9ARQ8jKMpTrK7/haHrRnLCeej8L2Y/CXBwa9FFbcSD2LsT9ifz55yiqeg4CugrdZnRsALuxpU0oP/yJMBtFQT7Um58AjG6MMqvvCWlt/0eKNnWwZmfZGlbsTmib0gNUnCigEJP+f3wp9PjJvbUED/097xg0oNrJOmRpWHnexewQNrnqqNRJOGjUhmf4dMPP+vzNY9K4vjJoB42Gha+Vw==; 5:Ka+r1CERSHig77edAPzn+aYbbqhrk42Izr5eziAFsI9ODZMsW1U4tL8xc75nklFhlx953eyaz4h79kl9qZ2svANq1AvzkYJS5oW2+vlYLQn+oD4gmN1BRriKbtolDAWM69opWQ4d+rzl26OyMkMW1NbvGniMOLZEdBPa2e8j4kQ=; 24:TAG2+xahqI6d42SDNHgI0uJjqie3uGPhUf3zGm+c2CbCqOG0EzJ6bmz6wrdxW1Xao4P3Cfrnl+D2ZkUUjwkXSMJNwq0UQ6TYqQuUxQUrOK8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 7:rvi6eG1YBA41bsi4P8tirzWH9ExV3TpIO99Pnj0bfCnAN1aP6uH6yXfNQFWs1cWQXOh1Bshr5hlPOyaAH2I7kNoq5S1YxADIi8XhhBQFmg3/8NkOAnQVCLaSc61SdoKCBOlaPBWvugT3oB+rf+Xg9vU2p/zeR9mNG6JwZL2vlyKnOwi31yPylkhWpg84VC9Y6OUciGG7A0ecwo6InFMfSgRs048kbCrEOwGNpRj5ym5bRRwXIDTq/VauzwLPwqwl X-MS-Office365-Filtering-Correlation-Id: fb0f8a37-885f-479f-84ea-08d5ca7d298f X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2018 00:42:04.4943 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fb0f8a37-885f-479f-84ea-08d5ca7d298f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2045 Subject: [dpdk-stable] [PATCH v2 61/67] net/mlx5: change device reference for secondary process X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2018 00:42:07 -0000 [ backported from upstream commit df428ceef4fdbceacda8d50341c25ddd46a76a39 ] 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 --- 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 | 13 ++++++------- 6 files changed, 48 insertions(+), 50 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index bb56bd22d..10ce33592 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -1008,7 +1008,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 75aa853f2..5e6027b82 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -109,7 +109,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. */ @@ -170,6 +170,9 @@ struct priv { /* Context for Verbs allocator. */ }; +#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 f9a931438..54e0dbc57 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -1725,7 +1725,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 = @@ -1776,7 +1776,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) { @@ -1787,7 +1786,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; hash_fields = hash_rxq_init[i].hash_fields; - if (!priv->dev->data->dev_started) + if (!dev->data->dev_started) continue; flow->frxq[i].hrxq = mlx5_hrxq_get(dev, @@ -1836,7 +1835,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; @@ -1849,7 +1848,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) @@ -2642,9 +2641,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; } @@ -3032,11 +3031,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; @@ -3064,9 +3062,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 933bfe395..a50c52088 100644 --- a/drivers/net/mlx5/mlx5_mr.c +++ b/drivers/net/mlx5/mlx5_mr.c @@ -134,8 +134,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) { @@ -143,8 +143,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; @@ -155,7 +154,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; } @@ -164,7 +163,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], @@ -175,7 +174,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; @@ -236,15 +235,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 17b70dc9a..dcc5a87b6 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -105,7 +105,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; } @@ -149,7 +149,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: @@ -161,7 +161,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; } @@ -182,7 +182,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; /** @@ -213,7 +213,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)); @@ -300,11 +300,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); } /** @@ -324,9 +324,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])); @@ -398,12 +398,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; @@ -842,7 +842,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); @@ -928,7 +928,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); @@ -1272,8 +1272,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(ibv_destroy_rwq_ind_table(ind_tbl->ind_table)); for (i = 0; i != ind_tbl->queues_n; ++i) @@ -1457,8 +1457,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(ibv_destroy_qp(hrxq->qp)); mlx5_ind_table_ibv_release(dev, hrxq->ind_table); diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 7abfd565b..a5c6b5851 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -75,7 +75,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; @@ -97,7 +97,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; @@ -205,9 +205,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; } } @@ -545,7 +545,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(ibv_destroy_qp(txq_ibv->qp)); @@ -684,8 +684,7 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, DRV_LOG(WARNING, "port %u txq inline is too large (%d) setting it" " to the maximum possible: %d\n", - priv->dev->data->port_id, priv->txq_inline, - max_inline); + PORT_ID(priv), priv->txq_inline, max_inline); tmpl->txq.max_inline = max_inline / RTE_CACHE_LINE_SIZE; } } -- 2.11.0