From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nipun Gupta Subject: [PATCH 04/21 v3] bus/fslmc: integrating dpio and dpbp to object framework Date: Wed, 28 Jun 2017 20:45:47 +0530 Message-ID: <1498662964-11251-5-git-send-email-nipun.gupta@nxp.com> References: <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com> <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com> Mime-Version: 1.0 Content-Type: text/plain Cc: , , , , , , Nipun Gupta To: Return-path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0044.outbound.protection.outlook.com [104.47.32.44]) by dpdk.org (Postfix) with ESMTP id F24656841 for ; Wed, 28 Jun 2017 17:17:06 +0200 (CEST) In-Reply-To: <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com> 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 patch removes the existing static call for dpio and dpbp create and add them to object registration framework. This patch also changes the vfio mc object processing to use the framework. Signed-off-by: Hemant Agrawal Signed-off-by: Nipun Gupta --- drivers/bus/fslmc/fslmc_vfio.c | 24 ++++++++++-------------- drivers/bus/fslmc/fslmc_vfio.h | 9 ++------- drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 14 +++++++++++--- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 11 +++++++++-- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index b9dd2a9..6ebf779 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -374,7 +374,6 @@ int fslmc_vfio_process_group(void) char path[PATH_MAX]; int64_t v_addr; int ndev_count; - int dpio_count = 0, dpbp_count = 0; struct fslmc_vfio_group *group = &vfio_groups[0]; static int process_once; @@ -513,18 +512,17 @@ int fslmc_vfio_process_group(void) object_type, object_id); fslmc_bus_add_device(dev); - } - if (!strcmp(object_type, "dpio")) { - ret = dpaa2_create_dpio_device(vdev, - &device_info, + } else { + /* Parse all other objects */ + struct rte_dpaa2_object *object; + + TAILQ_FOREACH(object, &fslmc_obj_list, next) { + if (!strcmp(object_type, object->name)) + object->create(vdev, &device_info, object_id); - if (!ret) - dpio_count++; - } - if (!strcmp(object_type, "dpbp")) { - ret = dpaa2_create_dpbp_device(object_id); - if (!ret) - dpbp_count++; + else + continue; + } } } closedir(d); @@ -533,8 +531,6 @@ int fslmc_vfio_process_group(void) if (ret) FSLMC_VFIO_LOG(DEBUG, "Error in affining qbman swp %d", ret); - FSLMC_VFIO_LOG(DEBUG, "DPAA2: Added dpbp_count = %d dpio_count=%d", - dpbp_count, dpio_count); return 0; FAILURE: diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h index 58b3acd..ffed62e 100644 --- a/drivers/bus/fslmc/fslmc_vfio.h +++ b/drivers/bus/fslmc/fslmc_vfio.h @@ -39,6 +39,8 @@ #define DPAA2_VENDOR_ID 0x1957 #define DPAA2_MC_DPNI_DEVID 7 #define DPAA2_MC_DPSECI_DEVID 3 +#define DPAA2_MC_DPIO_DEVID 9 +#define DPAA2_MC_DPBP_DEVID 10 #define VFIO_MAX_GRP 1 @@ -90,13 +92,6 @@ int vfio_dmamap_mem_region( int fslmc_vfio_process_group(void); int rte_fslmc_vfio_dmamap(void); -/* create dpio device */ -int dpaa2_create_dpio_device(struct fslmc_vfio_device *vdev, - struct vfio_device_info *obj_info, - int object_id); - -int dpaa2_create_dpbp_device(int dpbp_id); - /** * Register a DPAA2 MC Object driver. * diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c index a665ec5..b55335a 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c @@ -57,9 +57,10 @@ static struct dpbp_dev_list dpbp_dev_list = TAILQ_HEAD_INITIALIZER(dpbp_dev_list); /*!< DPBP device list */ -int -dpaa2_create_dpbp_device( - int dpbp_id) +static int +dpaa2_create_dpbp_device(struct fslmc_vfio_device *vdev __rte_unused, + struct vfio_device_info *obj_info __rte_unused, + int dpbp_id) { struct dpaa2_dpbp_dev *dpbp_node; int ret; @@ -127,3 +128,10 @@ void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp) } } } + +static struct rte_dpaa2_object rte_dpaa2_dpbp_obj = { + .object_id = DPAA2_MC_DPBP_DEVID, + .create = dpaa2_create_dpbp_device, +}; + +RTE_PMD_REGISTER_DPAA2_OBJECT(dpbp, rte_dpaa2_dpbp_obj); diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 3213237..730555f 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -334,10 +334,10 @@ static inline struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(void) } } -int +static int dpaa2_create_dpio_device(struct fslmc_vfio_device *vdev, struct vfio_device_info *obj_info, - int object_id) + int object_id) { struct dpaa2_dpio_dev *dpio_dev; struct vfio_region_info reg_info = { .argsz = sizeof(reg_info)}; @@ -443,3 +443,10 @@ static inline struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(void) return -1; } + +static struct rte_dpaa2_object rte_dpaa2_dpio_obj = { + .object_id = DPAA2_MC_DPIO_DEVID, + .create = dpaa2_create_dpio_device, +}; + +RTE_PMD_REGISTER_DPAA2_OBJECT(dpio, rte_dpaa2_dpio_obj); -- 1.9.1