[dpdk-dev] [PATCH v4 2/2] octeontx: move mbox to common folder
Jerin Jacob
jerin.jacob at caviumnetworks.com
Wed Apr 4 05:29:19 CEST 2018
-----Original Message-----
> Date: Mon, 2 Apr 2018 14:40:00 +0530
> From: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
> To: jerin.jacob at caviumnetworks.com, santosh.shukla at caviumnetworks.com,
> thomas at monjalon.net, anatoly.burakov at intel.com, lironh at marvell.com,
> bruce.richardson at intel.com, fiona.trahe at intel.com, shreyansh.jain at nxp.com,
> hemant.agrawal at nxp.com
> Cc: dev at dpdk.org, Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
> Subject: [dpdk-dev] [PATCH v4 2/2] octeontx: move mbox to common folder
> X-Mailer: git-send-email 2.16.3
>
> Move commonly used functions across mempool, event and net devices to a
> common folder in drivers.
>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
> ---
> +include $(RTE_SDK)/mk/rte.lib.mk
> diff --git a/drivers/common/octeontx/meson.build b/drivers/common/octeontx/meson.build
> new file mode 100644
> index 000000000..8a28ce800
> --- /dev/null
> +++ b/drivers/common/octeontx/meson.build
> @@ -0,0 +1,6 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Cavium, Inc
> +#
> +
> +sources = files('octeontx_mbox.c'
> +)
Does it make sense to change to,
sources = files('octeontx_mbox.c')
i.e no sepreate line for ")"
> diff --git a/drivers/mempool/octeontx/octeontx_mbox.c b/drivers/common/octeontx/octeontx_mbox.c
> similarity index 83%
> rename from drivers/mempool/octeontx/octeontx_mbox.c
> rename to drivers/common/octeontx/octeontx_mbox.c
> index f8cb6a453..c98e110f3 100644
> --- a/drivers/mempool/octeontx/octeontx_mbox.c
> +++ b/drivers/common/octeontx/octeontx_mbox.c
> @@ -11,7 +11,6 @@
> #include <rte_spinlock.h>
>
> #include "octeontx_mbox.h"
> -#include "octeontx_pool_logs.h"
>
> /* Mbox operation timeout in seconds */
> #define MBOX_WAIT_TIME_SEC 3
> @@ -60,6 +59,17 @@ struct mbox_ram_hdr {
> };
> };
>
> +++ b/drivers/common/octeontx/octeontx_mbox.h
> @@ -6,10 +6,22 @@
> #define __OCTEONTX_MBOX_H__
>
> #include <rte_common.h>
> +#include <rte_spinlock.h>
>
> #define SSOW_BAR4_LEN (64 * 1024)
> #define SSO_VHGRP_PF_MBOX(x) (0x200ULL | ((x) << 3))
>
> +#define MBOX_LOG(level, fmt, args...) \
> + rte_log(RTE_LOG_ ## level, octeontx_logtype_mbox,\
> + "%s() line %u: " fmt "\n", __func__, __LINE__, ## args)
> +
> +#define mbox_log_info(fmt, ...) MBOX_LOG(INFO, fmt, ##__VA_ARGS__)
> +#define mbox_log_dbg(fmt, ...) MBOX_LOG(DEBUG, fmt, ##__VA_ARGS__)
> +#define mbox_log_err(fmt, ...) MBOX_LOG(ERR, fmt, ##__VA_ARGS__)
> +#define mbox_func_trace mbox_log_dbg
> +
> +extern int octeontx_logtype_mbox;
> +
> struct octeontx_ssovf_info {
> uint16_t domain; /* Domain id */
> uint8_t total_ssovfs; /* Total sso groups available in domain */
> @@ -30,6 +42,8 @@ struct octeontx_mbox_hdr {
>
> int octeontx_ssovf_info(struct octeontx_ssovf_info *info);
> void *octeontx_ssovf_bar(enum octeontx_ssovf_type, uint8_t id, uint8_t bar);
IMO, prototype for octeontx_ssovf_bar(), octeontx_ssovf_info(),
and defintion octeontx_ssovf_info can be moved to driver/event/octeontx
as it is the only driver is using that(i.e no need not to be in common code)
> +int octeontx_mbox_set_ram_mbox_base(uint8_t *ram_mbox_base);
> +int octeontx_mbox_set_reg(uint8_t *reg);
> int octeontx_ssovf_mbox_send(struct octeontx_mbox_hdr *hdr,
> void *txdata, uint16_t txlen, void *rxdata, uint16_t rxlen);
>
> diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
> new file mode 100644
> index 000000000..59dbed5b2
> --- /dev/null
> +++ b/drivers/common/octeontx/rte_common_octeontx_version.map
> @@ -0,0 +1,9 @@
> +DPDK_18.05 {
> + global:
> +
> + octeontx_ssovf_info;
> + octeontx_ssovf_bar;
Same as above, move above stuff from rte_common_octeontx_version.map
> + octeontx_mbox_set_ram_mbox_base;
> + octeontx_mbox_set_reg;
> + octeontx_ssovf_mbox_send;
I think, octeontx_ssovf_mbox_send can be replaced with
octeontx_mbox_send() to inline with other APIs above(octeontx_mbox_set*)
> +};
> diff --git a/drivers/event/octeontx/Makefile b/drivers/event/octeontx/Makefile
> index 0e49efd84..34dcb844c 100644
> --- a/drivers/event/octeontx/Makefile
> +++ b/drivers/event/octeontx/Makefile
> @@ -10,10 +10,11 @@ include $(RTE_SDK)/mk/rte.vars.mk
> LIB = librte_pmd_octeontx_ssovf.a
>
> CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx/
> CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx/
> CFLAGS += -I$(RTE_SDK)/drivers/net/octeontx/
>
> -LDLIBS += -lrte_eal -lrte_eventdev -lrte_mempool_octeontx -lrte_pmd_octeontx
> +LDLIBS += -lrte_eal -lrte_eventdev -lrte_common_octeontx -lrte_pmd_octeontx
> LDLIBS += -lrte_bus_pci -lrte_mempool -lrte_mbuf -lrte_kvargs
> LDLIBS += -lrte_bus_vdev
>
> @@ -27,6 +28,7 @@ LIBABIVER := 1
> SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_worker.c
> SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_evdev.c
> SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_evdev_selftest.c
> +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += octeontx_ssovf.c
s/octeontx_ssovf.c/ssovf_probe.c
see next comment.
>
> ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
> CFLAGS_ssovf_worker.o += -fno-prefetch-loop-arrays
> diff --git a/drivers/event/octeontx/meson.build b/drivers/event/octeontx/meson.build
> index 358fc9fc9..1181f337b 100644
> --- a/drivers/event/octeontx/meson.build
> +++ b/drivers/event/octeontx/meson.build
> @@ -3,7 +3,8 @@
>
> sources = files('ssovf_worker.c',
> 'ssovf_evdev.c',
> - 'ssovf_evdev_selftest.c'
> + 'ssovf_evdev_selftest.c',
> + 'octeontx_ssovf.c'
I think, it makes sense to change the name to ssovf_probe.c as all files
in this directory starts with ssovf_*
> )
>
> -deps += ['mempool_octeontx', 'bus_vdev', 'pmd_octeontx']
> +deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'pmd_octeontx']
> diff --git a/drivers/mempool/octeontx/octeontx_ssovf.c b/drivers/event/octeontx/octeontx_ssovf.c
> similarity index 92%
> rename from drivers/mempool/octeontx/octeontx_ssovf.c
> rename to drivers/event/octeontx/octeontx_ssovf.c
> index 97b240665..c32b49a01 100644
> --- a/drivers/mempool/octeontx/octeontx_ssovf.c
> +++ b/drivers/event/octeontx/octeontx_ssovf.c
> @@ -10,7 +10,6 @@
> #include <rte_bus_pci.h>
>
> #include "octeontx_mbox.h"
> -#include "octeontx_pool_logs.h"
>
> #define PCI_VENDOR_ID_CAVIUM 0x177D
> #define PCI_DEVICE_ID_OCTEONTX_SSOGRP_VF 0xA04B
> @@ -142,6 +141,7 @@ ssowvf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
> uint16_t vfid;
> struct ssowvf_res *res;
> struct ssowvf_identify *id;
> + uint8_t *ram_mbox_base;
>
> RTE_SET_USED(pci_drv);
>
> @@ -180,6 +180,14 @@ ssowvf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
> res->domain = id->domain;
>
> sdev.total_ssowvfs++;
> + if (!vfid) {
vfid == 0 ?
> + ram_mbox_base = octeontx_ssovf_bar(OCTEONTX_SSO_HWS, 0, 4);
> + if (octeontx_mbox_set_ram_mbox_base(ram_mbox_base)) {
> + mbox_log_err("Invalid Failed to set ram mbox base");
> + return -EINVAL;
> + }
> + }
> +
> rte_wmb();
> mbox_log_dbg("Domain=%d hws=%d total_ssowvfs=%d", res->domain,
> res->vfid, sdev.total_ssowvfs);
> @@ -213,6 +221,7 @@ ssovf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
> uint16_t vfid;
> uint8_t *idreg;
> struct ssovf_res *res;
> + uint8_t *reg;
>
> RTE_SET_USED(pci_drv);
>
> @@ -246,6 +255,15 @@ ssovf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
> res->domain = val & 0xffff;
>
> sdev.total_ssovfs++;
> + if (!vfid) {
vfid == 0 ?
> + reg = octeontx_ssovf_bar(OCTEONTX_SSO_GROUP, 0, 0);
> + reg += SSO_VHGRP_PF_MBOX(1);
> + if (octeontx_mbox_set_reg(reg)) {
> + mbox_log_err("Invalid Failed to set mbox_reg");
> + return -EINVAL;
> + }
> + }
> +
> rte_wmb();
> mbox_log_dbg("Domain=%d group=%d total_ssovfs=%d", res->domain,
> res->vfid, sdev.total_ssovfs);
With above changes:
Acked-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
More information about the dev
mailing list