[dpdk-dev,v4,2/2] octeontx: move mbox to common folder
Checks
Commit Message
Move commonly used functions across mempool, event and net devices to a
common folder in drivers.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
---
MAINTAINERS | 1 +
drivers/common/Makefile | 4 ++
drivers/common/meson.build | 1 +
drivers/common/octeontx/Makefile | 24 ++++++++
drivers/common/octeontx/meson.build | 6 ++
.../{mempool => common}/octeontx/octeontx_mbox.c | 65 +++++++++++++++++-----
.../{mempool => common}/octeontx/octeontx_mbox.h | 14 +++++
.../octeontx/rte_common_octeontx_version.map | 9 +++
drivers/event/octeontx/Makefile | 4 +-
drivers/event/octeontx/meson.build | 5 +-
.../{mempool => event}/octeontx/octeontx_ssovf.c | 20 ++++++-
drivers/mempool/octeontx/Makefile | 5 +-
drivers/mempool/octeontx/meson.build | 6 +-
drivers/mempool/octeontx/octeontx_fpavf.c | 4 --
drivers/mempool/octeontx/octeontx_pool_logs.h | 9 ---
.../octeontx/rte_mempool_octeontx_version.map | 6 --
drivers/net/octeontx/Makefile | 3 +-
mk/rte.app.mk | 4 ++
18 files changed, 145 insertions(+), 45 deletions(-)
create mode 100644 drivers/common/octeontx/Makefile
create mode 100644 drivers/common/octeontx/meson.build
rename drivers/{mempool => common}/octeontx/octeontx_mbox.c (83%)
rename drivers/{mempool => common}/octeontx/octeontx_mbox.h (66%)
create mode 100644 drivers/common/octeontx/rte_common_octeontx_version.map
rename drivers/{mempool => event}/octeontx/octeontx_ssovf.c (92%)
--
2.16.2
Comments
-----Original Message-----
> Date: Mon, 2 Apr 2018 14:40:00 +0530
> From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> To: jerin.jacob@caviumnetworks.com, santosh.shukla@caviumnetworks.com,
> thomas@monjalon.net, anatoly.burakov@intel.com, lironh@marvell.com,
> bruce.richardson@intel.com, fiona.trahe@intel.com, shreyansh.jain@nxp.com,
> hemant.agrawal@nxp.com
> Cc: dev@dpdk.org, Pavan Nikhilesh <pbhagavatula@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@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@caviumnetworks.com>
On Wednesday 04 April 2018 08:59 AM, Jerin Jacob wrote:
> -----Original Message-----
>> Date: Mon, 2 Apr 2018 14:40:00 +0530
>> From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
>> To: jerin.jacob@caviumnetworks.com, santosh.shukla@caviumnetworks.com,
>> thomas@monjalon.net, anatoly.burakov@intel.com, lironh@marvell.com,
>> bruce.richardson@intel.com, fiona.trahe@intel.com, shreyansh.jain@nxp.com,
>> hemant.agrawal@nxp.com
>> Cc: dev@dpdk.org, Pavan Nikhilesh <pbhagavatula@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@caviumnetworks.com>
>> ---
snip
>> vfid == 0 ?
>>
>> + ram_mbox_base = octeontx_ssovf_bar(OCTEONTX_SSO_HWS, 0, 4);
also ram_mbox_base may throw build warning in case vfid>0..right?
>> + 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);
ditto for reg.
>> + 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@caviumnetworks.com>
>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Thanks.
02/04/2018 11:10, Pavan Nikhilesh:
> +++ b/drivers/common/octeontx/Makefile
> @@ -0,0 +1,24 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Cavium, Inc
> +#
> +
> +include $(RTE_SDK)/mk/rte.vars.mk
> +
> +#
> +# library name
> +#
> +LIB = librte_common_octeontx.a
> +
> +CFLAGS += $(WERROR_FLAGS)
> +EXPORT_MAP := rte_common_octeontx_version.map
> +
> +LIBABIVER := 1
You should add this new library in the release notes section:
"Shared Library Versions"
@@ -412,6 +412,7 @@ F: doc/guides/nics/features/liquidio.ini
Cavium OcteonTX
M: Santosh Shukla <santosh.shukla@caviumnetworks.com>
M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
+F: drivers/common/octeontx/
F: drivers/mempool/octeontx/
F: drivers/net/octeontx/
F: doc/guides/nics/octeontx.rst
@@ -4,4 +4,8 @@
include $(RTE_SDK)/mk/rte.vars.mk
+ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL),yy)
+DIRS-y += octeontx
+endif
+
include $(RTE_SDK)/mk/rte.subdir.mk
@@ -2,5 +2,6 @@
# Copyright(c) 2018 Cavium, Inc
std_deps = ['eal']
+drivers = ['octeontx']
config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
driver_name_fmt = 'rte_common_@0@'
new file mode 100644
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Cavium, Inc
+#
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+#
+# library name
+#
+LIB = librte_common_octeontx.a
+
+CFLAGS += $(WERROR_FLAGS)
+EXPORT_MAP := rte_common_octeontx_version.map
+
+LIBABIVER := 1
+
+#
+# all source are stored in SRCS-y
+#
+SRCS-y += octeontx_mbox.c
+
+LDLIBS += -lrte_eal
+
+include $(RTE_SDK)/mk/rte.lib.mk
new file mode 100644
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Cavium, Inc
+#
+
+sources = files('octeontx_mbox.c'
+)
similarity index 83%
rename from drivers/mempool/octeontx/octeontx_mbox.c
rename to 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 {
};
};
+int octeontx_logtype_mbox;
+
+RTE_INIT(otx_init_log);
+static void
+otx_init_log(void)
+{
+ octeontx_logtype_mbox = rte_log_register("pmd.octeontx.mbox");
+ if (octeontx_logtype_mbox >= 0)
+ rte_log_set_level(octeontx_logtype_mbox, RTE_LOG_NOTICE);
+}
+
static inline void
mbox_msgcpy(volatile uint8_t *d, volatile const uint8_t *s, uint16_t size)
{
@@ -181,22 +191,49 @@ mbox_send(struct mbox *m, struct octeontx_mbox_hdr *hdr, const void *txmsg,
return res;
}
-static inline int
-mbox_setup(struct mbox *m)
+int
+octeontx_mbox_set_ram_mbox_base(uint8_t *ram_mbox_base)
+{
+ struct mbox *m = &octeontx_mbox;
+
+ if (m->init_once)
+ return -EALREADY;
+
+ if (ram_mbox_base == NULL) {
+ mbox_log_err("Invalid ram_mbox_base=%p", ram_mbox_base);
+ return -EINVAL;
+ }
+
+ m->ram_mbox_base = ram_mbox_base;
+
+ if (m->reg != NULL) {
+ rte_spinlock_init(&m->lock);
+ m->init_once = 1;
+ }
+
+ return 0;
+}
+
+int
+octeontx_mbox_set_reg(uint8_t *reg)
{
- if (unlikely(m->init_once == 0)) {
+ struct mbox *m = &octeontx_mbox;
+
+ if (m->init_once)
+ return -EALREADY;
+
+ if (reg == NULL) {
+ mbox_log_err("Invalid reg=%p", reg);
+ return -EINVAL;
+ }
+
+ m->reg = reg;
+
+ if (m->ram_mbox_base != NULL) {
rte_spinlock_init(&m->lock);
- m->ram_mbox_base = octeontx_ssovf_bar(OCTEONTX_SSO_HWS, 0, 4);
- m->reg = octeontx_ssovf_bar(OCTEONTX_SSO_GROUP, 0, 0);
- m->reg += SSO_VHGRP_PF_MBOX(1);
-
- if (m->ram_mbox_base == NULL || m->reg == NULL) {
- mbox_log_err("Invalid ram_mbox_base=%p or reg=%p",
- m->ram_mbox_base, m->reg);
- return -EINVAL;
- }
m->init_once = 1;
}
+
return 0;
}
@@ -207,7 +244,7 @@ octeontx_ssovf_mbox_send(struct octeontx_mbox_hdr *hdr, void *txdata,
struct mbox *m = &octeontx_mbox;
RTE_BUILD_BUG_ON(sizeof(struct mbox_ram_hdr) != 8);
- if (rte_eal_process_type() != RTE_PROC_PRIMARY || mbox_setup(m))
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return -EINVAL;
return mbox_send(m, hdr, txdata, txlen, rxdata, rxlen);
similarity index 66%
rename from drivers/mempool/octeontx/octeontx_mbox.h
rename to 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);
+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);
new file mode 100644
@@ -0,0 +1,9 @@
+DPDK_18.05 {
+ global:
+
+ octeontx_ssovf_info;
+ octeontx_ssovf_bar;
+ octeontx_mbox_set_ram_mbox_base;
+ octeontx_mbox_set_reg;
+ octeontx_ssovf_mbox_send;
+};
@@ -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
ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
CFLAGS_ssovf_worker.o += -fno-prefetch-loop-arrays
@@ -3,7 +3,8 @@
sources = files('ssovf_worker.c',
'ssovf_evdev.c',
- 'ssovf_evdev_selftest.c'
+ 'ssovf_evdev_selftest.c',
+ 'octeontx_ssovf.c'
)
-deps += ['mempool_octeontx', 'bus_vdev', 'pmd_octeontx']
+deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'pmd_octeontx']
similarity index 92%
rename from drivers/mempool/octeontx/octeontx_ssovf.c
rename to 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) {
+ 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) {
+ 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);
@@ -10,6 +10,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
LIB = librte_mempool_octeontx.a
CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx/
EXPORT_MAP := rte_mempool_octeontx_version.map
LIBABIVER := 1
@@ -17,8 +18,6 @@ LIBABIVER := 1
#
# all source are stored in SRCS-y
#
-SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += octeontx_ssovf.c
-SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += octeontx_mbox.c
SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += octeontx_fpavf.c
SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += rte_mempool_octeontx.c
@@ -36,6 +35,6 @@ CFLAGS_rte_mempool_octeontx.o += -Ofast
endif
LDLIBS += -lrte_eal -lrte_mempool -lrte_ring -lrte_mbuf
-LDLIBS += -lrte_bus_pci
+LDLIBS += -lrte_bus_pci -lrte_common_octeontx
include $(RTE_SDK)/mk/rte.lib.mk
@@ -1,10 +1,8 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Cavium, Inc
-sources = files('octeontx_ssovf.c',
- 'octeontx_mbox.c',
- 'octeontx_fpavf.c',
+sources = files('octeontx_fpavf.c',
'rte_mempool_octeontx.c'
)
-deps += ['mbuf', 'bus_pci']
+deps += ['mbuf', 'bus_pci', 'common_octeontx']
@@ -115,10 +115,6 @@ otx_pool_init_log(void)
octeontx_logtype_fpavf = rte_log_register("pmd.mempool.octeontx");
if (octeontx_logtype_fpavf >= 0)
rte_log_set_level(octeontx_logtype_fpavf, RTE_LOG_NOTICE);
-
- octeontx_logtype_fpavf_mbox = rte_log_register("pmd.mempool.octeontx.mbox");
- if (octeontx_logtype_fpavf_mbox >= 0)
- rte_log_set_level(octeontx_logtype_fpavf_mbox, RTE_LOG_NOTICE);
}
/* lock is taken by caller */
@@ -11,21 +11,12 @@
rte_log(RTE_LOG_ ## level, octeontx_logtype_fpavf,\
"%s() line %u: " fmt "\n", __func__, __LINE__, ## args)
-#define MBOX_LOG(level, fmt, args...) \
- rte_log(RTE_LOG_ ## level, octeontx_logtype_fpavf_mbox,\
- "%s() line %u: " fmt "\n", __func__, __LINE__, ## args)
-
#define fpavf_log_info(fmt, ...) FPAVF_LOG(INFO, fmt, ##__VA_ARGS__)
#define fpavf_log_dbg(fmt, ...) FPAVF_LOG(DEBUG, fmt, ##__VA_ARGS__)
#define fpavf_log_err(fmt, ...) FPAVF_LOG(ERR, fmt, ##__VA_ARGS__)
#define fpavf_func_trace fpavf_log_dbg
-#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_fpavf;
-extern int octeontx_logtype_fpavf_mbox;
#endif /* __OCTEONTX_POOL_LOGS_H__*/
@@ -1,9 +1,3 @@
DPDK_17.11 {
- global:
-
- octeontx_ssovf_info;
- octeontx_ssovf_bar;
- octeontx_ssovf_mbox_send;
-
local: *;
};
@@ -10,6 +10,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
LIB = librte_pmd_octeontx.a
CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx/
CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx/
EXPORT_MAP := rte_pmd_octeontx_version.map
@@ -46,7 +47,7 @@ endif
CFLAGS_octeontx_ethdev.o += -DALLOW_EXPERIMENTAL_API
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
-LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
+LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_common_octeontx
LDLIBS += -lrte_mempool_octeontx
LDLIBS += -lrte_eventdev
LDLIBS += -lrte_bus_pci
@@ -111,6 +111,10 @@ ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y)
_LDLIBS-$(CONFIG_RTE_LIBRTE_KNI) += -lrte_kni
endif
+ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL),yy)
+_LDLIBS-y += -lrte_common_octeontx
+endif
+
_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci
_LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev
_LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa