From patchwork Sun Nov 1 19:26:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Timothy McDaniel X-Patchwork-Id: 83260 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9409CA04E7; Sun, 1 Nov 2020 20:28:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 242FD5937; Sun, 1 Nov 2020 20:25:13 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 3CECF2E8F for ; Sun, 1 Nov 2020 20:25:00 +0100 (CET) IronPort-SDR: rvGEnkGtttb4yqaBzBewgJgx3BxT6wXVnvkBFP5gGAfc3zdpCKY7sbMSa73QPwO2z362fsq9y9 C6MlPQEjTBPQ== X-IronPort-AV: E=McAfee;i="6000,8403,9792"; a="156584603" X-IronPort-AV: E=Sophos;i="5.77,442,1596524400"; d="scan'208";a="156584603" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2020 11:24:59 -0800 IronPort-SDR: O1NQljFnf36NicUgEX+NoO3oChAw0IQ1H+yY6C4xzRHMYkOPR8t19rHOSQ78YojQkfi35BM1bR sfywQZPDWCTQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,442,1596524400"; d="scan'208";a="537752053" Received: from txasoft-yocto.an.intel.com ([10.123.72.192]) by orsmga005.jf.intel.com with ESMTP; 01 Nov 2020 11:24:58 -0800 From: Timothy McDaniel To: Cc: dev@dpdk.org, erik.g.carrillo@intel.com, gage.eads@intel.com, harry.van.haaren@intel.com, jerinj@marvell.com, thomas@monjalon.net Date: Sun, 1 Nov 2020 13:26:20 -0600 Message-Id: <1604258796-19966-8-git-send-email-timothy.mcdaniel@intel.com> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1604258796-19966-1-git-send-email-timothy.mcdaniel@intel.com> References: <20200612212434.6852-2-timothy.mcdaniel@intel.com> <1604258796-19966-1-git-send-email-timothy.mcdaniel@intel.com> Subject: [dpdk-dev] [PATCH v15 07/23] event/dlb: add flexible interface 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" This commit introduces the flexible interface. This interface allows the core code to operate in PF mode (direct hardware access) or bifurcated mode (hardware configured via kernel driver). This driver currently only supports PF modei, but bifurcated mode will be added in a future patch-set. Note that the flexible interface is not used for data path operations, and thus there are no performance concerns related to the use of function pointers. Signed-off-by: Timothy McDaniel --- drivers/event/dlb/dlb.c | 1 + drivers/event/dlb/dlb_iface.c | 27 +++++++++++++++++++++++++++ drivers/event/dlb/dlb_iface.h | 27 +++++++++++++++++++++++++++ drivers/event/dlb/meson.build | 1 + drivers/event/dlb/pf/dlb_pf.c | 1 + 5 files changed, 57 insertions(+) create mode 100644 drivers/event/dlb/dlb_iface.c create mode 100644 drivers/event/dlb/dlb_iface.h diff --git a/drivers/event/dlb/dlb.c b/drivers/event/dlb/dlb.c index 1659f93..8008a50 100644 --- a/drivers/event/dlb/dlb.c +++ b/drivers/event/dlb/dlb.c @@ -33,6 +33,7 @@ #include #include "dlb_priv.h" +#include "dlb_iface.h" #include "dlb_inline_fns.h" /* diff --git a/drivers/event/dlb/dlb_iface.c b/drivers/event/dlb/dlb_iface.c new file mode 100644 index 0000000..dd72120 --- /dev/null +++ b/drivers/event/dlb/dlb_iface.c @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2020 Intel Corporation + */ + +#include + +#include "dlb_priv.h" + +/* DLB PMD Internal interface function pointers. + * If VDEV (bifurcated PMD), these will resolve to functions that issue ioctls + * serviced by DLB kernel module. + * If PCI (PF PMD), these will be implemented locally in user mode. + */ + +void (*dlb_iface_low_level_io_init)(struct dlb_eventdev *dlb); + +int (*dlb_iface_open)(struct dlb_hw_dev *handle, const char *name); + +int (*dlb_iface_get_device_version)(struct dlb_hw_dev *handle, + uint8_t *revision); + +int (*dlb_iface_get_num_resources)(struct dlb_hw_dev *handle, + struct dlb_get_num_resources_args *rsrcs); + +int (*dlb_iface_get_cq_poll_mode)(struct dlb_hw_dev *handle, + enum dlb_cq_poll_modes *mode); + diff --git a/drivers/event/dlb/dlb_iface.h b/drivers/event/dlb/dlb_iface.h new file mode 100644 index 0000000..416d1b3 --- /dev/null +++ b/drivers/event/dlb/dlb_iface.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2020 Intel Corporation + */ + +#ifndef _DLB_IFACE_H +#define _DLB_IFACE_H + +/* DLB PMD Internal interface function pointers. + * If VDEV (bifurcated PMD), these will resolve to functions that issue ioctls + * serviced by DLB kernel module. + * If PCI (PF PMD), these will be implemented locally in user mode. + */ + +extern void (*dlb_iface_low_level_io_init)(struct dlb_eventdev *dlb); + +extern int (*dlb_iface_open)(struct dlb_hw_dev *handle, const char *name); + +extern int (*dlb_iface_get_device_version)(struct dlb_hw_dev *handle, + uint8_t *revision); + +extern int (*dlb_iface_get_num_resources)(struct dlb_hw_dev *handle, + struct dlb_get_num_resources_args *rsrcs); + +extern int (*dlb_iface_get_cq_poll_mode)(struct dlb_hw_dev *handle, + enum dlb_cq_poll_modes *mode); + +#endif /* _DLB_IFACE_H */ diff --git a/drivers/event/dlb/meson.build b/drivers/event/dlb/meson.build index 61c0182..0e66cdc 100644 --- a/drivers/event/dlb/meson.build +++ b/drivers/event/dlb/meson.build @@ -8,6 +8,7 @@ if not is_linux or not dpdk_conf.has('RTE_ARCH_X86_64') endif sources = files('dlb.c', + 'dlb_iface.c', 'pf/dlb_main.c', 'pf/dlb_pf.c' ) diff --git a/drivers/event/dlb/pf/dlb_pf.c b/drivers/event/dlb/pf/dlb_pf.c index 3f836f3..05fd76c 100644 --- a/drivers/event/dlb/pf/dlb_pf.c +++ b/drivers/event/dlb/pf/dlb_pf.c @@ -27,6 +27,7 @@ #include #include "../dlb_priv.h" +#include "../dlb_iface.h" #include "../dlb_inline_fns.h" #include "dlb_main.h" #include "base/dlb_hw_types.h"