From patchwork Thu Feb 17 16:05:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107738 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B58FBA034E; Thu, 17 Feb 2022 17:10:58 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 80B1B41142; Thu, 17 Feb 2022 17:10:53 +0100 (CET) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by mails.dpdk.org (Postfix) with ESMTP id E516D40DDD for ; Thu, 17 Feb 2022 17:06:31 +0100 (CET) Received: by mail-pg1-f196.google.com with SMTP id 132so5421336pga.5 for ; Thu, 17 Feb 2022 08:06:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pabkBfFAiBglzRpekwzDcru5QFSsK7IKQbsOTYwYJbs=; b=Y/SscJmvteC2NDqaxCD4jRCsdy1BR++FoWrydkluBluY+R1kOA6dC9ecYc5lGAYbHp juaumSjwYBxJtWbsyb7jdiWzKElZYj/cARuxcjaS1UYUy8ZRLRsAqXuXJYTz+213mOkY HBMQDWviw3qLYJEs6E8gusLxjzcLWPXTaNAQY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pabkBfFAiBglzRpekwzDcru5QFSsK7IKQbsOTYwYJbs=; b=a2Kms0bC4CmwDqLsY3RKGrrGOSCg7cqHC1pdJdtrP+DqMEc32hUMgijKuj2q5xje6e /ocmuzf2qxAys8A7J0mWWP0QGXeix7fsbz2AFTy1JgHPrnSo0lO7kzmV3GAHyJnlHZcg ls2BAlPcc1wHNU8V6X0J1dw3Mda280lc4B9JcY4j0i6WdMFirl07XB2cu965VnaZ0cKS N8+yoPVOrZ4PtEYSur2oc6tB5L3RNgQ0RKC8sOgRMyWzzlc0Vg+Y/oXfh3QhW2dffLuo pwKZhtWpkDTfpBKcWhg2LDOA+25PAonBxDxjj7mUcOdeu/dFw9ooRUKxy3qBL6YqzL2S XTPA== X-Gm-Message-State: AOAM530yeYnhhb5+WNDAkULb6K9XNkbBCOmY22Y2PUCQj99iSttEZRTG 6KIcGdtBTFJ3Ur2AaTGnqr5MAg== X-Google-Smtp-Source: ABdhPJxjtLmdqv6FAMcX8LjX5eSlM+Kqv3ShgIbcop1GMD2gd4jDHgJgl25m21KhtvxA3XUQ/Qo7+w== X-Received: by 2002:a63:5525:0:b0:372:c376:74f1 with SMTP id j37-20020a635525000000b00372c37674f1mr2885259pgb.433.1645113989793; Thu, 17 Feb 2022 08:06:29 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:29 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 01/15] bus/vmbus: scan and get the network device Date: Thu, 17 Feb 2022 21:35:59 +0530 Message-Id: <20220217160613.70161-2-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Using sysctl, all the devices on the VMBUS are identified by the PMD. On finding the Network device's device id, it is added to VMBUS dev list. Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_bus.c | 249 ++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 drivers/bus/vmbus/freebsd/vmbus_bus.c diff --git a/drivers/bus/vmbus/freebsd/vmbus_bus.c b/drivers/bus/vmbus/freebsd/vmbus_bus.c new file mode 100644 index 0000000000..c8583aba37 --- /dev/null +++ b/drivers/bus/vmbus/freebsd/vmbus_bus.c @@ -0,0 +1,249 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2018, Microsoft Corporation. + * All Rights Reserved. + */ + +#include +#include + +#include "private.h" + +#include +#include +#include + +/* + * GUID associated with network devices + * {f8615163-df3e-46c5-913f-f2d2f965ed0e} + */ +static const rte_uuid_t vmbus_nic_uuid = { + 0xf8, 0x61, 0x51, 0x63, + 0xdf, 0x3e, + 0x46, 0xc5, + 0x91, 0x3f, + 0xf2, 0xd2, 0xf9, 0x65, 0xed, 0xe +}; + +extern struct rte_vmbus_bus rte_vmbus_bus; + +/* Parse UUID. Caller must pass NULL terminated string */ +static int +parse_sysfs_uuid(const char *filename, rte_uuid_t uu) +{ + char in[BUFSIZ]; + + memcpy(in, filename, BUFSIZ); + if (rte_uuid_parse(in, uu) < 0) { + VMBUS_LOG(ERR, "%s not a valid UUID", in); + return -1; + } + + return 0; +} + +/* Scan one vmbus entry, and fill the devices list from it. */ +static int +vmbus_scan_one(const char *name, unsigned int unit_num) +{ + struct rte_vmbus_device *dev, *dev2; + char sysctlBuffer[PATH_MAX], sysctlVar[PATH_MAX]; + size_t guid_len = 36, len = PATH_MAX; + char classid[guid_len + 1], deviceid[guid_len + 1]; + + dev = calloc(1, sizeof(*dev)); + if (dev == NULL) + return -1; + + /* get class id and device id */ + snprintf(sysctlVar, len, "dev.%s.%u.%%pnpinfo", name, unit_num); + if (sysctlbyname(sysctlVar, &sysctlBuffer, &len, NULL, 0) < 0) + goto error; + + /* pnpinfo: classid=f912ad6d-2b17-48ea-bd65-f927a61c7684 + * deviceid=d34b2567-b9b6-42b9-8778-0a4ec0b955bf + */ + if (sysctlBuffer[0] == 'c' && sysctlBuffer[1] == 'l' && + sysctlBuffer[7] == '=') { + memcpy(classid, &sysctlBuffer[8], guid_len); + classid[guid_len] = '\0'; + } + if (parse_sysfs_uuid(classid, dev->class_id) < 0) + goto error; + + /* skip non-network devices */ + if (rte_uuid_compare(dev->class_id, vmbus_nic_uuid) != 0) { + free(dev); + return 0; + } + + if (sysctlBuffer[45] == 'd' && sysctlBuffer[46] == 'e' && + sysctlBuffer[47] == 'v' && sysctlBuffer[53] == '=') { + memcpy(deviceid, &sysctlBuffer[54], guid_len); + deviceid[guid_len] = '\0'; + } + if (parse_sysfs_uuid(deviceid, dev->device_id) < 0) + goto error; + + if (!strcmp(name, "hv_uio")) + dev->uio_num = unit_num; + else + dev->uio_num = -1; + dev->device.bus = &rte_vmbus_bus.bus; + dev->device.numa_node = 0; + dev->device.name = strdup(deviceid); + if (!dev->device.name) + goto error; + + dev->device.devargs = vmbus_devargs_lookup(dev); + + /* device is valid, add in list (sorted) */ + VMBUS_LOG(DEBUG, "Adding vmbus device %s", name); + + TAILQ_FOREACH(dev2, &rte_vmbus_bus.device_list, next) { + int ret; + + ret = rte_uuid_compare(dev->device_id, dev2->device_id); + if (ret > 0) + continue; + + if (ret < 0) { + vmbus_insert_device(dev2, dev); + } else { /* already registered */ + VMBUS_LOG(NOTICE, + "%s already registered", name); + free(dev); + } + return 0; + } + + vmbus_add_device(dev); + return 0; +error: + VMBUS_LOG(DEBUG, "failed"); + + free(dev); + return -1; +} + +/* + * Scan the content of the vmbus, and the devices in the devices list + */ +int +rte_vmbus_scan(void) +{ + struct u_device udev; + struct u_businfo ubus; + int dev_idx, dev_ptr, name2oid[2], oid[CTL_MAXNAME + 12], error; + size_t oidlen, rlen, ub_size; + uintptr_t vmbus_handle = 0; + char *walker, *ep; + char name[16] = "hw.bus.devices"; + char *dd_name, *dd_desc, *dd_drivername, *dd_pnpinfo, *dd_location; + + /* + * devinfo FreeBSD APP logic to fetch all the VMBus devices + * using SYSCTLs + */ + name2oid[0] = 0; + name2oid[1] = 3; + oidlen = sizeof(oid); + error = sysctl(name2oid, 2, oid, &oidlen, name, strlen(name)); + if (error < 0) { + VMBUS_LOG(DEBUG, "can't find hw.bus.devices sysctl node"); + return -ENOENT; + } + oidlen /= sizeof(int); + if (oidlen > CTL_MAXNAME) { + VMBUS_LOG(DEBUG, "hw.bus.devices oid is too large"); + return -EINVAL; + } + + ub_size = sizeof(ubus); + if (sysctlbyname("hw.bus.info", &ubus, &ub_size, NULL, 0) != 0) { + VMBUS_LOG(DEBUG, "sysctlbyname(\"hw.bus.info\", ...) failed"); + return -EINVAL; + } + if ((ub_size != sizeof(ubus)) || + (ubus.ub_version != BUS_USER_VERSION)) { + VMBUS_LOG(DEBUG, + "kernel bus interface version mismatch: kernel %d expected %d", + ubus.ub_version, BUS_USER_VERSION); + return -EINVAL; + } + + oid[oidlen++] = ubus.ub_generation; + dev_ptr = oidlen++; + + /* + * Scan devices. + * + * Stop after a fairly insane number to avoid death in the case + * of kernel corruption. + */ + + for (dev_idx = 0; dev_idx < 10000; dev_idx++) { + /* + * Get the device information. + */ + oid[dev_ptr] = dev_idx; + rlen = sizeof(udev); + error = sysctl(oid, oidlen, &udev, &rlen, NULL, 0); + if (error < 0) { + if (errno == ENOENT) /* end of list */ + break; + if (errno != EINVAL) /* gen count skip, restart */ + VMBUS_LOG(DEBUG, "sysctl hw.bus.devices.%d", + dev_idx); + return errno; + } + if (rlen != sizeof(udev)) { + VMBUS_LOG(DEBUG, + "sysctl returned wrong data %zd bytes instead of %zd", + rlen, sizeof(udev)); + return -EINVAL; + } + + walker = udev.dv_fields; + ep = walker + sizeof(udev.dv_fields); + dd_name = NULL; + dd_desc = NULL; + dd_drivername = NULL; + dd_pnpinfo = NULL; + dd_location = NULL; +#define UNPACK(x) \ + do { \ + x = strdup(walker); \ + if (x == NULL) \ + return -ENOMEM; \ + if (walker + strnlen(walker, ep - walker) >= ep) \ + return -EINVAL; \ + walker += strlen(walker) + 1; \ + } while (0) + + UNPACK(dd_name); + UNPACK(dd_desc); + UNPACK(dd_drivername); + UNPACK(dd_pnpinfo); + UNPACK(dd_location); +#undef UNPACK + if (*dd_drivername && !(strcmp(dd_drivername, "vmbus"))) + vmbus_handle = udev.dv_handle; + + if (vmbus_handle && (vmbus_handle == udev.dv_parent) + && *dd_pnpinfo && *dd_name) { + unsigned int driver_len = 0, unit_num = 0; + char *endptr; + + driver_len = strlen(dd_drivername); + unit_num = strtoull(&dd_name[driver_len], &endptr, 10); + VMBUS_LOG(DEBUG, "Device name:%s, pnpinfo:%s", + dd_name, dd_pnpinfo); + + if (vmbus_scan_one(dd_drivername, unit_num) < 0) + goto error; + } + } + return 0; +error: + return -1; +} From patchwork Thu Feb 17 16:06:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107739 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DE520A034E; Thu, 17 Feb 2022 17:11:05 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5B48D41150; Thu, 17 Feb 2022 17:10:54 +0100 (CET) Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by mails.dpdk.org (Postfix) with ESMTP id BB2CE40395 for ; Thu, 17 Feb 2022 17:06:33 +0100 (CET) Received: by mail-pj1-f43.google.com with SMTP id q11-20020a17090a304b00b001b94d25eaecso5834670pjl.4 for ; Thu, 17 Feb 2022 08:06:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m3t6zb06BD25Hrx1X2tEreaPlBsTf2MwHF9az+lnpbs=; b=KuNxxjM8Z4fjnPevel6UQvr583Eoh1WEtDY029LH+ZBjL1Ydws43JojYqga8vWfNgN 3fwt+/NN2/Vbm8R/cY1y7jtqHj4vXi9alfsDbh46dObCo+NX8hC9wMwOfwo6ZzMDgYiQ juBIUQiSGfEa+fsAVu5zZ3Ue6qqs0jtSG3IA0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m3t6zb06BD25Hrx1X2tEreaPlBsTf2MwHF9az+lnpbs=; b=cvV18u4nV4K3RoTH0yI+7q8vhhdRookajqK4c8NLEN23e5ufMqqKqaD9p4FU08C3Rn 8I4MoLcHd7teyycR+7+8mghnAlBma2hIDZ0ViiK4wIhB5ZZnJpMx3ow6X29WlNhtXZu3 UmEMbmxWT+Wb/B0RxFihUv2MFb+YjO5wSzlNZqU8xVzXh3Z+bQHYP7ebU/mgV5ENVafq UqKUVMfXppYIHG3UlgKNjgjuXs6soqL4UtVlqcxp9hYbTr6ZsNPNvmvHeP+Ejawwv0QW jiiWGid7nZWg5+4xqMUVECaznqKTuktRACHhyiycWMhidpG0hyWFgmKwd+rqIpNKdFap ruNA== X-Gm-Message-State: AOAM531TiO46+wYM684oVu1M5wdHUVxVB5hcJuOveW3ViQMaVpewu2kY rsXkn0DU/pyzW4aoSH5/mkbNvq0DiXC+/wSMbXo= X-Google-Smtp-Source: ABdhPJy6fasXRtiEt7J8MKHGC4TfJd5cUswWjJPKTeZcFD0gDCup6iMgj1t5icykcXHS9i+3rNrjOQ== X-Received: by 2002:a17:90a:3f09:b0:1b8:e615:a261 with SMTP id l9-20020a17090a3f0900b001b8e615a261mr8050953pjc.196.1645113992925; Thu, 17 Feb 2022 08:06:32 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:32 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 02/15] bus/vmbus: handle mapping of device resources Date: Thu, 17 Feb 2022 21:36:00 +0530 Message-Id: <20220217160613.70161-3-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org All resource values are published by HV_UIO driver as sysctl key value pairs and they are read at a later point of the code flow Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_bus.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_bus.c b/drivers/bus/vmbus/freebsd/vmbus_bus.c index c8583aba37..fa0f4883f7 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_bus.c +++ b/drivers/bus/vmbus/freebsd/vmbus_bus.c @@ -41,6 +41,24 @@ parse_sysfs_uuid(const char *filename, rte_uuid_t uu) return 0; } +/* map the resources of a vmbus device in virtual memory */ +int +rte_vmbus_map_device(struct rte_vmbus_device *dev) +{ + if (dev->uio_num < 0) { + VMBUS_LOG(DEBUG, "Not managed by UIO driver, skipped"); + return 1; + } + + return vmbus_uio_map_resource(dev); +} + +void +rte_vmbus_unmap_device(struct rte_vmbus_device *dev) +{ + vmbus_uio_unmap_resource(dev); +} + /* Scan one vmbus entry, and fill the devices list from it. */ static int vmbus_scan_one(const char *name, unsigned int unit_num) From patchwork Thu Feb 17 16:06:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107740 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 47FE4A034E; Thu, 17 Feb 2022 17:11:13 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4843341156; Thu, 17 Feb 2022 17:10:55 +0100 (CET) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by mails.dpdk.org (Postfix) with ESMTP id D4B1E40042 for ; Thu, 17 Feb 2022 17:06:36 +0100 (CET) Received: by mail-pg1-f193.google.com with SMTP id 27so190636pgk.10 for ; Thu, 17 Feb 2022 08:06:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7q4EcEPfPFHXHyGwieieMaE8V3ISeueyo0wKNLs5dtY=; b=DAaJcp7+vFxD7TNjeY5wANUwooE/wL0oCfOZ/+C8kg/oeh4o8JL/Rpzm1HsGDqZsOs fIEc1nzzsE37ec5fOC/YI9Bb2it2Q9oe3WgqoZS1dBUuZBk3ureeCDUnpKuBzUvfHIf7 m60WtV1KitpImzAXfX0vP4/KKGJnXf4ucArRw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7q4EcEPfPFHXHyGwieieMaE8V3ISeueyo0wKNLs5dtY=; b=bhIbPZ+6TXXkj60xT36dUVy0XMZk/KQUnWcfwiTMEbO0x6erRXo+ipjb/Gpo8PZfIw gEw2XTpyaRQmpSbEh6VnrjmSNTtAQ+1tLKmSGt1XTHtZS/o4hnbldRK67sTT8/Jmu0Uo kUn44Gzx31hGx/A9LNtzP32jY5kpuciQ65ccVD1Nw4ZL3NGRKQTq+aLptIjbBArRr9ad EvLGI/KECWX72eEM+cJOifTp2cQJl6TsRf4/bm5/1CMA1IeKquWY2cWSMgVSAPJJxC9w NRgeQhIR5zYnb5gf0kDtkY0bYHfWJsw9n04fJ6LtCMBUOCG/Rr1+Z0FIQharkU3WU+vR L2ug== X-Gm-Message-State: AOAM532orTgS7Bd5IJ7amlAWrY/vNXMoAJTlz2JqMbke/plZDRVvkxfE nzA1HNYvfmRZM8XxIC4GxCrXbw== X-Google-Smtp-Source: ABdhPJxzclGMCcoIm6x0gzaFSyHGewioN+BxQWk07rk68Q5e5mDfqGIxFZ8YP+ZgWoFhiT73ssnM7w== X-Received: by 2002:a63:ff01:0:b0:34a:d500:c77a with SMTP id k1-20020a63ff01000000b0034ad500c77amr2900093pgi.320.1645113995992; Thu, 17 Feb 2022 08:06:35 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:35 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 03/15] bus/vmbus: get device resource values using sysctl Date: Thu, 17 Feb 2022 21:36:01 +0530 Message-Id: <20220217160613.70161-4-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The UIO device's relid, monitor id, etc values are retrieved using following sysctl variables: $ sysctl dev.hv_uio.0 dev.hv_uio.0.send_buf.gpadl: 925241 dev.hv_uio.0.send_buf.size: 16777216 dev.hv_uio.0.recv_buf.gpadl: 925240 dev.hv_uio.0.recv_buf.size: 32505856 dev.hv_uio.0.monitor_page.size: 4096 dev.hv_uio.0.int_page.size: 4096 Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 142 ++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 drivers/bus/vmbus/freebsd/vmbus_uio.c diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c new file mode 100644 index 0000000000..2059ab192b --- /dev/null +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -0,0 +1,142 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2018, Microsoft Corporation. + * All Rights Reserved. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "private.h" + +const char *driver_name = "hv_uio"; + +/* Check map names with kernel names */ +static const char *map_names[VMBUS_MAX_RESOURCE] = { + [HV_TXRX_RING_MAP] = "txrx_rings", + [HV_INT_PAGE_MAP] = "int_page", + [HV_MON_PAGE_MAP] = "monitor_page", + [HV_RECV_BUF_MAP] = "recv_buf", + [HV_SEND_BUF_MAP] = "send_buf", +}; + +void +vmbus_uio_free_resource(struct rte_vmbus_device *dev, + struct mapped_vmbus_resource *uio_res) +{ + rte_free(uio_res); + + if (dev->intr_handle.uio_cfg_fd >= 0) { + close(dev->intr_handle.uio_cfg_fd); + dev->intr_handle.uio_cfg_fd = -1; + } + + if (dev->intr_handle.fd >= 0) { + close(dev->intr_handle.fd); + dev->intr_handle.fd = -1; + dev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN; + } +} + +static int +sysctl_get_vmbus_device_info(struct rte_vmbus_device *dev) +{ + char sysctlBuffer[PATH_MAX]; + char sysctlVar[PATH_MAX]; + size_t len = PATH_MAX, sysctl_len; + unsigned long tmp; + int i; + + snprintf(sysctlBuffer, len, "dev.%s.%d", driver_name, dev->uio_num); + + sysctl_len = sizeof(unsigned long); + /* get relid */ + snprintf(sysctlVar, len, "%s.channel.ch_id", sysctlBuffer); + if (sysctlbyname(sysctlVar, &tmp, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s", sysctlVar); + goto error; + } + dev->relid = tmp; + + /* get monitor id */ + snprintf(sysctlVar, len, "%s.channel.%u.monitor_id", sysctlBuffer, + dev->relid); + if (sysctlbyname(sysctlVar, &tmp, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s", sysctlVar); + goto error; + } + dev->monitor_id = tmp; + + /* Extract resource value */ + for (i = 0; i < VMBUS_MAX_RESOURCE; i++) { + struct rte_mem_resource *res = &dev->resource[i]; + unsigned long size, gpad = 0; + size_t sizelen = sizeof(len); + + snprintf(sysctlVar, sizeof(sysctlVar), "%s.%s.size", + sysctlBuffer, map_names[i]); + if (sysctlbyname(sysctlVar, &size, &sizelen, NULL, 0) < 0) { + VMBUS_LOG(ERR, + "could not read %s", sysctlVar); + goto error; + } + res->len = size; + + if (i == HV_RECV_BUF_MAP || i == HV_SEND_BUF_MAP) { + snprintf(sysctlVar, sizeof(sysctlVar), "%s.%s.gpadl", + sysctlBuffer, map_names[i]); + if (sysctlbyname(sysctlVar, &gpad, &sizelen, NULL, 0) < 0) { + VMBUS_LOG(ERR, + "could not read %s", sysctlVar); + goto error; + } + /* put the GPAD value in physical address */ + res->phys_addr = gpad; + } + } + return 0; +error: + return -1; +} + +int +vmbus_uio_alloc_resource(struct rte_vmbus_device *dev, + struct mapped_vmbus_resource **uio_res) +{ + char devname[PATH_MAX]; /* contains the /dev/hv_uioX */ + + /* save fd if in primary process */ + snprintf(devname, sizeof(devname), "/dev/hv_uio%u", dev->uio_num); + dev->intr_handle.fd = open(devname, O_RDWR); + if (dev->intr_handle.fd < 0) { + VMBUS_LOG(ERR, "Cannot open %s: %s", + devname, strerror(errno)); + goto error; + } + dev->intr_handle.type = RTE_INTR_HANDLE_UIO_INTX; + + /* allocate the mapping details for secondary processes*/ + *uio_res = rte_zmalloc("UIO_RES", sizeof(**uio_res), 0); + if (*uio_res == NULL) { + VMBUS_LOG(ERR, "cannot store uio mmap details"); + goto error; + } + + strlcpy((*uio_res)->path, devname, PATH_MAX); + rte_uuid_copy((*uio_res)->id, dev->device_id); + + if (sysctl_get_vmbus_device_info(dev) < 0) + goto error; + + return 0; +error: + vmbus_uio_free_resource(dev, *uio_res); + return -1; +} From patchwork Thu Feb 17 16:06:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107741 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 60C9AA034E; Thu, 17 Feb 2022 17:11:20 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 37CB34115B; Thu, 17 Feb 2022 17:10:56 +0100 (CET) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by mails.dpdk.org (Postfix) with ESMTP id A2B7D40395 for ; Thu, 17 Feb 2022 17:06:39 +0100 (CET) Received: by mail-pf1-f170.google.com with SMTP id u16so43308pfg.12 for ; Thu, 17 Feb 2022 08:06:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uHdnym5iLF3hcfGOk4eFkvx+osDZQyrMuwSTtMyfJ1A=; b=HL8kUDuNkJNB796a6zaoVp0YziL0hpV+rBcJ1IbP1v0n6Ol4B38eSQTlB638m6InA1 OoZDzTVtwQ4YjMlWglB46YqJpgA8FP8vicfOPqHQGeYyXQMYtceoJSrxyU8j0ExrLvAn FclqyTp3GO7b116mfpEnAHva/LCeu74GzD9e0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uHdnym5iLF3hcfGOk4eFkvx+osDZQyrMuwSTtMyfJ1A=; b=DTvizTzGIifU7uoAxuwxtkrP5pPsEyNtVn49C7SKmwYbtBKrXp5zKw/7fDTcJXggba IPX0Zx1aAecGR0WHNjloX3U7THCIaze/nLugJOmMnsTfs5hc9DrDy5TsuqbVTE0lt+Zu ila4Kq1RqrOgrMZXxPZxTX3HmWiTiOk1Od+WikjNvxhPH69Zf0Ae5Tm5PdUGwF6YibyN 6AJT17YsgOpbYsW/gWKiF7ha/MLSrNMujcUqoIEiCrLshLkA7wSxgPr/HBpx1UJyndzu p8jbBwMy2CseCFvKb/WCjM+J7Yjfb3fgi4S4CAGJljkbAD0R0PXtODfoApZ2HZ/9Kzh2 +2/w== X-Gm-Message-State: AOAM53101oYLm89WfLW4t3cwlxHI5K01UnKIdm3FudCDfaZ6kdqao1O/ Cn7npuuRB6AWFqEssU3tjQJ+dw== X-Google-Smtp-Source: ABdhPJy+/Zlut8kSJ4WuqddhyiAroBFOTj0dsqByMkfMdqF0uyTnLnKGmdixG2nrJOnehc6cWPTCcQ== X-Received: by 2002:a63:105c:0:b0:36c:33aa:cb24 with SMTP id 28-20020a63105c000000b0036c33aacb24mr2923028pgq.221.1645113998845; Thu, 17 Feb 2022 08:06:38 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:38 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 04/15] bus/vmbus: add resource by index Date: Thu, 17 Feb 2022 21:36:02 +0530 Message-Id: <20220217160613.70161-5-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Map the memory region created by hv_uio driver by passing their index number Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 70 +++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index 2059ab192b..41522ba2b5 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -17,6 +18,7 @@ #include "private.h" const char *driver_name = "hv_uio"; +static void *vmbus_map_addr; /* Check map names with kernel names */ static const char *map_names[VMBUS_MAX_RESOURCE] = { @@ -140,3 +142,71 @@ vmbus_uio_alloc_resource(struct rte_vmbus_device *dev, vmbus_uio_free_resource(dev, *uio_res); return -1; } + +static int +find_max_end_va(const struct rte_memseg_list *msl, void *arg) +{ + size_t sz = msl->memseg_arr.len * msl->page_sz; + void *end_va = RTE_PTR_ADD(msl->base_va, sz); + void **max_va = arg; + + if (*max_va < end_va) + *max_va = end_va; + return 0; +} + +/* + * TODO: this should be part of memseg api. + * code is duplicated from PCI. + */ +static void * +vmbus_find_max_end_va(void) +{ + void *va = NULL; + + rte_memseg_list_walk(find_max_end_va, &va); + return va; +} + +int +vmbus_uio_map_resource_by_index(struct rte_vmbus_device *dev, int idx, + struct mapped_vmbus_resource *uio_res, + int flags) +{ + size_t size = dev->resource[idx].len; + struct vmbus_map *maps = uio_res->maps; + void *mapaddr; + off_t offset; + int fd; + + /* devname for mmap */ + fd = open(uio_res->path, O_RDWR); + if (fd < 0) { + VMBUS_LOG(ERR, "Cannot open %s: %s", + uio_res->path, strerror(errno)); + return -1; + } + + /* try mapping somewhere close to the end of hugepages */ + if (vmbus_map_addr == NULL) + vmbus_map_addr = vmbus_find_max_end_va(); + + /* offset is special in uio it indicates which resource */ + offset = idx * rte_mem_page_size(); + + mapaddr = vmbus_map_resource(vmbus_map_addr, fd, offset, size, flags); + close(fd); + + if (mapaddr == MAP_FAILED) + return -1; + + dev->resource[idx].addr = mapaddr; + vmbus_map_addr = RTE_PTR_ADD(mapaddr, size); + + /* Record result of successful mapping for use by secondary */ + maps[idx].addr = mapaddr; + maps[idx].size = size; + + return 0; +} + From patchwork Thu Feb 17 16:06:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107742 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 25D28A034E; Thu, 17 Feb 2022 17:11:27 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2C34041161; Thu, 17 Feb 2022 17:10:57 +0100 (CET) Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by mails.dpdk.org (Postfix) with ESMTP id 8304140DDD for ; Thu, 17 Feb 2022 17:06:42 +0100 (CET) Received: by mail-pj1-f54.google.com with SMTP id k60-20020a17090a4cc200b001b932781f3eso6576227pjh.0 for ; Thu, 17 Feb 2022 08:06:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=u0fv533wF2B+YqedxSjqeabC24fFHSNjsRbhFAGcrp8=; b=Q3MMe8pT2L+p982gh3V28gdXLUf3am8cjC65OP8x/kaBXSWjJdIPGo2yI+PVQYZyF6 77c6BfjzcmmpEWnKrN/RDZDxElRWCQyVQb26BTFam/b0jUd/T8P3WwrlbgSqvsanBS4c 9mEPLBTSvIB1+Uo2HFFwJB04EJLhl/QkHxxoE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u0fv533wF2B+YqedxSjqeabC24fFHSNjsRbhFAGcrp8=; b=jOkG9xaDuLEbZ650p3kE43dRceJ3N2O4sulcDqhGekg5YKfLDVvQCSqtK++Wv/NiWo rjt2MSBrbAXyRsiD0bH/Betqx+ZYDcWjRg71lxYxF0paR09U5hdZsZtruWHYFA2ePMXB /7G4gHEKrI2x6TaSySgj2aPxwH+R3SVPc77Jf5lYr9y1YX7zM5mnIAWHAxiYtvyB8KRU +7h9++3AMcDNB96hoyySd02/9pk6R6I1IvF5RgZmcxkyes/GWnEZnOWF5I2rNN+cR0le ejCyx3p+S10Eg2Zf2n9UhgzmvsDAGcm15hq9Fz6lCGOO4Osv5gNGy5FnmSdFEhrusDq7 RRjw== X-Gm-Message-State: AOAM533w4UYyDqPfcighBe4xcBVwwO1C16l9BNrSNvTzofkM2Ic77B8h 1jMAurpN70f98ZdBmLsyxmqwGw== X-Google-Smtp-Source: ABdhPJxow1WVvPSJmtXGuVfc5us4HHFQwLZsvWmNodPAoGjLfQ10N+KGsJfrm5gXQLVy1aoKQqEKKg== X-Received: by 2002:a17:902:e94e:b0:14d:85a1:c846 with SMTP id b14-20020a170902e94e00b0014d85a1c846mr3500099pll.120.1645114001731; Thu, 17 Feb 2022 08:06:41 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:41 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 05/15] net/netvsc: make event monitor OS dependent Date: Thu, 17 Feb 2022 21:36:03 +0530 Message-Id: <20220217160613.70161-6-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Event monitoring is not yet supported on FreeBSD, hence moving it to the OS specific files Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/net/netvsc/freebsd/hn_os.c | 16 ++++++++++++++++ drivers/net/netvsc/hn_ethdev.c | 7 +++---- drivers/net/netvsc/hn_os.h | 6 ++++++ drivers/net/netvsc/linux/hn_os.c | 21 +++++++++++++++++++++ 4 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 drivers/net/netvsc/freebsd/hn_os.c create mode 100644 drivers/net/netvsc/hn_os.h create mode 100644 drivers/net/netvsc/linux/hn_os.c diff --git a/drivers/net/netvsc/freebsd/hn_os.c b/drivers/net/netvsc/freebsd/hn_os.c new file mode 100644 index 0000000000..4c6a79872d --- /dev/null +++ b/drivers/net/netvsc/freebsd/hn_os.c @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2021 Microsoft Corporation + */ + +#include + +#include + +#include "hn_logs.h" +#include "hn_os.h" + +int eth_hn_os_dev_event(void) +{ + PMD_DRV_LOG(DEBUG, "rte_dev_event_monitor_start not supported on FreeBSD"); + return 0; +} diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 8a950403ac..8b1e07b775 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -39,6 +39,7 @@ #include "hn_rndis.h" #include "hn_nvs.h" #include "ndis.h" +#include "hn_os.h" #define HN_TX_OFFLOAD_CAPS (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \ RTE_ETH_TX_OFFLOAD_TCP_CKSUM | \ @@ -1240,11 +1241,9 @@ static int eth_hn_probe(struct rte_vmbus_driver *drv __rte_unused, PMD_INIT_FUNC_TRACE(); - ret = rte_dev_event_monitor_start(); - if (ret) { - PMD_DRV_LOG(ERR, "Failed to start device event monitoring"); + ret = eth_hn_os_dev_event(); + if (ret) return ret; - } eth_dev = eth_dev_vmbus_allocate(dev, sizeof(struct hn_data)); if (!eth_dev) diff --git a/drivers/net/netvsc/hn_os.h b/drivers/net/netvsc/hn_os.h new file mode 100644 index 0000000000..618c53cdcd --- /dev/null +++ b/drivers/net/netvsc/hn_os.h @@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2009-2021 Microsoft Corp. + * All rights reserved. + */ + +int eth_hn_os_dev_event(void); diff --git a/drivers/net/netvsc/linux/hn_os.c b/drivers/net/netvsc/linux/hn_os.c new file mode 100644 index 0000000000..1ea12ce928 --- /dev/null +++ b/drivers/net/netvsc/linux/hn_os.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2021 Microsoft Corporation + */ + +#include + +#include + +#include "hn_logs.h" +#include "hn_os.h" + +int eth_hn_os_dev_event(void) +{ + int ret; + + ret = rte_dev_event_monitor_start(); + if (ret) + PMD_DRV_LOG(ERR, "Failed to start device event monitoring"); + + return ret; +} From patchwork Thu Feb 17 16:06:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107743 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EA14EA034E; Thu, 17 Feb 2022 17:11:33 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 13AD14116A; Thu, 17 Feb 2022 17:10:58 +0100 (CET) Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by mails.dpdk.org (Postfix) with ESMTP id 8B1DA40395 for ; Thu, 17 Feb 2022 17:06:45 +0100 (CET) Received: by mail-pj1-f41.google.com with SMTP id qe15so6002941pjb.3 for ; Thu, 17 Feb 2022 08:06:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FQE7R5QnH3f3iR0R/TgKwsCPuFKvpff6aX+RZerj3xU=; b=LuygHn7VzxdYP2ovtVO46GEC6rlEHrg3dGLZo4tPaxpGjx6t1lC1VG+8MamoNG9BpC zGX6l9d+ty/VY0/uetI8zIlh41GO0C7y/c40vymKRTxjd9GDVwmL4Oi95u/Y3E00Ln0N /YfozuETV9hP/Kt9xOfikGMOdBtCNqZRBtOHI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FQE7R5QnH3f3iR0R/TgKwsCPuFKvpff6aX+RZerj3xU=; b=Xhf1JbJ0T51rTYzL+1TfTPcC5w5S3sdNwiBrya71TI7byDphXpAzZZ2w70m5O8iYxv R9BTLAliebV8ZXcE+KKw0yX+wuYs3itCyF1VWZY9PCWni8b5A+bpaR6phYpsR5Em6m83 XMS4rNAOgK9Eo3CNGl4DU2AJzKUUwBYYvKt6pkaIpRf53Y6CYm+W305peur5d36E56n/ TjSbwyvQz8rjElDEW8BpJ+lTIbJM3RszoCVIY0dd7K4PKaNDI0gRLjxP/KpYt1Ut/kOZ VWzDZ/8iPeSfxcXIIDdHgoxuLV1Yg8jx3ByYKDtdJ8Qs30oL6KogoLmWpx/2W8sULQdJ JNvQ== X-Gm-Message-State: AOAM530xIsgcYe6ouKV1hxmUPynU+Zh9OPFgmx8AE/CYoqaahO+rL06Q 1DiB/wW8LK3UHA1RbubaInFcmQ== X-Google-Smtp-Source: ABdhPJxJV658pLdJ/u1dVA3Uefbqs8L7J5KISfZRTOD4/+hyDvqk8SVEP/YBZ6d4+U14e+bK0dJjRg== X-Received: by 2002:a17:902:e84f:b0:14d:8437:5130 with SMTP id t15-20020a170902e84f00b0014d84375130mr3433979plg.60.1645114004744; Thu, 17 Feb 2022 08:06:44 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:44 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 06/15] bus/vmbus: add ring mapping APIs Date: Thu, 17 Feb 2022 21:36:04 +0530 Message-Id: <20220217160613.70161-7-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Based on its channel id, mapping of primary channel or subchannel is determined. The primary channel memmory is mapped in the same way as done in Linux. For the subchannel an mmap request is directly made after determining the subchan memory offset Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 86 +++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index 41522ba2b5..b0c011dd9a 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -17,6 +17,12 @@ #include "private.h" +/* Macros to distinguish mmap request + * [7-0] - Device memory region + * [15-8]- Sub-channel id + */ +#define UH_SUBCHAN_MASK_SHIFT 8 + const char *driver_name = "hv_uio"; static void *vmbus_map_addr; @@ -210,3 +216,83 @@ vmbus_uio_map_resource_by_index(struct rte_vmbus_device *dev, int idx, return 0; } +static int vmbus_uio_map_primary(struct vmbus_channel *chan, + void **ring_buf, uint32_t *ring_size) +{ + struct mapped_vmbus_resource *uio_res; + + uio_res = vmbus_uio_find_resource(chan->device); + if (!uio_res) { + VMBUS_LOG(ERR, "can not find resources!"); + return -ENOMEM; + } + + if (uio_res->nb_maps < VMBUS_MAX_RESOURCE) { + VMBUS_LOG(ERR, "VMBUS: only %u resources found!", + uio_res->nb_maps); + return -EINVAL; + } + + *ring_size = uio_res->maps[HV_TXRX_RING_MAP].size / 2; + *ring_buf = uio_res->maps[HV_TXRX_RING_MAP].addr; + return 0; +} + +static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev, + struct vmbus_channel *chan, + void **ring_buf, uint32_t *ring_size) +{ + char ring_path[PATH_MAX]; + size_t size; + void *mapaddr; + off_t offset; + int fd; + + snprintf(ring_path, sizeof(ring_path), + "/dev/hv_uio%d", dev->uio_num); + + fd = open(ring_path, O_RDWR); + if (fd < 0) { + VMBUS_LOG(ERR, "Cannot open %s: %s", + ring_path, strerror(errno)); + return -errno; + } + + /* subchannel rings are of the same size as primary */ + size = dev->resource[HV_TXRX_RING_MAP].len; + offset = (chan->relid << UH_SUBCHAN_MASK_SHIFT) * PAGE_SIZE; + + mapaddr = vmbus_map_resource(vmbus_map_addr, fd, + offset, size, 0); + close(fd); + + if (mapaddr == MAP_FAILED) + return -EIO; + + *ring_size = size / 2; + *ring_buf = mapaddr; + + vmbus_map_addr = RTE_PTR_ADD(mapaddr, size); + return 0; +} + +int vmbus_uio_map_rings(struct vmbus_channel *chan) +{ + const struct rte_vmbus_device *dev = chan->device; + uint32_t ring_size; + void *ring_buf; + int ret; + + /* Primary channel */ + if (chan->subchannel_id == 0) + ret = vmbus_uio_map_primary(chan, &ring_buf, &ring_size); + else + ret = vmbus_uio_map_subchan(dev, chan, &ring_buf, &ring_size); + + if (ret) + return ret; + + vmbus_br_setup(&chan->txbr, ring_buf, ring_size); + vmbus_br_setup(&chan->rxbr, (char *)ring_buf + ring_size, ring_size); + return 0; +} From patchwork Thu Feb 17 16:06:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107744 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BF6E6A034E; Thu, 17 Feb 2022 17:11:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E8CF841172; Thu, 17 Feb 2022 17:10:58 +0100 (CET) Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by mails.dpdk.org (Postfix) with ESMTP id 4E99240042 for ; Thu, 17 Feb 2022 17:06:48 +0100 (CET) Received: by mail-pf1-f169.google.com with SMTP id d187so49861pfa.10 for ; Thu, 17 Feb 2022 08:06:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KoA7WVw3Vhf+g5MAZiKbpMXvHJBVLWp2bfvAeMIq8Ao=; b=ZZzJpr02gfbVOAwbxFqKzaKx8kXZphTbVv8tFcWunmkdj0Wqwyj8DuRks5YVcWGL7n jCdcgVIExNKeR6n0DtYcUcT1K27U6MojP0bjIRIor2j9JoNcZ7oCFohBdjFkfgo0nErG TpNd9+ZgjGgYZktwvggDPSSHtAJp+ZFK07fL4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KoA7WVw3Vhf+g5MAZiKbpMXvHJBVLWp2bfvAeMIq8Ao=; b=pSSwNQ8Q9Q+RRw/cJeSTStIfnq4yYYV3ysI6LnzJDmCKfqVHaRU4FOWmLlz2SLfryV seFBUiwiuM+LiEU0CmWmcfUDOnUzQ3DcdtNxSuP9fV2S0tq9SmVqa5hgfzyGN7UQILUH cavwSBDlwbkYHDWmnHQXbdjEfPsC7XKCQDbwMOBs/+ukQVkXBUSC53wHY63hvFUCbFx3 N1EDs5R5KxqCm0Rmz7hXlW2uI8BRqzlUPa0/r4CVeYIUDTwmWpAlxbufW2apiMwt57oj bSjYtAm4r8bb/CaB+u8doGxFfT36x1IzwP7+r10LSA5rb6guj06MBbZ4X33IdATlKAPa +z2A== X-Gm-Message-State: AOAM530Dk7LAyhmo1Urfy89b1VOpcnImCa22VEgEahZsLpKfU94Pyrkv UhLDTsxYQvTbYfRW6mzKxvsSPQ== X-Google-Smtp-Source: ABdhPJwgAbhAQ24ATWgtkmqFyXAwrX10D42oElYXjXAYH/4ISK+v7Jix7NHG08cqhbtt/O2XVr/ZkA== X-Received: by 2002:a63:27c7:0:b0:343:984e:3428 with SMTP id n190-20020a6327c7000000b00343984e3428mr2997350pgn.528.1645114007560; Thu, 17 Feb 2022 08:06:47 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:47 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 07/15] bus/vmbus: add stub for subchannel support API Date: Thu, 17 Feb 2022 21:36:05 +0530 Message-Id: <20220217160613.70161-8-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org subchannels are always supported and so making vmbus_uio_subchannels_supported() always return true. Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index b0c011dd9a..95b030c749 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -296,3 +296,11 @@ int vmbus_uio_map_rings(struct vmbus_channel *chan) vmbus_br_setup(&chan->rxbr, (char *)ring_buf + ring_size, ring_size); return 0; } + +bool vmbus_uio_subchannels_supported(const struct rte_vmbus_device *dev, + const struct vmbus_channel *chan) +{ + RTE_SET_USED(dev); + RTE_SET_USED(chan); + return true; +} From patchwork Thu Feb 17 16:06:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107745 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 51903A034E; Thu, 17 Feb 2022 17:11:48 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D2DA54117A; Thu, 17 Feb 2022 17:10:59 +0100 (CET) Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by mails.dpdk.org (Postfix) with ESMTP id 3DC9B40042 for ; Thu, 17 Feb 2022 17:06:51 +0100 (CET) Received: by mail-pj1-f54.google.com with SMTP id a11-20020a17090a740b00b001b8b506c42fso9904047pjg.0 for ; Thu, 17 Feb 2022 08:06:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/nGU9EO6b4P3GJaQeqniXP/8t+Vr4Mqr0yXeJGDsbZE=; b=JSxKuoJ5dtXTHSXc41V2hgpjT5lcGG7L64AAfzOyhHxMJp+g+FpbhQticqR/hI/uOJ tSuZ66Ipf5DItgMk9SkEs2PoepFVV1TCWtQwvkdLCgNp0MtvJE6g1Jd0iklz9cYMawph X3CZYGkKGNUdZKAGyhSsXsieOk9JoahfENnkM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/nGU9EO6b4P3GJaQeqniXP/8t+Vr4Mqr0yXeJGDsbZE=; b=D1+c0ibncn/CREukfDcAyTqYto8SGFCZBdyRc/3SaNEF+SixlxmcfFVCt62uToDkyL Jw4Z6IWfqz8dmefe2wwyLJUZLr1Q0wLHnjXQjBNN0b0XN+u/owL6nkt5by/KYc5oVurZ 5lnJZNhzsMoEiDEsg9NhTNncm9lgtT/GWVLOlzndmeyQhfsfRP4qiMbZ7ZSs9H5k6M/i EpOsZsIYPYw4m5wSscU+/KLRTPePFWh4exZd3ilRPQCUcvyC8d7YbVgsSctrA0p2z3rc QQRh1hbmjmNFckkkF8TOY8CshQM1aSDUmGDXHMRkCsuKcBIdxUG2xTpow6BoZhQcY9t8 Q4BA== X-Gm-Message-State: AOAM530SJsV3b2mSGWa1coEOFMDYp69ds3Sc8bR1Tq5xOy3x7ZmNEH+F nlh/74l+JZHig8ANbfRECmkmBQ== X-Google-Smtp-Source: ABdhPJwbeV+eIwZ0HjcZYAjjhc7K6LxJkkPHQInsTznKuqAsRYQkaD3GQ/NEXHxUyeyW9oullFvKRQ== X-Received: by 2002:a17:902:bc82:b0:14f:2b9c:4aa with SMTP id bb2-20020a170902bc8200b0014f2b9c04aamr3334357plb.145.1645114010431; Thu, 17 Feb 2022 08:06:50 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:49 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 08/15] bus/vmbus: open subchannels Date: Thu, 17 Feb 2022 21:36:06 +0530 Message-Id: <20220217160613.70161-9-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In FreeBSD, unlike Linux there is no sub-channel open callback that could be called by HV_UIO driver, upon their grant by the hypervisor. Thus the PMD makes an IOCTL to the HV_UIO to open the sub-channels On Linux, the vmbus_uio_subchan_open() will always return success as the Linux HV_UIO opens them implicitly. Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 30 +++++++++++++++++++++++++++ drivers/bus/vmbus/linux/vmbus_uio.c | 12 +++++++++++ drivers/bus/vmbus/private.h | 1 + drivers/bus/vmbus/rte_bus_vmbus.h | 10 +++++++++ drivers/bus/vmbus/version.map | 1 + drivers/bus/vmbus/vmbus_channel.c | 5 +++++ 6 files changed, 59 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index 95b030c749..affc0a3f4f 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -23,6 +23,9 @@ */ #define UH_SUBCHAN_MASK_SHIFT 8 +/* ioctl */ +#define HVIOOPENSUBCHAN _IOW('h', 14, uint32_t) + const char *driver_name = "hv_uio"; static void *vmbus_map_addr; @@ -304,3 +307,30 @@ bool vmbus_uio_subchannels_supported(const struct rte_vmbus_device *dev, RTE_SET_USED(chan); return true; } + +int vmbus_uio_subchan_open(struct rte_vmbus_device *dev, uint32_t subchan) +{ + struct mapped_vmbus_resource *uio_res; + int fd, err = 0; + + uio_res = vmbus_uio_find_resource(dev); + if (!uio_res) { + VMBUS_LOG(ERR, "cannot find uio resource"); + return -EINVAL; + } + + fd = open(uio_res->path, O_RDWR); + if (fd < 0) { + VMBUS_LOG(ERR, "Cannot open %s: %s", + uio_res->path, strerror(errno)); + return -1; + } + + if (ioctl(fd, HVIOOPENSUBCHAN, &subchan)) { + VMBUS_LOG(ERR, "open subchan ioctl failed %s: %s", + uio_res->path, strerror(errno)); + err = -1; + } + close(fd); + return err; +} diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c index 5db70f8e0d..7241c052e7 100644 --- a/drivers/bus/vmbus/linux/vmbus_uio.c +++ b/drivers/bus/vmbus/linux/vmbus_uio.c @@ -471,3 +471,15 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary, closedir(chan_dir); return err; } + +/* + * This is a stub function and it should always succeed. + * The Linux UIO kernel driver opens the subchannels implicitly. + */ +int vmbus_uio_subchan_open(struct rte_vmbus_device *dev, + uint32_t subchan) +{ + RTE_SET_USED(dev); + RTE_SET_USED(subchan); + return 0; +} diff --git a/drivers/bus/vmbus/private.h b/drivers/bus/vmbus/private.h index 1bca147e12..ea0276a6c6 100644 --- a/drivers/bus/vmbus/private.h +++ b/drivers/bus/vmbus/private.h @@ -116,6 +116,7 @@ bool vmbus_uio_subchannels_supported(const struct rte_vmbus_device *dev, int vmbus_uio_get_subchan(struct vmbus_channel *primary, struct vmbus_channel **subchan); int vmbus_uio_map_rings(struct vmbus_channel *chan); +int vmbus_uio_subchan_open(struct rte_vmbus_device *device, uint32_t subchan); void vmbus_br_setup(struct vmbus_br *br, void *buf, unsigned int blen); diff --git a/drivers/bus/vmbus/rte_bus_vmbus.h b/drivers/bus/vmbus/rte_bus_vmbus.h index a24bad831d..c8cb4bc98c 100644 --- a/drivers/bus/vmbus/rte_bus_vmbus.h +++ b/drivers/bus/vmbus/rte_bus_vmbus.h @@ -404,6 +404,16 @@ void rte_vmbus_chan_dump(FILE *f, const struct vmbus_channel *chan); */ void rte_vmbus_unregister(struct rte_vmbus_driver *driver); +/** + * Perform IOCTL to VMBUS device + * + * @param device + * A pointer to a rte_vmbus_device structure + * @param subchan + * Count of subchannels to open + */ +int rte_vmbus_ioctl(struct rte_vmbus_device *device, uint32_t subchan); + /** Helper for VMBUS device registration from driver instance */ #define RTE_PMD_REGISTER_VMBUS(nm, vmbus_drv) \ RTE_INIT(vmbusinitfn_ ##nm) \ diff --git a/drivers/bus/vmbus/version.map b/drivers/bus/vmbus/version.map index 3cadec7fae..3509d4fc14 100644 --- a/drivers/bus/vmbus/version.map +++ b/drivers/bus/vmbus/version.map @@ -23,6 +23,7 @@ DPDK_22 { rte_vmbus_subchan_open; rte_vmbus_unmap_device; rte_vmbus_unregister; + rte_vmbus_ioctl; local: *; }; diff --git a/drivers/bus/vmbus/vmbus_channel.c b/drivers/bus/vmbus/vmbus_channel.c index 119b9b367e..9a8f6e3eef 100644 --- a/drivers/bus/vmbus/vmbus_channel.c +++ b/drivers/bus/vmbus/vmbus_channel.c @@ -365,6 +365,11 @@ int rte_vmbus_max_channels(const struct rte_vmbus_device *device) return 1; } +int rte_vmbus_ioctl(struct rte_vmbus_device *device, uint32_t subchan) +{ + return vmbus_uio_subchan_open(device, subchan); +} + /* Setup secondary channel */ int rte_vmbus_subchan_open(struct vmbus_channel *primary, struct vmbus_channel **new_chan) From patchwork Thu Feb 17 16:06:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107746 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 52E88A034E; Thu, 17 Feb 2022 17:11:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BCCE741186; Thu, 17 Feb 2022 17:11:00 +0100 (CET) Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by mails.dpdk.org (Postfix) with ESMTP id 0373E40042 for ; Thu, 17 Feb 2022 17:06:54 +0100 (CET) Received: by mail-pj1-f42.google.com with SMTP id v13-20020a17090ac90d00b001b87bc106bdso9836030pjt.4 for ; Thu, 17 Feb 2022 08:06:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=22ld7iGtLypbWNKcrTv7ZEI6V4+hiA0tI66k2StuwMc=; b=cj3CqI5Pg+HOwsEiWyY4p08YAx0Edze2eVuBYcggZmSsczBtUmh0cZBMnhjfKqACvi 8PzHAPbIyx9oJAw9oYs9VVVWOqc+mmA5tRf7KV8J/VFDj1FSpXIJBNHH+CTiyNhcGjBH dgY1zPPKW4NNUJVpduzJTuyZg6WcOTvpmQ7Mg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=22ld7iGtLypbWNKcrTv7ZEI6V4+hiA0tI66k2StuwMc=; b=tlYoP3SURF48jyHsYkaKIovjss60U59Y5NHI3KPdmh60ENxvbzzFmg87yQsu7dQ74E HJvXO/TVL9kI0v7Xe5HR6X0mXh7Tws3ecHTd87uVehzW3vWkdOJBVNkGOq0tFtSEb4lO 913OkcmVymC/+u31Ulod9Wc+n+ItxM3t4+kI+YsroH7/3z3XOctdsdl8j9qabp4sZ4c8 TGsdNU7Ha+feMBFr0jb1uY5XF8glq/asA0D8UF31/XD0ufBNzVwO+VaKj3mVSqIjdscS YOQxM6Ha16q3XNnpOmqbyOnfuuqCLv4skf1fLLpYKMPhXhQz9a6577XThxG0KH4rgz92 K/5w== X-Gm-Message-State: AOAM532lZ7iT3M7d29OqjfISlTllckdJVb+eUSDGVoUy6xoTJKQsxsAK Ftr4JQVGxQsBvIqVb1tJYrvOmA== X-Google-Smtp-Source: ABdhPJwf8Wnt1My5wfRMrQXuDM7Hg3ftL9qYIqmq6cCGaifIihX2kCv3ChrF/yH/6D5EnVgP2CjJFQ== X-Received: by 2002:a17:90b:3698:b0:1b9:e011:b942 with SMTP id mj24-20020a17090b369800b001b9e011b942mr7902966pjb.189.1645114013263; Thu, 17 Feb 2022 08:06:53 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:52 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 09/15] net/netvsc: make IOCTL call to open subchannels Date: Thu, 17 Feb 2022 21:36:07 +0530 Message-Id: <20220217160613.70161-10-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org make IOCTL call to open subchannels Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/net/netvsc/hn_ethdev.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 8b1e07b775..104c7aebc5 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -516,6 +516,10 @@ static int hn_subchan_configure(struct hn_data *hv, if (err) return err; + err = rte_vmbus_ioctl(hv->vmbus, subchan); + if (err) + return err; + while (subchan > 0) { struct vmbus_channel *new_sc; uint16_t chn_index; From patchwork Thu Feb 17 16:06:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107747 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6DBC9A034E; Thu, 17 Feb 2022 17:12:03 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 97C4F411A7; Thu, 17 Feb 2022 17:11:01 +0100 (CET) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by mails.dpdk.org (Postfix) with ESMTP id 0EFCD40150 for ; Thu, 17 Feb 2022 17:06:57 +0100 (CET) Received: by mail-pf1-f193.google.com with SMTP id c4so58347pfl.7 for ; Thu, 17 Feb 2022 08:06:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8ktAUWvC1nGJ8OThP8ChjknVgYreQzPuyUwqEmrgZJg=; b=eOdga3X9C0mMk/lce/kyonIX70D1fhWXwuW65te2bbzAKM5j6Mc4K6ssg6FfO/64dH Z6s4QqaqCdvyfa+fYDWspAbF2P7A3xXiKxrl551oKrB0nCVhv2bkZTm/Zt/NgAIl5l06 Eqcfh2XDsUZNu9QjR5cCiOtKUMA5uKaOhPviY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8ktAUWvC1nGJ8OThP8ChjknVgYreQzPuyUwqEmrgZJg=; b=JBvQu+eykdF75ZKDXziafsEVxmoSpiwIlRe722tu+iN1lFciuwKqIszJWNI+At10Rh irk93R3ZtiUUQQ4EKJIrbtxLmddaIHXw39PNEDtQ+jzfXj537i8z8I4rFNyn85NQ9ppc ytuo0PWfxiaJ4bTuxQWug1ewSQd3z19Tqn6BU/6/lA25eeGJ/pY2p2KzVBBlvf5zGpm7 EKpCPcCZlw6Tkj7KAXPBa9xSZXZheLmplAy2lOXWo37zqeiZ3Yh54LI598VwTfVGmAS6 avSLocasAGBshU4H2OuxoHgaS35Q57Mi20dE8aWKXMSBUeF3qujq0Oyw88Bd4FrHlUXx 7Kow== X-Gm-Message-State: AOAM5336f/WIl32LqYIJMgwfjeD3cSP5R37pbPve3ft6dr90cqAiYls2 3kO23mNgfS4jyUTFfbY7TYXdmQ== X-Google-Smtp-Source: ABdhPJyUAzFKmbe4ez8IwiuaDWNtjUvPSVmsNF+LYDlSzCW2i2aiKm958KFPLmDusjJvVqaszwTNxQ== X-Received: by 2002:a63:fe0f:0:b0:342:748e:996f with SMTP id p15-20020a63fe0f000000b00342748e996fmr2987280pgh.164.1645114016237; Thu, 17 Feb 2022 08:06:56 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:55 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 10/15] bus/vmbus: get subchannel info Date: Thu, 17 Feb 2022 21:36:08 +0530 Message-Id: <20220217160613.70161-11-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Using sysctl, all the subchannel information is fetched Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_uio.c | 85 +++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index affc0a3f4f..ca6f5fac59 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -308,6 +308,91 @@ bool vmbus_uio_subchannels_supported(const struct rte_vmbus_device *dev, return true; } +static bool vmbus_isnew_subchannel(struct vmbus_channel *primary, + uint16_t id) +{ + const struct vmbus_channel *c; + + STAILQ_FOREACH(c, &primary->subchannel_list, next) { + if (c->relid == id) + return false; + } + return true; +} + +int vmbus_uio_get_subchan(struct vmbus_channel *primary, + struct vmbus_channel **subchan) +{ + const struct rte_vmbus_device *dev = primary->device; + char sysctlBuffer[PATH_MAX], sysctlVar[PATH_MAX]; + size_t len = PATH_MAX, sysctl_len; + /* nr_schan, relid, subid & monid datatype must match kernel's for sysctl */ + uint32_t relid, subid, nr_schan, i; + uint8_t monid; + int err; + + /* get no. of sub-channels opened by hv_uio + * dev.hv_uio.0.subchan_cnt + */ + snprintf(sysctlVar, len, "dev.%s.%d.subchan_cnt", driver_name, + dev->uio_num); + sysctl_len = sizeof(nr_schan); + if (sysctlbyname(sysctlVar, &nr_schan, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s : %s", sysctlVar, + strerror(errno)); + return -1; + } + + /* dev.hv_uio.0.channel.14.sub */ + snprintf(sysctlBuffer, len, "dev.%s.%d.channel.%u.sub", driver_name, + dev->uio_num, primary->relid); + for (i = 1; i <= nr_schan; i++) { + /* get relid */ + snprintf(sysctlVar, len, "%s.%u.chanid", sysctlBuffer, i); + sysctl_len = sizeof(relid); + if (sysctlbyname(sysctlVar, &relid, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s : %s", sysctlVar, + strerror(errno)); + goto error; + } + + if (!vmbus_isnew_subchannel(primary, (uint16_t)relid)) { + VMBUS_LOG(DEBUG, "skip already found channel: %u", + relid); + continue; + } + + /* get sub-channel id */ + snprintf(sysctlVar, len, "%s.%u.ch_subidx", sysctlBuffer, i); + sysctl_len = sizeof(subid); + if (sysctlbyname(sysctlVar, &subid, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s : %s", sysctlVar, + strerror(errno)); + goto error; + } + + /* get monitor id */ + snprintf(sysctlVar, len, "%s.%u.monitor_id", sysctlBuffer, i); + sysctl_len = sizeof(monid); + if (sysctlbyname(sysctlVar, &monid, &sysctl_len, NULL, 0) < 0) { + VMBUS_LOG(ERR, "could not read %s : %s", sysctlVar, + strerror(errno)); + goto error; + } + + err = vmbus_chan_create(dev, (uint16_t)relid, (uint16_t)subid, + monid, subchan); + if (err) { + VMBUS_LOG(ERR, "subchannel setup failed"); + return err; + } + break; + } + return 0; +error: + return -1; +} + int vmbus_uio_subchan_open(struct rte_vmbus_device *dev, uint32_t subchan) { struct mapped_vmbus_resource *uio_res; From patchwork Thu Feb 17 16:06:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107748 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E2F35A034E; Thu, 17 Feb 2022 17:12:09 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95EC7411B6; Thu, 17 Feb 2022 17:11:02 +0100 (CET) Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) by mails.dpdk.org (Postfix) with ESMTP id 027D640042 for ; Thu, 17 Feb 2022 17:07:00 +0100 (CET) Received: by mail-pj1-f66.google.com with SMTP id qe15so6003547pjb.3 for ; Thu, 17 Feb 2022 08:06:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BEpDKAeDbz1GNZlqcVjcUBf83yZNy9f8hz+YSThexrc=; b=PlkqOtJceHsjAwKny8WjUHGruDtw236/hHMbYAxgQezZ7GUXQmrFS43pTy6RDOCjMX X50vTJo7IIoFBMHbyfHA2Z1hrGehQZazoV5J70lJRFToAhb8kxl1DhK7YCsQtlySe/w5 031YyBJRMTWzPfgXsJB2EChGP/z0grNXhr/vE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BEpDKAeDbz1GNZlqcVjcUBf83yZNy9f8hz+YSThexrc=; b=IuM1J1GWByuTd1s7EEA/IwpnCyiEV4GYzH7JPhnGX2f7uFiUkx0dKuQzmNUlU/oVsh 1lAAFrHJxozd3o+XkykZmmV8Ab8iieDKKGZHU8iyU1FDYk57JmjHBAwH/AfM/c0Y6uMl jNI+8eC81JOrFost4pbLYGzlqUiuSyohvRMZ15fqqenjU6YurWlEcRfEwAgaEbPfCuuh 4c0ZveSG6TXCKezeSP5KV4kV0FLdVPCusZDTE3avE5g6r+aAk+mF0mUt8+w0KpSo4o/g mMF/QUladcDXY8t4Ve1Y3objjQpuJinl8zWZmKf32I543DfJZmLj3xxUPUuaJEuVhDeg zWXg== X-Gm-Message-State: AOAM533lMprf75loISBrAQn6PbB9I0OvSihEkRyDYxpH+kVFkn0eo/Wh PITJW38Tqc4O3TVC8MxnsXsunQ== X-Google-Smtp-Source: ABdhPJxDlrTBJ2rNFW9fQvrBpV3VFtqmAksuZByZCGVBdIrzHrrkqnUdnX5NmLUqpG+vQYW5yCPirg== X-Received: by 2002:a17:90b:3806:b0:1b8:e628:d88 with SMTP id mq6-20020a17090b380600b001b8e6280d88mr8048624pjb.32.1645114019174; Thu, 17 Feb 2022 08:06:59 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:06:58 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 11/15] net/netvsc: moving hotplug retry to OS dir Date: Thu, 17 Feb 2022 21:36:09 +0530 Message-Id: <20220217160613.70161-12-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Moved netvsc_hotplug_retry to respective OS dir as it contains OS dependent code. For Linux, it is copied as is and for FreeBSD it is not supported yet. Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/net/netvsc/freebsd/hn_os.c | 6 ++ drivers/net/netvsc/hn_ethdev.c | 84 ---------------------------- drivers/net/netvsc/hn_os.h | 2 + drivers/net/netvsc/linux/hn_os.c | 90 ++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 84 deletions(-) diff --git a/drivers/net/netvsc/freebsd/hn_os.c b/drivers/net/netvsc/freebsd/hn_os.c index 4c6a79872d..2ba4c32a76 100644 --- a/drivers/net/netvsc/freebsd/hn_os.c +++ b/drivers/net/netvsc/freebsd/hn_os.c @@ -14,3 +14,9 @@ int eth_hn_os_dev_event(void) PMD_DRV_LOG(DEBUG, "rte_dev_event_monitor_start not supported on FreeBSD"); return 0; } + +void netvsc_hotplug_retry(void *args) +{ + RTE_SET_USED(args); + return; +} diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 104c7aebc5..dd4b872fed 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -57,9 +57,6 @@ #define NETVSC_ARG_TXBREAK "tx_copybreak" #define NETVSC_ARG_RX_EXTMBUF_ENABLE "rx_extmbuf_enable" -/* The max number of retry when hot adding a VF device */ -#define NETVSC_MAX_HOTADD_RETRY 10 - struct hn_xstats_name_off { char name[RTE_ETH_XSTATS_NAME_SIZE]; unsigned int offset; @@ -556,87 +553,6 @@ static int hn_subchan_configure(struct hn_data *hv, return err; } -static void netvsc_hotplug_retry(void *args) -{ - int ret; - struct hn_data *hv = args; - struct rte_eth_dev *dev = &rte_eth_devices[hv->port_id]; - struct rte_devargs *d = &hv->devargs; - char buf[256]; - - DIR *di; - struct dirent *dir; - struct ifreq req; - struct rte_ether_addr eth_addr; - int s; - - PMD_DRV_LOG(DEBUG, "%s: retry count %d", - __func__, hv->eal_hot_plug_retry); - - if (hv->eal_hot_plug_retry++ > NETVSC_MAX_HOTADD_RETRY) - return; - - snprintf(buf, sizeof(buf), "/sys/bus/pci/devices/%s/net", d->name); - di = opendir(buf); - if (!di) { - PMD_DRV_LOG(DEBUG, "%s: can't open directory %s, " - "retrying in 1 second", __func__, buf); - goto retry; - } - - while ((dir = readdir(di))) { - /* Skip . and .. directories */ - if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..")) - continue; - - /* trying to get mac address if this is a network device*/ - s = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); - if (s == -1) { - PMD_DRV_LOG(ERR, "Failed to create socket errno %d", - errno); - break; - } - strlcpy(req.ifr_name, dir->d_name, sizeof(req.ifr_name)); - ret = ioctl(s, SIOCGIFHWADDR, &req); - close(s); - if (ret == -1) { - PMD_DRV_LOG(ERR, - "Failed to send SIOCGIFHWADDR for device %s", - dir->d_name); - break; - } - if (req.ifr_hwaddr.sa_family != ARPHRD_ETHER) { - closedir(di); - return; - } - memcpy(eth_addr.addr_bytes, req.ifr_hwaddr.sa_data, - RTE_DIM(eth_addr.addr_bytes)); - - if (rte_is_same_ether_addr(ð_addr, dev->data->mac_addrs)) { - PMD_DRV_LOG(NOTICE, - "Found matching MAC address, adding device %s network name %s", - d->name, dir->d_name); - ret = rte_eal_hotplug_add(d->bus->name, d->name, - d->args); - if (ret) { - PMD_DRV_LOG(ERR, - "Failed to add PCI device %s", - d->name); - break; - } - } - /* When the code reaches here, we either have already added - * the device, or its MAC address did not match. - */ - closedir(di); - return; - } - closedir(di); -retry: - /* The device is still being initialized, retry after 1 second */ - rte_eal_alarm_set(1000000, netvsc_hotplug_retry, hv); -} - static void netvsc_hotadd_callback(const char *device_name, enum rte_dev_event_type type, void *arg) diff --git a/drivers/net/netvsc/hn_os.h b/drivers/net/netvsc/hn_os.h index 618c53cdcd..1fb7292b17 100644 --- a/drivers/net/netvsc/hn_os.h +++ b/drivers/net/netvsc/hn_os.h @@ -4,3 +4,5 @@ */ int eth_hn_os_dev_event(void); + +void netvsc_hotplug_retry(void *args); diff --git a/drivers/net/netvsc/linux/hn_os.c b/drivers/net/netvsc/linux/hn_os.c index 1ea12ce928..9c2f4cd7a8 100644 --- a/drivers/net/netvsc/linux/hn_os.c +++ b/drivers/net/netvsc/linux/hn_os.c @@ -3,12 +3,21 @@ */ #include +#include +#include +#include +#include #include +#include #include "hn_logs.h" +#include "hn_var.h" #include "hn_os.h" +/* The max number of retry when hot adding a VF device */ +#define NETVSC_MAX_HOTADD_RETRY 10 + int eth_hn_os_dev_event(void) { int ret; @@ -19,3 +28,84 @@ int eth_hn_os_dev_event(void) return ret; } + +void netvsc_hotplug_retry(void *args) +{ + int ret; + struct hn_data *hv = args; + struct rte_eth_dev *dev = &rte_eth_devices[hv->port_id]; + struct rte_devargs *d = &hv->devargs; + char buf[256]; + + DIR *di; + struct dirent *dir; + struct ifreq req; + struct rte_ether_addr eth_addr; + int s; + + PMD_DRV_LOG(DEBUG, "%s: retry count %d", + __func__, hv->eal_hot_plug_retry); + + if (hv->eal_hot_plug_retry++ > NETVSC_MAX_HOTADD_RETRY) + return; + + snprintf(buf, sizeof(buf), "/sys/bus/pci/devices/%s/net", d->name); + di = opendir(buf); + if (!di) { + PMD_DRV_LOG(DEBUG, "%s: can't open directory %s, " + "retrying in 1 second", __func__, buf); + goto retry; + } + + while ((dir = readdir(di))) { + /* Skip . and .. directories */ + if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..")) + continue; + + /* trying to get mac address if this is a network device*/ + s = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); + if (s == -1) { + PMD_DRV_LOG(ERR, "Failed to create socket errno %d", + errno); + break; + } + strlcpy(req.ifr_name, dir->d_name, sizeof(req.ifr_name)); + ret = ioctl(s, SIOCGIFHWADDR, &req); + close(s); + if (ret == -1) { + PMD_DRV_LOG(ERR, + "Failed to send SIOCGIFHWADDR for device %s", + dir->d_name); + break; + } + if (req.ifr_hwaddr.sa_family != ARPHRD_ETHER) { + closedir(di); + return; + } + memcpy(eth_addr.addr_bytes, req.ifr_hwaddr.sa_data, + RTE_DIM(eth_addr.addr_bytes)); + + if (rte_is_same_ether_addr(ð_addr, dev->data->mac_addrs)) { + PMD_DRV_LOG(NOTICE, + "Found matching MAC address, adding device %s network name %s", + d->name, dir->d_name); + ret = rte_eal_hotplug_add(d->bus->name, d->name, + d->args); + if (ret) { + PMD_DRV_LOG(ERR, + "Failed to add PCI device %s", + d->name); + break; + } + } + /* When the code reaches here, we either have already added + * the device, or its MAC address did not match. + */ + closedir(di); + return; + } + closedir(di); +retry: + /* The device is still being initialized, retry after 1 second */ + rte_eal_alarm_set(1000000, netvsc_hotplug_retry, hv); +} From patchwork Thu Feb 17 16:06:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107749 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DB5B8A034E; Thu, 17 Feb 2022 17:12:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 707E0411DB; Thu, 17 Feb 2022 17:11:03 +0100 (CET) Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by mails.dpdk.org (Postfix) with ESMTP id E6BE940150 for ; Thu, 17 Feb 2022 17:07:02 +0100 (CET) Received: by mail-pj1-f43.google.com with SMTP id h14-20020a17090a130e00b001b88991a305so9850947pja.3 for ; Thu, 17 Feb 2022 08:07:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nSLQbmFAXrwzndzV+q4vVZgV7qceKvCLZgoq571WrYo=; b=Pk2f3W46hVZKrlwfDw51Zw8CUONDkypoPqUIWV5Z/+RDXMR9Pj77I9pSRxz1iC5f2v 7SPbuYxDT206BvLxBUxMjidIev1RW1at3gGmGSYX52Te8PoFZ9Z+6O3SJPGNxigJDDDm I/rjpPv3fY/gOY5GoU5tKf7QLsPCeXo/dgURc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nSLQbmFAXrwzndzV+q4vVZgV7qceKvCLZgoq571WrYo=; b=rkP7O3qgdt7bfl3Y0RLQnbT/5JwZsUYKD8PPZR+qmxwXQCOoYy8PeqimI9/mh9bOTR ILBeJSIEKJNhGYMDjgcXHQcnQQ12Pb4iX195Tb2/cGBFFv6ZHFi+QPt/Fm5A3Dbkf8Dy mGwrvGT2woocHGFpGA9p8KNCrbBeRKhfs5f/DVVGcoLBjNEsqQUdn1uxym+9frP4/6ER Ewb0IQ/Ml0ndPfJJdZeMRZ9gOdUK6NdUOHgiZy/lmVQQ+vtGYmUXhHtn23VkEaTgOBDY s23vpnr1DGzcq0KI0JlnODteEJuOKIpagU9dGAFSKjdShRquGUIHkG6U+kkRo3uetNcs 9J7w== X-Gm-Message-State: AOAM53208gvwy4y1HXiTQn3ozyI+BwmY1s9uF3L3VnotzH6e9QADAasj LjISUov1yuEFTYfJ+jm8Q2K2eQ== X-Google-Smtp-Source: ABdhPJzayMmclngbUFF7hzij88yyYo12TSpwsqqOa6JxHUtldsvwLeoMyOx4rb0PmbaP8RmCySyKfA== X-Received: by 2002:a17:90b:3812:b0:1b8:9423:a0b2 with SMTP id mq18-20020a17090b381200b001b89423a0b2mr7993562pjb.172.1645114022235; Thu, 17 Feb 2022 08:07:02 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.06.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:07:01 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 12/15] bus/vmbus: add meson support for FreeBSD Date: Thu, 17 Feb 2022 21:36:10 +0530 Message-Id: <20220217160613.70161-13-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org add meson support for FreeBSD OS Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/meson.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/bus/vmbus/meson.build b/drivers/bus/vmbus/meson.build index 3892cbf67f..8fbe144fcd 100644 --- a/drivers/bus/vmbus/meson.build +++ b/drivers/bus/vmbus/meson.build @@ -20,7 +20,11 @@ if is_linux sources += files('linux/vmbus_bus.c', 'linux/vmbus_uio.c') includes += include_directories('linux') +elif is_freebsd + sources += files('freebsd/vmbus_bus.c', + 'freebsd/vmbus_uio.c') + includes += include_directories('freebsd') else build = false - reason = 'only supported on Linux' + reason = 'only supported on Linux & FreeBSD' endif From patchwork Thu Feb 17 16:06:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107750 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A8981A034E; Thu, 17 Feb 2022 17:12:23 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 521AD411EB; Thu, 17 Feb 2022 17:11:04 +0100 (CET) Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by mails.dpdk.org (Postfix) with ESMTP id E1AC540042 for ; Thu, 17 Feb 2022 17:07:05 +0100 (CET) Received: by mail-pf1-f181.google.com with SMTP id d187so50570pfa.10 for ; Thu, 17 Feb 2022 08:07:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7wQyS5CT0Xj1nR/XGUCau+2GswvRt32IhdRt4cqqxFc=; b=WizYbKvKZZoIS8guwBxhBYrirgmM7Bapf7xb60qHlKJOhr2CGhJ8Se1UAtkBa3hXdJ VmQwmUGI+Ybsceu8ohW2l1J3Tn0nqnw4/yeBTO8yBc1bl8D3h57i09uFaRzLN5Cyhgkm dd4RBMyK+V77dy+Hep05Ip3Iy4G7onzFtLs1g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7wQyS5CT0Xj1nR/XGUCau+2GswvRt32IhdRt4cqqxFc=; b=pG+nIyUkQ6PAiSw56EThDzSV9MN6cqRDYDk+QyiqleoJ3N+th/oTKbZb26wK+td+UT EoCz++MmeJIXDZbi3jm3DXBLEXZSvkx1JZ8p6WMH/PbD4iBb4IlgvGbQk/tVFrQC/29V rh8HlB8A5Z24Of6qCeRa2GmOIX+dR021KJ2y8j8Rbz3lptqJBKQMtTmKbYs6wpH/cIke NriLwQsW+qcRdqR/FPkPTeFqHtKT0dHVXwkFPkXQIqDuQeKtA3PO++Pb4pgVjHfzJUHJ oQSz+xZ/BpGha397o5j/CokAkeTtE7bKTV0CPjMa0A9eq6se1e/lDwS617ad00gMhxyd HD7w== X-Gm-Message-State: AOAM530EZe6UUXRZY/xA/LEjS20eQk0UpKjkcu2sCnRk6NI6MqKBJqlL OCAdFFPwsKKeztOXL1yJdDK4CQ== X-Google-Smtp-Source: ABdhPJwsXCFWymZe9GY/yYY1picAJbkf9OvFgOgJxw5KqM7r02YIj5WKfDNXoqLoIVy4b+FzrE4AgA== X-Received: by 2002:a63:5f47:0:b0:373:cf6c:c9d2 with SMTP id t68-20020a635f47000000b00373cf6cc9d2mr33986pgb.85.1645114025146; Thu, 17 Feb 2022 08:07:05 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.07.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:07:04 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 13/15] net/netvsc: add meson support for FreeBSD Date: Thu, 17 Feb 2022 21:36:11 +0530 Message-Id: <20220217160613.70161-14-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org add meson support for FreeBSD Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/net/netvsc/freebsd/meson.build | 6 ++++++ drivers/net/netvsc/linux/meson.build | 6 ++++++ drivers/net/netvsc/meson.build | 3 +++ 3 files changed, 15 insertions(+) create mode 100644 drivers/net/netvsc/freebsd/meson.build create mode 100644 drivers/net/netvsc/linux/meson.build diff --git a/drivers/net/netvsc/freebsd/meson.build b/drivers/net/netvsc/freebsd/meson.build new file mode 100644 index 0000000000..78f824f701 --- /dev/null +++ b/drivers/net/netvsc/freebsd/meson.build @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Microsoft Corporation + +sources += files( + 'hn_os.c', +) diff --git a/drivers/net/netvsc/linux/meson.build b/drivers/net/netvsc/linux/meson.build new file mode 100644 index 0000000000..78f824f701 --- /dev/null +++ b/drivers/net/netvsc/linux/meson.build @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Microsoft Corporation + +sources += files( + 'hn_os.c', +) diff --git a/drivers/net/netvsc/meson.build b/drivers/net/netvsc/meson.build index 399400dd01..1920413fb6 100644 --- a/drivers/net/netvsc/meson.build +++ b/drivers/net/netvsc/meson.build @@ -7,6 +7,8 @@ if is_windows subdir_done() endif +includes += include_directories(exec_env) + deps += 'bus_vmbus' sources = files( 'hn_ethdev.c', @@ -16,3 +18,4 @@ sources = files( 'hn_vf.c', ) +subdir(exec_env) From patchwork Thu Feb 17 16:06:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107751 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 23B28A034E; Thu, 17 Feb 2022 17:12:30 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3DAB8411FE; Thu, 17 Feb 2022 17:11:05 +0100 (CET) Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by mails.dpdk.org (Postfix) with ESMTP id BFB1840395 for ; Thu, 17 Feb 2022 17:07:08 +0100 (CET) Received: by mail-pf1-f178.google.com with SMTP id p8so55979pfh.8 for ; Thu, 17 Feb 2022 08:07:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=24USIDW5u9jBuciqNgCJl38TwWMNjuN3ETz4n2EI6RQ=; b=LGGOdi3NgQCWqoWKdKvONHybSK0yK+wYNDg1H/xUsvvgkTsyK9NJOHnjQF6RBtQ7oJ ZXVNsmoZ+hRhOhNG5xRP7SrdUXK1MogflNyHXnBLgK3ZJjg2z8I7xcrTiHN2ze/IhMDp WNQXNCCNWgj7qmEdhoWgDNvL+nVuSIUlLLll0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=24USIDW5u9jBuciqNgCJl38TwWMNjuN3ETz4n2EI6RQ=; b=qVZFJllfi4C+VFWHYqx/yz4NDFavqSlBK4r5QbTe93ANfADW2KR2YeeTKCgnmYS2Mw 6b81Omk00h4SOn41sr4bjy2RNflWKFZx2/3K++45NZwU3SduEth/tR+tQ0G0cYnD1IlH 8W4j8Ofw2Rc7Sj8dOszfJxFf/YunSbtStIi5zrD8d5T3pLg/UfIf1OHbT5TJHD7ONLKG /gk6VirgIU3tcB0bnSjCg/Ox3NAhTVjCf6OKzbLOu30d/LtqJA+6IGDG4ADJHf/Az84u GnXbCTtjvX0CaPBkaPS+IZ3eb5KOc3fL1KJv49t2PaZctsPxS25kDVeJseXFYc5jhEg3 C74A== X-Gm-Message-State: AOAM5336PFaCDjkkADyonZabZZqsureleWtK514xB2HgKFWlNi7Lv+m8 rp59ZcTG1MBWXA5C3EjIagf6LA== X-Google-Smtp-Source: ABdhPJxEOGmZX8ALpD90pxatizOlRQKfowW1O71vOdHk5xUavqWn45stPq4CEFme0RMvNZFePBp4rQ== X-Received: by 2002:a63:5525:0:b0:372:c376:74f1 with SMTP id j37-20020a635525000000b00372c37674f1mr2887513pgb.433.1645114028045; Thu, 17 Feb 2022 08:07:08 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.07.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:07:07 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 14/15] bus/vmbus: add APIs to mask/unmask IRQs Date: Thu, 17 Feb 2022 21:36:12 +0530 Message-Id: <20220217160613.70161-15-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org the IRQ masking/unmasking APIs use the HV_UIO driver's read and write CBs for their work. Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- drivers/bus/vmbus/freebsd/vmbus_bus.c | 15 ++++++++++++++ drivers/bus/vmbus/freebsd/vmbus_uio.c | 28 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/bus/vmbus/freebsd/vmbus_bus.c b/drivers/bus/vmbus/freebsd/vmbus_bus.c index fa0f4883f7..b275723bd3 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_bus.c +++ b/drivers/bus/vmbus/freebsd/vmbus_bus.c @@ -265,3 +265,18 @@ rte_vmbus_scan(void) error: return -1; } + +void rte_vmbus_irq_mask(struct rte_vmbus_device *device) +{ + vmbus_uio_irq_control(device, 1); +} + +void rte_vmbus_irq_unmask(struct rte_vmbus_device *device) +{ + vmbus_uio_irq_control(device, 0); +} + +int rte_vmbus_irq_read(struct rte_vmbus_device *device) +{ + return vmbus_uio_irq_read(device); +} diff --git a/drivers/bus/vmbus/freebsd/vmbus_uio.c b/drivers/bus/vmbus/freebsd/vmbus_uio.c index ca6f5fac59..7eb8b73e29 100644 --- a/drivers/bus/vmbus/freebsd/vmbus_uio.c +++ b/drivers/bus/vmbus/freebsd/vmbus_uio.c @@ -38,6 +38,34 @@ static const char *map_names[VMBUS_MAX_RESOURCE] = { [HV_SEND_BUF_MAP] = "send_buf", }; +/* Control interrupts */ +void vmbus_uio_irq_control(struct rte_vmbus_device *dev, int32_t onoff) +{ + if (write(dev->intr_handle.fd, &onoff, sizeof(onoff)) < 0) { + VMBUS_LOG(ERR, "cannot write to %d:%s", + dev->intr_handle.fd, strerror(errno)); + } +} + +int vmbus_uio_irq_read(struct rte_vmbus_device *dev) +{ + int32_t count; + int cc; + + cc = read(dev->intr_handle.fd, &count, sizeof(count)); + if (cc < (int)sizeof(count)) { + if (cc < 0) { + VMBUS_LOG(ERR, "IRQ read failed %s", + strerror(errno)); + return -errno; + } + VMBUS_LOG(ERR, "can't read IRQ count"); + return -EINVAL; + } + + return count; +} + void vmbus_uio_free_resource(struct rte_vmbus_device *dev, struct mapped_vmbus_resource *uio_res) From patchwork Thu Feb 17 16:06:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Kaka X-Patchwork-Id: 107752 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 68B06A034E; Thu, 17 Feb 2022 17:12:37 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2DC6341223; Thu, 17 Feb 2022 17:11:06 +0100 (CET) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by mails.dpdk.org (Postfix) with ESMTP id C63EA40042 for ; Thu, 17 Feb 2022 17:07:11 +0100 (CET) Received: by mail-pf1-f193.google.com with SMTP id y5so69019pfe.4 for ; Thu, 17 Feb 2022 08:07:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oneconvergence.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4Ilcu36nFwGfc+8l98q4WNYj2Fam9vxsjwta/vaODbU=; b=COaOU3ZjbW1WL987QQt74+zLkYyeSRHzerqg7H1nkxmx96pqjz3WHZeLOlEAXln+dc b/KvxDRlXqmS8n3sqTcCEJ6QeOiwq7VDgdUNF4EdzNH/aSCiB0XKd4VBwoQvi0geGb+B WviBN/RWL6MIP4dWe5JgxEFO8AGud7uXgbKZk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4Ilcu36nFwGfc+8l98q4WNYj2Fam9vxsjwta/vaODbU=; b=kBRA9MjconfFEGtDdijEMK7jKVoLyqg8Auhe9yIxmL2CcTgO0GtSMIi7phUr0iFFTk qBRFbefGrhUVguPskkCW8Th9WmZLV2r2h8c97cPkMPrtIqpYVyy3GI4fkuKIpXBS7TAE ZfbjCfAosZvP00AgOQuNpganFjqjYSe95IMH7f3G0oIsWigF+nf77BWLQuJwAdWs3owu j91utPFEPy1daqBKSCP2dsGhrCd8wFhMR3qo3KOba4hSzbBnnK/ipM7CC34XVThozVMA skzN79zzXo+LIkZFp7VcbhDsdyOuMX6HOg2Af8ENnqhJapOM9TyzsgZ8QMZeHpxJzF6s ygOA== X-Gm-Message-State: AOAM530Q6CZ3R57NUZiXDVWRgQyEjomHchdVv3Q64t0O1twfW5t3l7fx 7U/ugmT7jK+LKZnkG4Ok3ML4wg== X-Google-Smtp-Source: ABdhPJwzV7U09+Bg7D4terTD96umEg7LFjRTCe+hPMz25G/7P7egYXZlVZNXX/pVOqUk2Tgj1fkjbQ== X-Received: by 2002:a05:6a00:ac6:b0:4e0:bd8:591a with SMTP id c6-20020a056a000ac600b004e00bd8591amr3504855pfl.70.1645114030901; Thu, 17 Feb 2022 08:07:10 -0800 (PST) Received: from srikanth-ThinkPad-T450.. ([49.37.144.122]) by smtp.gmail.com with ESMTPSA id z14sm47807pfh.173.2022.02.17.08.07.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Feb 2022 08:07:10 -0800 (PST) From: Srikanth Kaka To: sthemmin@microsoft.com, longli@microsoft.com Cc: dev@dpdk.org, vag.singh@oneconvergence.com, avelu@juniper.net, Srikanth Kaka Subject: [PATCH v3 15/15] bus/vmbus: update MAINTAINERS and docs Date: Thu, 17 Feb 2022 21:36:13 +0530 Message-Id: <20220217160613.70161-16-srikanth.k@oneconvergence.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220217160613.70161-1-srikanth.k@oneconvergence.com> References: <20210927134231.11177-1-srikanth.k@oneconvergence.com> <20220217160613.70161-1-srikanth.k@oneconvergence.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 17 Feb 2022 17:10:51 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org updated MAINTAINERS and doc files for FreeBSD support Signed-off-by: Srikanth Kaka Signed-off-by: Vag Singh Signed-off-by: Anand Thulasiram --- MAINTAINERS | 2 ++ doc/guides/nics/netvsc.rst | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index d5cd0a6c2f..03bafd5b9b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -566,6 +566,7 @@ F: app/test/test_vdev.c VMBUS bus driver M: Stephen Hemminger M: Long Li +M: Srikanth Kaka F: drivers/bus/vmbus/ @@ -823,6 +824,7 @@ F: doc/guides/nics/vdev_netvsc.rst Microsoft Hyper-V netvsc M: Stephen Hemminger M: Long Li +M: Srikanth Kaka F: drivers/net/netvsc/ F: doc/guides/nics/netvsc.rst F: doc/guides/nics/features/netvsc.ini diff --git a/doc/guides/nics/netvsc.rst b/doc/guides/nics/netvsc.rst index 77efe1dc91..12d17024b7 100644 --- a/doc/guides/nics/netvsc.rst +++ b/doc/guides/nics/netvsc.rst @@ -91,6 +91,12 @@ operations: The dpdk-devbind.py script can not be used since it only handles PCI devices. +On FreeBSD, with hv_uio kernel driver loaded, do the following: + + .. code-block:: console + + devctl set driver -f hn1 hv_uio + Prerequisites ------------- @@ -101,6 +107,11 @@ The following prerequisites apply: Full support of multiple queues requires the 4.17 kernel. It is possible to use the netvsc PMD with 4.16 kernel but it is limited to a single queue. +* FreeBSD support for UIO on vmbus is done with hv_uio driver and it is still + in `review`_ + +.. _`review`: https://reviews.freebsd.org/D32184 + Netvsc PMD arguments --------------------