From patchwork Fri Oct 30 18:28:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Timothy McDaniel X-Patchwork-Id: 83022 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 2D847A04E6; Fri, 30 Oct 2020 19:37:32 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C9C2DC321; Fri, 30 Oct 2020 19:27:59 +0100 (CET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 09A8EC836 for ; Fri, 30 Oct 2020 19:27:28 +0100 (CET) IronPort-SDR: ZeBTbeEpWnri/lqaJ76E9PtNi5fIJTymyEb8EeVFyeHLsgBDF5wqvtkGQkCJbe3rNfa5i84oFC JDLHUKFOYhmA== X-IronPort-AV: E=McAfee;i="6000,8403,9790"; a="148504461" X-IronPort-AV: E=Sophos;i="5.77,434,1596524400"; d="scan'208";a="148504461" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2020 11:27:27 -0700 IronPort-SDR: 2lTZLnqIYkJ9fsPOkFJws3cd2XxpPzogBcuac2h4HUvuJoPu06ExmpBvO+KtBwLND4CbJYU1L5 p5J4gbHhY9GQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,434,1596524400"; d="scan'208";a="305012574" Received: from txasoft-yocto.an.intel.com ([10.123.72.192]) by fmsmga007.fm.intel.com with ESMTP; 30 Oct 2020 11:27:26 -0700 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: Fri, 30 Oct 2020 13:28:51 -0500 Message-Id: <1604082547-16710-8-git-send-email-timothy.mcdaniel@intel.com> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1604082547-16710-1-git-send-email-timothy.mcdaniel@intel.com> References: <1602958879-8558-2-git-send-email-timothy.mcdaniel@intel.com> <1604082547-16710-1-git-send-email-timothy.mcdaniel@intel.com> Subject: [dpdk-dev] [PATCH v6 07/23] event/dlb2: 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 mode but bifurcated mode will be added in a future DPDK 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 Reviewed-by: Gage Eads --- drivers/event/dlb2/dlb2_iface.c | 28 ++++++++++++++++++++++++++++ drivers/event/dlb2/dlb2_iface.h | 29 +++++++++++++++++++++++++++++ drivers/event/dlb2/meson.build | 1 + 3 files changed, 58 insertions(+) create mode 100644 drivers/event/dlb2/dlb2_iface.c create mode 100644 drivers/event/dlb2/dlb2_iface.h diff --git a/drivers/event/dlb2/dlb2_iface.c b/drivers/event/dlb2/dlb2_iface.c new file mode 100644 index 0000000..0fc9991 --- /dev/null +++ b/drivers/event/dlb2/dlb2_iface.c @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2020 Intel Corporation + */ + +#include + +#include "dlb2_priv.h" + +/* DLB2 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 (*dlb2_iface_low_level_io_init)(void); + +int (*dlb2_iface_open)(struct dlb2_hw_dev *handle, const char *name); + +int (*dlb2_iface_get_device_version)(struct dlb2_hw_dev *handle, + uint8_t *revision); + +void (*dlb2_iface_hardware_init)(struct dlb2_hw_dev *handle); + +int (*dlb2_iface_get_cq_poll_mode)(struct dlb2_hw_dev *handle, + enum dlb2_cq_poll_modes *mode); + +int (*dlb2_iface_get_num_resources)(struct dlb2_hw_dev *handle, + struct dlb2_get_num_resources_args *rsrcs); diff --git a/drivers/event/dlb2/dlb2_iface.h b/drivers/event/dlb2/dlb2_iface.h new file mode 100644 index 0000000..4fb416e --- /dev/null +++ b/drivers/event/dlb2/dlb2_iface.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2020 Intel Corporation + */ + +#ifndef _DLB2_IFACE_H_ +#define _DLB2_IFACE_H_ + +/* DLB2 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 (*dlb2_iface_low_level_io_init)(void); + +extern int (*dlb2_iface_open)(struct dlb2_hw_dev *handle, const char *name); + +extern int (*dlb2_iface_get_device_version)(struct dlb2_hw_dev *handle, + uint8_t *revision); + +extern void (*dlb2_iface_hardware_init)(struct dlb2_hw_dev *handle); + +extern int (*dlb2_iface_get_cq_poll_mode)(struct dlb2_hw_dev *handle, + enum dlb2_cq_poll_modes *mode); + +extern int (*dlb2_iface_get_num_resources)(struct dlb2_hw_dev *handle, + struct dlb2_get_num_resources_args *rsrcs); + +#endif /* _DLB2_IFACE_H_ */ diff --git a/drivers/event/dlb2/meson.build b/drivers/event/dlb2/meson.build index 1eab9b9..491e76d 100644 --- a/drivers/event/dlb2/meson.build +++ b/drivers/event/dlb2/meson.build @@ -8,6 +8,7 @@ if not is_linux or not dpdk_conf.has('RTE_ARCH_X86_64') endif sources = files('dlb2.c', + 'dlb2_iface.c', 'pf/dlb2_main.c', 'pf/dlb2_pf.c' )