From patchwork Tue Jan 10 18:02:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 19091 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 1ED0C5A29; Tue, 10 Jan 2017 19:03:41 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 7F73D5589 for ; Tue, 10 Jan 2017 19:03:37 +0100 (CET) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP; 10 Jan 2017 10:02:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,344,1477983600"; d="scan'208";a="211783386" Received: from sivswdev02.ir.intel.com ([10.237.217.46]) by fmsmga004.fm.intel.com with ESMTP; 10 Jan 2017 10:02:55 -0800 From: Ferruh Yigit To: dev@dpdk.org Cc: Stephen Hemminger , Shreyansh Jain , Jan Blunck , Ferruh Yigit Date: Tue, 10 Jan 2017 18:02:49 +0000 Message-Id: <20170110180250.10625-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.8.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH 1/2] add rte_bus->probe 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" Signed-off-by: Ferruh Yigit --- lib/librte_eal/common/eal_common_bus.c | 7 ++++--- lib/librte_eal/common/include/rte_bus.h | 3 +++ lib/librte_eal/linuxapp/eal/eal_pci.c | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c index f8c2e03..e8d1143 100644 --- a/lib/librte_eal/common/eal_common_bus.c +++ b/lib/librte_eal/common/eal_common_bus.c @@ -145,6 +145,7 @@ rte_eal_bus_register(struct rte_bus *bus) /* A bus should mandatorily have the scan and match implemented */ RTE_VERIFY(bus->scan); RTE_VERIFY(bus->match); + RTE_VERIFY(bus->probe); /* Initialize the driver and device list associated with the bus */ TAILQ_INIT(&(bus->driver_list)); @@ -195,19 +196,19 @@ rte_eal_bus_scan(void) } static int -perform_probe(struct rte_bus *bus __rte_unused, struct rte_driver *driver, +perform_probe(struct rte_bus *bus, struct rte_driver *driver, struct rte_device *device) { int ret; - if (!driver->probe) { + if (!bus->probe) { RTE_LOG(ERR, EAL, "Driver (%s) doesn't support probe.\n", driver->name); /* This is not an error - just a badly implemented PMD */ return 0; } - ret = driver->probe(driver, device); + ret = bus->probe(driver, device); if (ret < 0) /* One of the probes failed */ RTE_LOG(ERR, EAL, "Probe failed for (%s).\n", driver->name); diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h index 07c30c4..ce1f56a 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -135,6 +135,8 @@ typedef int (*bus_scan_t)(struct rte_bus *bus); */ typedef int (*bus_match_t)(struct rte_driver *drv, struct rte_device *dev); +typedef int (*bus_probe_t)(struct rte_driver *drv, struct rte_device *dev); + /** * A structure describing a generic bus. */ @@ -147,6 +149,7 @@ struct rte_bus { const char *name; /**< Name of the bus */ bus_scan_t scan; /**< Scan for devices attached to bus */ bus_match_t match; + bus_probe_t probe; /**< Match device with drivers associated with the bus */ }; diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 314effa..837adf6 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -726,6 +726,7 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p) struct rte_bus pci_bus = { .scan = rte_eal_pci_scan, .match = rte_eal_pci_match, + .probe = rte_eal_pci_probe, }; RTE_REGISTER_BUS(pci, pci_bus);