From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BD4E9A09FF; Mon, 28 Dec 2020 13:42:44 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E1D84CBF0; Mon, 28 Dec 2020 13:34:19 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 77801C9F2 for ; Mon, 28 Dec 2020 13:33:37 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from talshn@nvidia.com) with SMTP; 28 Dec 2020 14:33:33 +0200 Received: from nvidia.com (l-wincomp04-vm.mtl.labs.mlnx [10.237.1.5]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 0BSCXWnW001295; Mon, 28 Dec 2020 14:33:33 +0200 From: Tal Shnaiderman To: dev@dpdk.org Cc: thomas@monjalon.net, matan@nvidia.com, rasland@nvidia.com, ophirmu@nvidia.com Date: Mon, 28 Dec 2020 14:32:44 +0200 Message-Id: <20201228123302.3608-18-talshn@nvidia.com> X-Mailer: git-send-email 2.16.1.windows.4 In-Reply-To: <20201228123302.3608-1-talshn@nvidia.com> References: <20201217173037.11396-2-talshn@nvidia.com> <20201228123302.3608-1-talshn@nvidia.com> Subject: [dpdk-dev] [PATCH v2 17/35] net/mlx5/windows: support open device 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" From: Ophir Munk This commit implements mlx5_os_open_device() API. It calls glue API open_device() then glue API query_device() to fill in 'struct mlx5_context' with data for later usage. Signed-off-by: Ophir Munk Signed-off-by: Tal Shnaiderman Acked-by: Matan Azrad --- drivers/net/mlx5/windows/mlx5_os.c | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c index 01d66cc855..14bd5bf39a 100644 --- a/drivers/net/mlx5/windows/mlx5_os.c +++ b/drivers/net/mlx5/windows/mlx5_os.c @@ -103,6 +103,50 @@ mlx5_os_set_nonblock_channel_fd(int fd) return -ENOTSUP; } +/** + * Function API open device under Windows + * + * This function calls the Windows glue APIs to open a device. + * + * @param[in] spawn + * Pointer to the device attributes (name, port, etc). + * @param[out] config + * Pointer to device configuration structure. + * @param[out] sh + * Pointer to shared context structure. + * + * @return + * 0 on success, a positive error value otherwise. + */ +int +mlx5_os_open_device(const struct mlx5_dev_spawn_data *spawn, + const struct mlx5_dev_config *config, + struct mlx5_dev_ctx_shared *sh) +{ + RTE_SET_USED(config); + int err = 0; + struct mlx5_context *mlx5_ctx; + + pthread_mutex_init(&sh->txpp.mutex, NULL); + /* Set numa node from pci probe */ + sh->numa_node = spawn->pci_dev->device.numa_node; + + /* Try to open device with DevX */ + rte_errno = 0; + sh->ctx = mlx5_glue->open_device(spawn->phys_dev); + if (!sh->ctx) { + DRV_LOG(ERR, "open_device failed"); + err = errno; + return err; + } + sh->devx = 1; + mlx5_ctx = (struct mlx5_context *)sh->ctx; + err = mlx5_glue->query_device(spawn->phys_dev, &mlx5_ctx->mlx5_dev); + if (err) + DRV_LOG(ERR, "Failed to query device context fields."); + return err; +} + /** * This function should share events between multiple ports of single IB * device. Currently it has no support under Windows. -- 2.16.1.windows.4