* [PATCH 0/6] mvpp2 changes and features
@ 2018-08-24 12:16 Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
` (6 more replies)
0 siblings, 7 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski
This patch series introduces following changes:
* Common code responsible for DMA memory initialization
is now available under drivers/common/mvep. MVEP stands for
Marvell Embedded Processors. This eases maintenance and avoids
boilerplate code across Marvell PMDs. MVEP will grow over time as new
features and PMDs are added.
* Couple of minor fixes.
* Support for reading VLAN information from descriptor.
Liron Himi (2):
drivers/common: add mvep common code for MRVL PMDs
net/mvpp2: use common code to initialize DMA
Natalie Samsonov (3):
net/mvpp2: fix comments and error messages
net/mvpp2: make private variables static
net/mvpp2: add VLAN packet type support for parser offload
Tomasz Duszynski (1):
net/mvpp2: fix array initialization
config/common_base | 5 ++
devtools/test-build.sh | 2 +
drivers/common/Makefile | 4 ++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++
drivers/common/mvep/meson.build | 19 ++++++++
drivers/common/mvep/mvep_common.c | 45 ++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 +++
drivers/common/mvep/rte_mvep_common.h | 20 ++++++++
drivers/net/Makefile | 3 ++
drivers/net/mvpp2/Makefile | 3 +-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 61 +++++++++++++------------
drivers/net/mvpp2/mrvl_flow.c | 29 ++++++++----
mk/rte.app.mk | 4 ++
15 files changed, 204 insertions(+), 39 deletions(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
--
2.7.4
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 12:32 ` Ferruh Yigit
2018-08-24 12:16 ` [PATCH 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
` (5 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi, Tomasz Duszynski
From: Liron Himi <lironh@marvell.com>
Add MVEP (Marvell Embedded Processors) to drivers/common which
will keep code reused by current and future MRVL PMDs.
Right now we have only common DMA memory initialization routines there.
Signed-off-by: Liron Himi <lironh@marvell.com>
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
config/common_base | 5 +++
devtools/test-build.sh | 2 ++
drivers/common/Makefile | 4 +++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++++++++
drivers/common/mvep/meson.build | 19 +++++++++++
drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 ++++
drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++
mk/rte.app.mk | 4 +++
10 files changed, 144 insertions(+), 1 deletion(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
diff --git a/config/common_base b/config/common_base
index 4bcbaf9..978592d 100644
--- a/config/common_base
+++ b/config/common_base
@@ -395,6 +395,11 @@ CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
#
+# Compile Marvell Embedded Processors Common
+#
+CONFIG_RTE_LIBRTE_MVEP_COMMON=n
+
+#
# Compile Marvell PMD driver
#
CONFIG_RTE_LIBRTE_MVPP2_PMD=n
diff --git a/devtools/test-build.sh b/devtools/test-build.sh
index 1eee241..82861b2 100755
--- a/devtools/test-build.sh
+++ b/devtools/test-build.sh
@@ -182,6 +182,8 @@ config () # <directory> <target> <options>
sed -ri 's,(PMD_MVSAM_CRYPTO=)n,\1y,' $1/.config
test -z "$LIBMUSDK_PATH" || \
sed -ri 's,(MVPP2_PMD=)n,\1y,' $1/.config
+ test -z "$LIBMUSDK_PATH" || \
+ sed -ri 's,(MVEP_COMMON=)n,\1y,' $1/.config
build_config_hook $1 $2 $3
# Explicit enabler/disabler (uppercase)
diff --git a/drivers/common/Makefile b/drivers/common/Makefile
index 0fd2237..1795133 100644
--- a/drivers/common/Makefile
+++ b/drivers/common/Makefile
@@ -8,4 +8,8 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
DIRS-y += octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVEP_COMMON),y)
+DIRS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += mvep
+endif
+
include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/common/meson.build b/drivers/common/meson.build
index d7b7d8c..f828ce7 100644
--- a/drivers/common/meson.build
+++ b/drivers/common/meson.build
@@ -2,6 +2,6 @@
# Copyright(c) 2018 Cavium, Inc
std_deps = ['eal']
-drivers = ['octeontx', 'qat']
+drivers = ['mvep', 'octeontx', 'qat']
config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
driver_name_fmt = 'rte_common_@0@'
diff --git a/drivers/common/mvep/Makefile b/drivers/common/mvep/Makefile
new file mode 100644
index 0000000..845bb47
--- /dev/null
+++ b/drivers/common/mvep/Makefile
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+#
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),config)
+ifeq ($(LIBMUSDK_PATH),)
+$(error "Please define LIBMUSDK_PATH environment variable")
+endif
+endif
+endif
+
+# library name
+LIB = librte_common_mvep.a
+
+# library version
+LIBABIVER := 1
+
+# versioning export map
+EXPORT_MAP := rte_common_mvep_version.map
+
+# external library dependencies
+CFLAGS += -I$($RTE_SDK)/drivers/common/mvep
+CFLAGS += -I$(LIBMUSDK_PATH)/include
+CFLAGS += -DMVCONF_TYPES_PUBLIC
+CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
+CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -O3
+LDLIBS += -L$(LIBMUSDK_PATH)/lib
+LDLIBS += -lmusdk
+LDLIBS += -lrte_eal -lrte_kvargs
+
+# library source files
+SRCS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += mvep_common.c
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build
new file mode 100644
index 0000000..8ccfacb
--- /dev/null
+++ b/drivers/common/mvep/meson.build
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+# Copyright(c) 2018 Semihalf.
+# All rights reserved.
+#
+path = get_option('lib_musdk_dir')
+lib_dir = path + '/lib'
+inc_dir = path + '/include'
+
+lib = cc.find_library('libmusdk', dirs: [lib_dir], required: false)
+if not lib.found()
+ build = false
+else
+ ext_deps += lib
+ includes += include_directories(inc_dir)
+ cflags += ['-DMVCONF_TYPES_PUBLIC', '-DMVCONF_DMA_PHYS_ADDR_T_PUBLIC']
+endif
+
+sources = files('mvep_common.c')
diff --git a/drivers/common/mvep/mvep_common.c b/drivers/common/mvep/mvep_common.c
new file mode 100644
index 0000000..67fa65b
--- /dev/null
+++ b/drivers/common/mvep/mvep_common.c
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#include <rte_common.h>
+
+#include <env/mv_autogen_comp_flags.h>
+#include <env/mv_sys_dma.h>
+
+#include "rte_mvep_common.h"
+
+/* Memory size (in bytes) for MUSDK dma buffers */
+#define MRVL_MUSDK_DMA_MEMSIZE (40 * 1024 * 1024)
+
+struct mvep {
+ uint32_t ref_count;
+};
+
+static struct mvep mvep;
+
+int rte_mvep_init(enum mvep_module_type module __rte_unused,
+ struct rte_kvargs *kvlist __rte_unused)
+{
+ int ret;
+
+ if (!mvep.ref_count) {
+ ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
+ if (ret)
+ return ret;
+ }
+
+ mvep.ref_count++;
+
+ return 0;
+}
+
+int rte_mvep_deinit(enum mvep_module_type module __rte_unused)
+{
+ mvep.ref_count--;
+
+ if (!mvep.ref_count)
+ mv_sys_dma_mem_destroy();
+
+ return 0;
+}
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
new file mode 100644
index 0000000..fa1a1b8
--- /dev/null
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -0,0 +1,6 @@
+DPDK_18.08 {
+ global:
+
+ rte_mvep_init;
+ rte_mvep_deinit;
+};
diff --git a/drivers/common/mvep/rte_mvep_common.h b/drivers/common/mvep/rte_mvep_common.h
new file mode 100644
index 0000000..ba47e16
--- /dev/null
+++ b/drivers/common/mvep/rte_mvep_common.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#ifndef __RTE_MVEP_COMMON_H__
+#define __RTE_MVEP_COMMON_H__
+
+#include <rte_kvargs.h>
+
+enum mvep_module_type {
+ MVEP_MOD_T_NONE = 0,
+ MVEP_MOD_T_PP2,
+ MVEP_MOD_T_SAM,
+ MVEP_MOD_T_LAST
+};
+
+int rte_mvep_init(enum mvep_module_type module, struct rte_kvargs *kvlist);
+int rte_mvep_deinit(enum mvep_module_type module);
+
+#endif /* __RTE_MVEP_COMMON_H__ */
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index de33883..a9c9b4f 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -98,6 +98,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
_LDLIBS-y += -lrte_common_octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVEP_COMMON),y)
+_LDLIBS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk
+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
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 2/6] net/mvpp2: use common code to initialize DMA
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
` (4 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi
From: Liron Himi <lironh@marvell.com>
Use common code to initialize MUSDK DMA memory buffers.
Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
drivers/net/Makefile | 3 +++
drivers/net/mvpp2/Makefile | 3 ++-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 36 +++++++++++++-----------------------
4 files changed, 19 insertions(+), 25 deletions(-)
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 664398d..ecee7ba 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -68,6 +68,9 @@ ifeq ($(CONFIG_RTE_LIBRTE_MVPP2_PMD),y)
ifeq ($(CONFIG_RTE_LIBRTE_CFGFILE),n)
$(error "RTE_LIBRTE_CFGFILE must be enabled in configuration!")
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVEP_COMMON),n)
+$(error "RTE_LIBRTE_MVEP_COMMON must be enabled in configuration!")
+endif
endif
include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/net/mvpp2/Makefile b/drivers/net/mvpp2/Makefile
index 492aef9..211d398 100644
--- a/drivers/net/mvpp2/Makefile
+++ b/drivers/net/mvpp2/Makefile
@@ -23,6 +23,7 @@ LIBABIVER := 1
EXPORT_MAP := rte_pmd_mvpp2_version.map
# external library dependencies
+CFLAGS += -I$(RTE_SDK)/drivers/common/mvep
CFLAGS += -I$(LIBMUSDK_PATH)/include
CFLAGS += -DMVCONF_TYPES_PUBLIC
CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
@@ -32,7 +33,7 @@ LDLIBS += -L$(LIBMUSDK_PATH)/lib
LDLIBS += -lmusdk
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_cfgfile
-LDLIBS += -lrte_bus_vdev
+LDLIBS += -lrte_bus_vdev -lrte_common_mvep
# library source files
SRCS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += mrvl_ethdev.c
diff --git a/drivers/net/mvpp2/meson.build b/drivers/net/mvpp2/meson.build
index e139889..3620659 100644
--- a/drivers/net/mvpp2/meson.build
+++ b/drivers/net/mvpp2/meson.build
@@ -22,4 +22,4 @@ sources = files(
'mrvl_qos.c'
)
-deps += ['cfgfile']
+deps += ['cfgfile', 'common_mvep']
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index a2d0576..7ea8946 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <sys/types.h>
+#include <rte_mvep_common.h>
#include "mrvl_ethdev.h"
#include "mrvl_qos.h"
@@ -63,9 +64,6 @@
#define MRVL_COOKIE_HIGH_ADDR_SHIFT (sizeof(pp2_cookie_t) * 8)
#define MRVL_COOKIE_HIGH_ADDR_MASK (~0ULL << MRVL_COOKIE_HIGH_ADDR_SHIFT)
-/* Memory size (in bytes) for MUSDK dma buffers */
-#define MRVL_MUSDK_DMA_MEMSIZE 41943040
-
/** Port Rx offload capabilities */
#define MRVL_RX_OFFLOADS (DEV_RX_OFFLOAD_VLAN_FILTER | \
DEV_RX_OFFLOAD_JUMBO_FRAME | \
@@ -2653,24 +2651,17 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
if (mrvl_dev_num)
goto init_devices;
- MRVL_LOG(INFO, "Perform MUSDK initializations");
- /*
- * ret == -EEXIST is correct, it means DMA
- * has been already initialized (by another PMD).
- */
- ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
- if (ret < 0) {
- if (ret != -EEXIST)
- goto out_free_kvlist;
- else
- MRVL_LOG(INFO,
- "DMA memory has been already initialized by a different driver.");
- }
+ MRVL_LOG(INFO, "Perform MUSDK initializations\n");
+
+ ret = rte_mvep_init(MVEP_MOD_T_PP2, kvlist);
+ if (ret)
+ goto out_free_kvlist;
ret = mrvl_init_pp2();
if (ret) {
- MRVL_LOG(ERR, "Failed to init PP!");
- goto out_deinit_dma;
+ MRVL_LOG(ERR, "Failed to init PP!\n");
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ goto out_free_kvlist;
}
memset(mrvl_port_bpool_size, 0, sizeof(mrvl_port_bpool_size));
@@ -2695,11 +2686,10 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
for (; i > 0; i--)
mrvl_eth_dev_destroy(ifnames.names[i]);
- if (mrvl_dev_num == 0)
+ if (mrvl_dev_num == 0) {
mrvl_deinit_pp2();
-out_deinit_dma:
- if (mrvl_dev_num == 0)
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ }
out_free_kvlist:
rte_kvargs_free(kvlist);
@@ -2739,7 +2729,7 @@ rte_pmd_mrvl_remove(struct rte_vdev_device *vdev)
MRVL_LOG(INFO, "Perform MUSDK deinit");
mrvl_deinit_hifs();
mrvl_deinit_pp2();
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
}
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 3/6] net/mvpp2: fix array initialization
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
` (3 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski, stable
Fix used_bpools array initialization by using range initializer.
This way all necessary variables are properly initialized regardless
of PP2_NUM_PKT_PROC value.
Fixes: 0ddc9b815b11 ("net/mrvl: add net PMD skeleton")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 7ea8946..60ca6e0 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -84,8 +84,7 @@ static const char * const valid_args[] = {
static int used_hifs = MRVL_MUSDK_HIFS_RESERVED;
static struct pp2_hif *hifs[RTE_MAX_LCORE];
static int used_bpools[PP2_NUM_PKT_PROC] = {
- MRVL_MUSDK_BPOOLS_RESERVED,
- MRVL_MUSDK_BPOOLS_RESERVED
+ [0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 4/6] net/mvpp2: fix comments and error messages
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
` (2 preceding siblings ...)
2018-08-24 12:16 ` [PATCH 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 5/6] net/mvpp2: make private variables static Tomasz Duszynski
` (2 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, tdu
From: Natalie Samsonov <nsamsono@marvell.com>
Fix comments and error messages.
Fixes: 7235341d7517 ("net/mrvl: support classifier")
Cc: tdu@semihalf.com
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
---
drivers/net/mvpp2/mrvl_flow.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_flow.c b/drivers/net/mvpp2/mrvl_flow.c
index ecc3419..13295e6 100644
--- a/drivers/net/mvpp2/mrvl_flow.c
+++ b/drivers/net/mvpp2/mrvl_flow.c
@@ -394,7 +394,8 @@ mrvl_parse_init(const struct rte_flow_item *item,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
- * @param mask Pointer to the flow.
+ * @param parse_dst Parse either destination or source mac address.
+ * @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
static int
@@ -613,6 +614,7 @@ mrvl_parse_ip4_dscp(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ip address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -726,6 +728,7 @@ mrvl_parse_ip4_proto(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ipv6 address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -874,6 +877,7 @@ mrvl_parse_ip6_next_hdr(const struct rte_flow_item_ipv6 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -949,6 +953,7 @@ mrvl_parse_tcp_dport(const struct rte_flow_item_tcp *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -1022,7 +1027,6 @@ mrvl_parse_udp_dport(const struct rte_flow_item_udp *spec,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1073,7 +1077,6 @@ mrvl_parse_eth(const struct rte_flow_item *item, struct rte_flow *flow,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1139,7 +1142,6 @@ mrvl_parse_vlan(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1205,7 +1207,6 @@ mrvl_parse_ip4(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1276,7 +1277,6 @@ mrvl_parse_ip6(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1332,7 +1332,6 @@ mrvl_parse_tcp(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1981,6 +1980,7 @@ mrvl_parse_pattern_ip6_tcp(const struct rte_flow_item pattern[],
* @param pattern Pointer to the flow pattern table.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
+ * @param ip6 1 to parse ip6 item, 0 to parse ip4 item.
* @returns 0 in case of success, negative value otherwise.
*/
static int
@@ -2350,6 +2350,12 @@ mrvl_flow_parse(struct mrvl_priv *priv, const struct rte_flow_attr *attr,
return mrvl_flow_parse_actions(priv, actions, flow, error);
}
+/**
+ * Get engine type for the given flow.
+ *
+ * @param field Pointer to the flow.
+ * @returns The type of the engine.
+ */
static inline enum pp2_cls_tbl_type
mrvl_engine_type(const struct rte_flow *flow)
{
@@ -2369,6 +2375,13 @@ mrvl_engine_type(const struct rte_flow *flow)
return PP2_CLS_TBL_MASKABLE;
}
+/**
+ * Create classifier table.
+ *
+ * @param dev Pointer to the device.
+ * @param flow Pointer to the very first flow.
+ * @returns 0 in case of success, negative value otherwise.
+ */
static int
mrvl_create_cls_table(struct rte_eth_dev *dev, struct rte_flow *first_flow)
{
@@ -2655,7 +2668,7 @@ mrvl_flow_remove(struct mrvl_priv *priv, struct rte_flow *flow,
/**
* DPDK flow destroy callback called when flow is to be removed.
*
- * @param priv Pointer to the port's private data.
+ * @param dev Pointer to the device.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
* @returns 0 in case of success, negative value otherwise.
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 5/6] net/mvpp2: make private variables static
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
` (3 preceding siblings ...)
2018-08-24 12:16 ` [PATCH 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Mark internal variables static to avoid potential redefinition
errors later on.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Yelena Krivosheev <yelena@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 60ca6e0..5cd84c1 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -87,9 +87,9 @@ static int used_bpools[PP2_NUM_PKT_PROC] = {
[0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
-struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
-int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
-uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
+static struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
+static int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
+static uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
int mrvl_logtype;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 6/6] net/mvpp2: add VLAN packet type support for parser offload
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
` (4 preceding siblings ...)
2018-08-24 12:16 ` [PATCH 5/6] net/mvpp2: make private variables static Tomasz Duszynski
@ 2018-08-24 12:16 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:16 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Add VLAN packet type support for parser offload.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Shlomi Gridish <sgridish@marvell.com>
Reviewed-by: Dmitri Epshtein <dima@marvell.com>
Reviewed-by: Yuval Caduri <cyuval@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 5cd84c1..5b92d82 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -1353,6 +1353,8 @@ mrvl_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused)
{
static const uint32_t ptypes[] = {
RTE_PTYPE_L2_ETHER,
+ RTE_PTYPE_L2_ETHER_VLAN,
+ RTE_PTYPE_L2_ETHER_QINQ,
RTE_PTYPE_L3_IPV4,
RTE_PTYPE_L3_IPV4_EXT,
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
@@ -1922,13 +1924,27 @@ mrvl_desc_to_packet_type_and_offset(struct pp2_ppio_desc *desc,
{
enum pp2_inq_l3_type l3_type;
enum pp2_inq_l4_type l4_type;
+ enum pp2_inq_vlan_tag vlan_tag;
uint64_t packet_type;
pp2_ppio_inq_desc_get_l3_info(desc, &l3_type, l3_offset);
pp2_ppio_inq_desc_get_l4_info(desc, &l4_type, l4_offset);
+ pp2_ppio_inq_desc_get_vlan_tag(desc, &vlan_tag);
packet_type = RTE_PTYPE_L2_ETHER;
+ switch (vlan_tag) {
+ case PP2_INQ_VLAN_TAG_SINGLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
+ break;
+ case PP2_INQ_VLAN_TAG_DOUBLE:
+ case PP2_INQ_VLAN_TAG_TRIPLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_QINQ;
+ break;
+ default:
+ break;
+ }
+
switch (l3_type) {
case PP2_INQ_L3_TYPE_IPV4_NO_OPTS:
packet_type |= RTE_PTYPE_L3_IPV4;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 12:16 ` [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
@ 2018-08-24 12:32 ` Ferruh Yigit
2018-08-24 12:49 ` Tomasz Duszynski
0 siblings, 1 reply; 30+ messages in thread
From: Ferruh Yigit @ 2018-08-24 12:32 UTC (permalink / raw)
To: Tomasz Duszynski, dev; +Cc: nsamsono, mw, Liron Himi
On 8/24/2018 1:16 PM, Tomasz Duszynski wrote:
> From: Liron Himi <lironh@marvell.com>
>
> Add MVEP (Marvell Embedded Processors) to drivers/common which
> will keep code reused by current and future MRVL PMDs.
> Right now we have only common DMA memory initialization routines there.
>
> Signed-off-by: Liron Himi <lironh@marvell.com>
> Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
> ---
> config/common_base | 5 +++
> devtools/test-build.sh | 2 ++
> drivers/common/Makefile | 4 +++
> drivers/common/meson.build | 2 +-
> drivers/common/mvep/Makefile | 38 +++++++++++++++++++++
> drivers/common/mvep/meson.build | 19 +++++++++++
> drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++
> drivers/common/mvep/rte_common_mvep_version.map | 6 ++++
> drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++
> mk/rte.app.mk | 4 +++
> 10 files changed, 144 insertions(+), 1 deletion(-)
> create mode 100644 drivers/common/mvep/Makefile
> create mode 100644 drivers/common/mvep/meson.build
> create mode 100644 drivers/common/mvep/mvep_common.c
> create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
> create mode 100644 drivers/common/mvep/rte_mvep_common.h
>
> diff --git a/config/common_base b/config/common_base
> index 4bcbaf9..978592d 100644
> --- a/config/common_base
> +++ b/config/common_base
> @@ -395,6 +395,11 @@ CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
>
> #
> +# Compile Marvell Embedded Processors Common
> +#
> +CONFIG_RTE_LIBRTE_MVEP_COMMON=n
Do you need a new config option for common, why not enable it if one of the
consumers of common code enabled?
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 12:32 ` Ferruh Yigit
@ 2018-08-24 12:49 ` Tomasz Duszynski
0 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 12:49 UTC (permalink / raw)
To: Ferruh Yigit; +Cc: Tomasz Duszynski, dev, nsamsono, mw, Liron Himi
On Fri, Aug 24, 2018 at 01:32:47PM +0100, Ferruh Yigit wrote:
> On 8/24/2018 1:16 PM, Tomasz Duszynski wrote:
> > From: Liron Himi <lironh@marvell.com>
> >
> > Add MVEP (Marvell Embedded Processors) to drivers/common which
> > will keep code reused by current and future MRVL PMDs.
> > Right now we have only common DMA memory initialization routines there.
> >
> > Signed-off-by: Liron Himi <lironh@marvell.com>
> > Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> > Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
> > ---
> > config/common_base | 5 +++
> > devtools/test-build.sh | 2 ++
> > drivers/common/Makefile | 4 +++
> > drivers/common/meson.build | 2 +-
> > drivers/common/mvep/Makefile | 38 +++++++++++++++++++++
> > drivers/common/mvep/meson.build | 19 +++++++++++
> > drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++
> > drivers/common/mvep/rte_common_mvep_version.map | 6 ++++
> > drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++
> > mk/rte.app.mk | 4 +++
> > 10 files changed, 144 insertions(+), 1 deletion(-)
> > create mode 100644 drivers/common/mvep/Makefile
> > create mode 100644 drivers/common/mvep/meson.build
> > create mode 100644 drivers/common/mvep/mvep_common.c
> > create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
> > create mode 100644 drivers/common/mvep/rte_mvep_common.h
> >
> > diff --git a/config/common_base b/config/common_base
> > index 4bcbaf9..978592d 100644
> > --- a/config/common_base
> > +++ b/config/common_base
> > @@ -395,6 +395,11 @@ CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> > CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> >
> > #
> > +# Compile Marvell Embedded Processors Common
> > +#
> > +CONFIG_RTE_LIBRTE_MVEP_COMMON=n
>
> Do you need a new config option for common, why not enable it if one of the
> consumers of common code enabled?
Good point. Will rework that in v2.
--
- Tomasz Duszyński
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 0/6] net/mvpp2 changes and features
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
` (5 preceding siblings ...)
2018-08-24 12:16 ` [PATCH 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
` (6 more replies)
6 siblings, 7 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski
This patch series introduces following changes:
* Common code responsible for DMA memory initialization
is now available under drivers/common/mvep. MVEP stands for
Marvell Embedded Processors. This eases maintenance and avoids
boilerplate code across Marvell PMDs. MVEP will grow over time as new
features and PMDs are added.
* Couple of minor fixes.
* Support for reading VLAN information from descriptor.
v2:
* Remove CONFIG_RTE_LIBRTE_MVEP_COMMON. Use CONFIG_RTE_LIBRTE_MVPP2_PMD
to control common/mvep compilation instead.
Liron Himi (2):
drivers/common: add mvep common code for MRVL PMDs
net/mvpp2: use common code to initialize DMA
Natalie Samsonov (3):
net/mvpp2: fix comments and error messages
net/mvpp2: make private variables static
net/mvpp2: add VLAN packet type support for parser offload
Tomasz Duszynski (1):
net/mvpp2: fix array initialization
drivers/common/Makefile | 4 ++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++
drivers/common/mvep/meson.build | 19 ++++++++
drivers/common/mvep/mvep_common.c | 45 ++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 +++
drivers/common/mvep/rte_mvep_common.h | 20 ++++++++
drivers/net/mvpp2/Makefile | 3 +-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 61 +++++++++++++------------
drivers/net/mvpp2/mrvl_flow.c | 29 ++++++++----
mk/rte.app.mk | 4 ++
12 files changed, 194 insertions(+), 39 deletions(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
--
2.7.4
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 16:45 ` Ferruh Yigit
2018-08-24 14:54 ` [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
` (5 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi, Tomasz Duszynski
From: Liron Himi <lironh@marvell.com>
Add MVEP (Marvell Embedded Processors) to drivers/common which
will keep code reused by current and future MRVL PMDs.
Right now we have only common DMA memory initialization routines there.
Signed-off-by: Liron Himi <lironh@marvell.com>
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
drivers/common/Makefile | 4 +++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++++++++
drivers/common/mvep/meson.build | 19 +++++++++++
drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 ++++
drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++
mk/rte.app.mk | 4 +++
8 files changed, 137 insertions(+), 1 deletion(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
diff --git a/drivers/common/Makefile b/drivers/common/Makefile
index 0fd2237..5f72da0 100644
--- a/drivers/common/Makefile
+++ b/drivers/common/Makefile
@@ -8,4 +8,8 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
DIRS-y += octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVPP2_PMD),y)
+DIRS-y += mvep
+endif
+
include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/common/meson.build b/drivers/common/meson.build
index d7b7d8c..f828ce7 100644
--- a/drivers/common/meson.build
+++ b/drivers/common/meson.build
@@ -2,6 +2,6 @@
# Copyright(c) 2018 Cavium, Inc
std_deps = ['eal']
-drivers = ['octeontx', 'qat']
+drivers = ['mvep', 'octeontx', 'qat']
config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
driver_name_fmt = 'rte_common_@0@'
diff --git a/drivers/common/mvep/Makefile b/drivers/common/mvep/Makefile
new file mode 100644
index 0000000..1f5f005
--- /dev/null
+++ b/drivers/common/mvep/Makefile
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+#
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),config)
+ifeq ($(LIBMUSDK_PATH),)
+$(error "Please define LIBMUSDK_PATH environment variable")
+endif
+endif
+endif
+
+# library name
+LIB = librte_common_mvep.a
+
+# library version
+LIBABIVER := 1
+
+# versioning export map
+EXPORT_MAP := rte_common_mvep_version.map
+
+# external library dependencies
+CFLAGS += -I$($RTE_SDK)/drivers/common/mvep
+CFLAGS += -I$(LIBMUSDK_PATH)/include
+CFLAGS += -DMVCONF_TYPES_PUBLIC
+CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
+CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -O3
+LDLIBS += -L$(LIBMUSDK_PATH)/lib
+LDLIBS += -lmusdk
+LDLIBS += -lrte_eal -lrte_kvargs
+
+# library source files
+SRCS-y += mvep_common.c
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build
new file mode 100644
index 0000000..8ccfacb
--- /dev/null
+++ b/drivers/common/mvep/meson.build
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+# Copyright(c) 2018 Semihalf.
+# All rights reserved.
+#
+path = get_option('lib_musdk_dir')
+lib_dir = path + '/lib'
+inc_dir = path + '/include'
+
+lib = cc.find_library('libmusdk', dirs: [lib_dir], required: false)
+if not lib.found()
+ build = false
+else
+ ext_deps += lib
+ includes += include_directories(inc_dir)
+ cflags += ['-DMVCONF_TYPES_PUBLIC', '-DMVCONF_DMA_PHYS_ADDR_T_PUBLIC']
+endif
+
+sources = files('mvep_common.c')
diff --git a/drivers/common/mvep/mvep_common.c b/drivers/common/mvep/mvep_common.c
new file mode 100644
index 0000000..67fa65b
--- /dev/null
+++ b/drivers/common/mvep/mvep_common.c
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#include <rte_common.h>
+
+#include <env/mv_autogen_comp_flags.h>
+#include <env/mv_sys_dma.h>
+
+#include "rte_mvep_common.h"
+
+/* Memory size (in bytes) for MUSDK dma buffers */
+#define MRVL_MUSDK_DMA_MEMSIZE (40 * 1024 * 1024)
+
+struct mvep {
+ uint32_t ref_count;
+};
+
+static struct mvep mvep;
+
+int rte_mvep_init(enum mvep_module_type module __rte_unused,
+ struct rte_kvargs *kvlist __rte_unused)
+{
+ int ret;
+
+ if (!mvep.ref_count) {
+ ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
+ if (ret)
+ return ret;
+ }
+
+ mvep.ref_count++;
+
+ return 0;
+}
+
+int rte_mvep_deinit(enum mvep_module_type module __rte_unused)
+{
+ mvep.ref_count--;
+
+ if (!mvep.ref_count)
+ mv_sys_dma_mem_destroy();
+
+ return 0;
+}
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
new file mode 100644
index 0000000..fa1a1b8
--- /dev/null
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -0,0 +1,6 @@
+DPDK_18.08 {
+ global:
+
+ rte_mvep_init;
+ rte_mvep_deinit;
+};
diff --git a/drivers/common/mvep/rte_mvep_common.h b/drivers/common/mvep/rte_mvep_common.h
new file mode 100644
index 0000000..ba47e16
--- /dev/null
+++ b/drivers/common/mvep/rte_mvep_common.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#ifndef __RTE_MVEP_COMMON_H__
+#define __RTE_MVEP_COMMON_H__
+
+#include <rte_kvargs.h>
+
+enum mvep_module_type {
+ MVEP_MOD_T_NONE = 0,
+ MVEP_MOD_T_PP2,
+ MVEP_MOD_T_SAM,
+ MVEP_MOD_T_LAST
+};
+
+int rte_mvep_init(enum mvep_module_type module, struct rte_kvargs *kvlist);
+int rte_mvep_deinit(enum mvep_module_type module);
+
+#endif /* __RTE_MVEP_COMMON_H__ */
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index de33883..899d51a 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -98,6 +98,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
_LDLIBS-y += -lrte_common_octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVPP2_PMD),y)
+_LDLIBS-y += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk
+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
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 14:54 ` [PATCH v2 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
` (4 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi
From: Liron Himi <lironh@marvell.com>
Use common code to initialize MUSDK DMA memory buffers.
Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
drivers/net/mvpp2/Makefile | 3 ++-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 36 +++++++++++++-----------------------
3 files changed, 16 insertions(+), 25 deletions(-)
diff --git a/drivers/net/mvpp2/Makefile b/drivers/net/mvpp2/Makefile
index 492aef9..211d398 100644
--- a/drivers/net/mvpp2/Makefile
+++ b/drivers/net/mvpp2/Makefile
@@ -23,6 +23,7 @@ LIBABIVER := 1
EXPORT_MAP := rte_pmd_mvpp2_version.map
# external library dependencies
+CFLAGS += -I$(RTE_SDK)/drivers/common/mvep
CFLAGS += -I$(LIBMUSDK_PATH)/include
CFLAGS += -DMVCONF_TYPES_PUBLIC
CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
@@ -32,7 +33,7 @@ LDLIBS += -L$(LIBMUSDK_PATH)/lib
LDLIBS += -lmusdk
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_cfgfile
-LDLIBS += -lrte_bus_vdev
+LDLIBS += -lrte_bus_vdev -lrte_common_mvep
# library source files
SRCS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += mrvl_ethdev.c
diff --git a/drivers/net/mvpp2/meson.build b/drivers/net/mvpp2/meson.build
index e139889..3620659 100644
--- a/drivers/net/mvpp2/meson.build
+++ b/drivers/net/mvpp2/meson.build
@@ -22,4 +22,4 @@ sources = files(
'mrvl_qos.c'
)
-deps += ['cfgfile']
+deps += ['cfgfile', 'common_mvep']
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index a2d0576..7ea8946 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <sys/types.h>
+#include <rte_mvep_common.h>
#include "mrvl_ethdev.h"
#include "mrvl_qos.h"
@@ -63,9 +64,6 @@
#define MRVL_COOKIE_HIGH_ADDR_SHIFT (sizeof(pp2_cookie_t) * 8)
#define MRVL_COOKIE_HIGH_ADDR_MASK (~0ULL << MRVL_COOKIE_HIGH_ADDR_SHIFT)
-/* Memory size (in bytes) for MUSDK dma buffers */
-#define MRVL_MUSDK_DMA_MEMSIZE 41943040
-
/** Port Rx offload capabilities */
#define MRVL_RX_OFFLOADS (DEV_RX_OFFLOAD_VLAN_FILTER | \
DEV_RX_OFFLOAD_JUMBO_FRAME | \
@@ -2653,24 +2651,17 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
if (mrvl_dev_num)
goto init_devices;
- MRVL_LOG(INFO, "Perform MUSDK initializations");
- /*
- * ret == -EEXIST is correct, it means DMA
- * has been already initialized (by another PMD).
- */
- ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
- if (ret < 0) {
- if (ret != -EEXIST)
- goto out_free_kvlist;
- else
- MRVL_LOG(INFO,
- "DMA memory has been already initialized by a different driver.");
- }
+ MRVL_LOG(INFO, "Perform MUSDK initializations\n");
+
+ ret = rte_mvep_init(MVEP_MOD_T_PP2, kvlist);
+ if (ret)
+ goto out_free_kvlist;
ret = mrvl_init_pp2();
if (ret) {
- MRVL_LOG(ERR, "Failed to init PP!");
- goto out_deinit_dma;
+ MRVL_LOG(ERR, "Failed to init PP!\n");
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ goto out_free_kvlist;
}
memset(mrvl_port_bpool_size, 0, sizeof(mrvl_port_bpool_size));
@@ -2695,11 +2686,10 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
for (; i > 0; i--)
mrvl_eth_dev_destroy(ifnames.names[i]);
- if (mrvl_dev_num == 0)
+ if (mrvl_dev_num == 0) {
mrvl_deinit_pp2();
-out_deinit_dma:
- if (mrvl_dev_num == 0)
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ }
out_free_kvlist:
rte_kvargs_free(kvlist);
@@ -2739,7 +2729,7 @@ rte_pmd_mrvl_remove(struct rte_vdev_device *vdev)
MRVL_LOG(INFO, "Perform MUSDK deinit");
mrvl_deinit_hifs();
mrvl_deinit_pp2();
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
}
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 3/6] net/mvpp2: fix array initialization
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 14:54 ` [PATCH v2 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
` (3 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski, stable
Fix used_bpools array initialization by using range initializer.
This way all necessary variables are properly initialized regardless
of PP2_NUM_PKT_PROC value.
Fixes: 0ddc9b815b11 ("net/mrvl: add net PMD skeleton")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 7ea8946..60ca6e0 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -84,8 +84,7 @@ static const char * const valid_args[] = {
static int used_hifs = MRVL_MUSDK_HIFS_RESERVED;
static struct pp2_hif *hifs[RTE_MAX_LCORE];
static int used_bpools[PP2_NUM_PKT_PROC] = {
- MRVL_MUSDK_BPOOLS_RESERVED,
- MRVL_MUSDK_BPOOLS_RESERVED
+ [0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 4/6] net/mvpp2: fix comments and error messages
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
` (2 preceding siblings ...)
2018-08-24 14:54 ` [PATCH v2 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 5/6] net/mvpp2: make private variables static Tomasz Duszynski
` (2 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, tdu
From: Natalie Samsonov <nsamsono@marvell.com>
Fix comments and error messages.
Fixes: 7235341d7517 ("net/mrvl: support classifier")
Cc: tdu@semihalf.com
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
---
drivers/net/mvpp2/mrvl_flow.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_flow.c b/drivers/net/mvpp2/mrvl_flow.c
index ecc3419..13295e6 100644
--- a/drivers/net/mvpp2/mrvl_flow.c
+++ b/drivers/net/mvpp2/mrvl_flow.c
@@ -394,7 +394,8 @@ mrvl_parse_init(const struct rte_flow_item *item,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
- * @param mask Pointer to the flow.
+ * @param parse_dst Parse either destination or source mac address.
+ * @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
static int
@@ -613,6 +614,7 @@ mrvl_parse_ip4_dscp(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ip address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -726,6 +728,7 @@ mrvl_parse_ip4_proto(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ipv6 address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -874,6 +877,7 @@ mrvl_parse_ip6_next_hdr(const struct rte_flow_item_ipv6 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -949,6 +953,7 @@ mrvl_parse_tcp_dport(const struct rte_flow_item_tcp *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -1022,7 +1027,6 @@ mrvl_parse_udp_dport(const struct rte_flow_item_udp *spec,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1073,7 +1077,6 @@ mrvl_parse_eth(const struct rte_flow_item *item, struct rte_flow *flow,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1139,7 +1142,6 @@ mrvl_parse_vlan(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1205,7 +1207,6 @@ mrvl_parse_ip4(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1276,7 +1277,6 @@ mrvl_parse_ip6(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1332,7 +1332,6 @@ mrvl_parse_tcp(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1981,6 +1980,7 @@ mrvl_parse_pattern_ip6_tcp(const struct rte_flow_item pattern[],
* @param pattern Pointer to the flow pattern table.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
+ * @param ip6 1 to parse ip6 item, 0 to parse ip4 item.
* @returns 0 in case of success, negative value otherwise.
*/
static int
@@ -2350,6 +2350,12 @@ mrvl_flow_parse(struct mrvl_priv *priv, const struct rte_flow_attr *attr,
return mrvl_flow_parse_actions(priv, actions, flow, error);
}
+/**
+ * Get engine type for the given flow.
+ *
+ * @param field Pointer to the flow.
+ * @returns The type of the engine.
+ */
static inline enum pp2_cls_tbl_type
mrvl_engine_type(const struct rte_flow *flow)
{
@@ -2369,6 +2375,13 @@ mrvl_engine_type(const struct rte_flow *flow)
return PP2_CLS_TBL_MASKABLE;
}
+/**
+ * Create classifier table.
+ *
+ * @param dev Pointer to the device.
+ * @param flow Pointer to the very first flow.
+ * @returns 0 in case of success, negative value otherwise.
+ */
static int
mrvl_create_cls_table(struct rte_eth_dev *dev, struct rte_flow *first_flow)
{
@@ -2655,7 +2668,7 @@ mrvl_flow_remove(struct mrvl_priv *priv, struct rte_flow *flow,
/**
* DPDK flow destroy callback called when flow is to be removed.
*
- * @param priv Pointer to the port's private data.
+ * @param dev Pointer to the device.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
* @returns 0 in case of success, negative value otherwise.
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 5/6] net/mvpp2: make private variables static
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
` (3 preceding siblings ...)
2018-08-24 14:54 ` [PATCH v2 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Mark internal variables static to avoid potential redefinition
errors later on.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Yelena Krivosheev <yelena@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 60ca6e0..5cd84c1 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -87,9 +87,9 @@ static int used_bpools[PP2_NUM_PKT_PROC] = {
[0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
-struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
-int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
-uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
+static struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
+static int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
+static uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
int mrvl_logtype;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 6/6] net/mvpp2: add VLAN packet type support for parser offload
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
` (4 preceding siblings ...)
2018-08-24 14:54 ` [PATCH v2 5/6] net/mvpp2: make private variables static Tomasz Duszynski
@ 2018-08-24 14:54 ` Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 14:54 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Add VLAN packet type support for parser offload.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Shlomi Gridish <sgridish@marvell.com>
Reviewed-by: Dmitri Epshtein <dima@marvell.com>
Reviewed-by: Yuval Caduri <cyuval@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 5cd84c1..5b92d82 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -1353,6 +1353,8 @@ mrvl_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused)
{
static const uint32_t ptypes[] = {
RTE_PTYPE_L2_ETHER,
+ RTE_PTYPE_L2_ETHER_VLAN,
+ RTE_PTYPE_L2_ETHER_QINQ,
RTE_PTYPE_L3_IPV4,
RTE_PTYPE_L3_IPV4_EXT,
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
@@ -1922,13 +1924,27 @@ mrvl_desc_to_packet_type_and_offset(struct pp2_ppio_desc *desc,
{
enum pp2_inq_l3_type l3_type;
enum pp2_inq_l4_type l4_type;
+ enum pp2_inq_vlan_tag vlan_tag;
uint64_t packet_type;
pp2_ppio_inq_desc_get_l3_info(desc, &l3_type, l3_offset);
pp2_ppio_inq_desc_get_l4_info(desc, &l4_type, l4_offset);
+ pp2_ppio_inq_desc_get_vlan_tag(desc, &vlan_tag);
packet_type = RTE_PTYPE_L2_ETHER;
+ switch (vlan_tag) {
+ case PP2_INQ_VLAN_TAG_SINGLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
+ break;
+ case PP2_INQ_VLAN_TAG_DOUBLE:
+ case PP2_INQ_VLAN_TAG_TRIPLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_QINQ;
+ break;
+ default:
+ break;
+ }
+
switch (l3_type) {
case PP2_INQ_L3_TYPE_IPV4_NO_OPTS:
packet_type |= RTE_PTYPE_L3_IPV4;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 14:54 ` [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
@ 2018-08-24 16:45 ` Ferruh Yigit
2018-08-24 17:51 ` Tomasz Duszynski
0 siblings, 1 reply; 30+ messages in thread
From: Ferruh Yigit @ 2018-08-24 16:45 UTC (permalink / raw)
To: Tomasz Duszynski, dev; +Cc: nsamsono, mw, Liron Himi
On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> From: Liron Himi <lironh@marvell.com>
>
> Add MVEP (Marvell Embedded Processors) to drivers/common which
> will keep code reused by current and future MRVL PMDs.
> Right now we have only common DMA memory initialization routines there.
>
> Signed-off-by: Liron Himi <lironh@marvell.com>
> Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
<...>
> @@ -0,0 +1,6 @@
> +DPDK_18.08 {
DPDK_18.11
> + global:
> +
> + rte_mvep_init;
> + rte_mvep_deinit;
> +};
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA
2018-08-24 14:54 ` [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
@ 2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 17:51 ` Tomasz Duszynski
0 siblings, 1 reply; 30+ messages in thread
From: Ferruh Yigit @ 2018-08-24 16:46 UTC (permalink / raw)
To: Tomasz Duszynski, dev; +Cc: nsamsono, mw, Liron Himi
On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> From: Liron Himi <lironh@marvell.com>
>
> Use common code to initialize MUSDK DMA memory buffers.
>
> Signed-off-by: Liron Himi <lironh@marvell.com>
> Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
<...>
> @@ -2653,24 +2651,17 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
> if (mrvl_dev_num)
> goto init_devices;
>
> - MRVL_LOG(INFO, "Perform MUSDK initializations");
> - /*
> - * ret == -EEXIST is correct, it means DMA
> - * has been already initialized (by another PMD).
> - */
> - ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
> - if (ret < 0) {
> - if (ret != -EEXIST)
> - goto out_free_kvlist;
> - else
> - MRVL_LOG(INFO,
> - "DMA memory has been already initialized by a different driver.");
> - }
> + MRVL_LOG(INFO, "Perform MUSDK initializations\n");
MRVL_LOG already adding "\n", no need to change original log, a few more below.
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 3/6] net/mvpp2: fix array initialization
2018-08-24 14:54 ` [PATCH v2 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
@ 2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 17:53 ` Tomasz Duszynski
0 siblings, 1 reply; 30+ messages in thread
From: Ferruh Yigit @ 2018-08-24 16:46 UTC (permalink / raw)
To: Tomasz Duszynski, dev; +Cc: nsamsono, mw, stable
On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> Fix used_bpools array initialization by using range initializer.
> This way all necessary variables are properly initialized regardless
> of PP2_NUM_PKT_PROC value.
>
> Fixes: 0ddc9b815b11 ("net/mrvl: add net PMD skeleton")
> Cc: stable@dpdk.org
>
> Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> ---
> drivers/net/mvpp2/mrvl_ethdev.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
> index 7ea8946..60ca6e0 100644
> --- a/drivers/net/mvpp2/mrvl_ethdev.c
> +++ b/drivers/net/mvpp2/mrvl_ethdev.c
> @@ -84,8 +84,7 @@ static const char * const valid_args[] = {
> static int used_hifs = MRVL_MUSDK_HIFS_RESERVED;
> static struct pp2_hif *hifs[RTE_MAX_LCORE];
> static int used_bpools[PP2_NUM_PKT_PROC] = {
> - MRVL_MUSDK_BPOOLS_RESERVED,
> - MRVL_MUSDK_BPOOLS_RESERVED
> + [0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
range initializer is not part of standard, although I am sure this won't be
first GCC extension we rely on, and I don't have any other option than memset
for this.
So just a reminder about extension usage, if you are happy with this
implementation, lets keep it.
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA
2018-08-24 16:46 ` Ferruh Yigit
@ 2018-08-24 17:51 ` Tomasz Duszynski
0 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 17:51 UTC (permalink / raw)
To: Ferruh Yigit; +Cc: Tomasz Duszynski, dev, nsamsono, mw, Liron Himi
On Fri, Aug 24, 2018 at 05:46:21PM +0100, Ferruh Yigit wrote:
> On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> > From: Liron Himi <lironh@marvell.com>
> >
> > Use common code to initialize MUSDK DMA memory buffers.
> >
> > Signed-off-by: Liron Himi <lironh@marvell.com>
> > Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
>
> <...>
>
> > @@ -2653,24 +2651,17 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
> > if (mrvl_dev_num)
> > goto init_devices;
> >
> > - MRVL_LOG(INFO, "Perform MUSDK initializations");
> > - /*
> > - * ret == -EEXIST is correct, it means DMA
> > - * has been already initialized (by another PMD).
> > - */
> > - ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
> > - if (ret < 0) {
> > - if (ret != -EEXIST)
> > - goto out_free_kvlist;
> > - else
> > - MRVL_LOG(INFO,
> > - "DMA memory has been already initialized by a different driver.");
> > - }
> > + MRVL_LOG(INFO, "Perform MUSDK initializations\n");
>
> MRVL_LOG already adding "\n", no need to change original log, a few more below.
Good catch.
--
- Tomasz Duszyński
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 16:45 ` Ferruh Yigit
@ 2018-08-24 17:51 ` Tomasz Duszynski
0 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 17:51 UTC (permalink / raw)
To: Ferruh Yigit; +Cc: Tomasz Duszynski, dev, nsamsono, mw, Liron Himi
On Fri, Aug 24, 2018 at 05:45:48PM +0100, Ferruh Yigit wrote:
> On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> > From: Liron Himi <lironh@marvell.com>
> >
> > Add MVEP (Marvell Embedded Processors) to drivers/common which
> > will keep code reused by current and future MRVL PMDs.
> > Right now we have only common DMA memory initialization routines there.
> >
> > Signed-off-by: Liron Himi <lironh@marvell.com>
> > Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> > Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
>
> <...>
>
> > @@ -0,0 +1,6 @@
> > +DPDK_18.08 {
>
> DPDK_18.11
>
ACK
> > + global:
> > +
> > + rte_mvep_init;
> > + rte_mvep_deinit;
> > +};
--
- Tomasz Duszyński
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 3/6] net/mvpp2: fix array initialization
2018-08-24 16:46 ` Ferruh Yigit
@ 2018-08-24 17:53 ` Tomasz Duszynski
0 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 17:53 UTC (permalink / raw)
To: Ferruh Yigit; +Cc: Tomasz Duszynski, dev, nsamsono, mw, stable
On Fri, Aug 24, 2018 at 05:46:42PM +0100, Ferruh Yigit wrote:
> On 8/24/2018 3:54 PM, Tomasz Duszynski wrote:
> > Fix used_bpools array initialization by using range initializer.
> > This way all necessary variables are properly initialized regardless
> > of PP2_NUM_PKT_PROC value.
> >
> > Fixes: 0ddc9b815b11 ("net/mrvl: add net PMD skeleton")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
> > ---
> > drivers/net/mvpp2/mrvl_ethdev.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
> > index 7ea8946..60ca6e0 100644
> > --- a/drivers/net/mvpp2/mrvl_ethdev.c
> > +++ b/drivers/net/mvpp2/mrvl_ethdev.c
> > @@ -84,8 +84,7 @@ static const char * const valid_args[] = {
> > static int used_hifs = MRVL_MUSDK_HIFS_RESERVED;
> > static struct pp2_hif *hifs[RTE_MAX_LCORE];
> > static int used_bpools[PP2_NUM_PKT_PROC] = {
> > - MRVL_MUSDK_BPOOLS_RESERVED,
> > - MRVL_MUSDK_BPOOLS_RESERVED
> > + [0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
>
> range initializer is not part of standard, although I am sure this won't be
> first GCC extension we rely on, and I don't have any other option than memset
> for this.
>
> So just a reminder about extension usage, if you are happy with this
> implementation, lets keep it.
I would prefer to leave it as is. As you pointed out DPDK has
already started using it anyway.
--
- Tomasz Duszyński
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 0/6] net/mvpp2: changes and features
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
` (5 preceding siblings ...)
2018-08-24 14:54 ` [PATCH v2 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
@ 2018-08-24 18:29 ` Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
` (6 more replies)
6 siblings, 7 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:29 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski
This patch series introduces following changes:
* Common code responsible for DMA memory initialization
is now available under drivers/common/mvep. MVEP stands for
Marvell Embedded Processors. This eases maintenance and avoids
boilerplate code across Marvell PMDs. MVEP will grow over time as new
features and PMDs are added.
* Couple of minor fixes.
* Support for reading VLAN information from descriptor.
v3:
* Change exported symbols version to 18.11.
* Drop excessive new lines from messages passed to MRVL_LOG().
v2:
* Remove CONFIG_RTE_LIBRTE_MVEP_COMMON. Use CONFIG_RTE_LIBRTE_MVPP2_PMD
to control common/mvep compilation instead.
Liron Himi (2):
drivers/common: add mvep common code for MRVL PMDs
net/mvpp2: use common code to initialize DMA
Natalie Samsonov (3):
net/mvpp2: fix comments and error messages
net/mvpp2: make private variables static
net/mvpp2: add VLAN packet type support for parser offload
Tomasz Duszynski (1):
net/mvpp2: fix array initialization
drivers/common/Makefile | 4 ++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++++
drivers/common/mvep/meson.build | 19 +++++++++
drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 +++
drivers/common/mvep/rte_mvep_common.h | 20 +++++++++
drivers/net/mvpp2/Makefile | 3 +-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 57 ++++++++++++++-----------
drivers/net/mvpp2/mrvl_flow.c | 29 +++++++++----
mk/rte.app.mk | 4 ++
12 files changed, 192 insertions(+), 37 deletions(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
--
2.7.4
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 1/6] drivers/common: add mvep common code for MRVL PMDs
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
@ 2018-08-24 18:29 ` Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
` (5 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:29 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi, Tomasz Duszynski
From: Liron Himi <lironh@marvell.com>
Add MVEP (Marvell Embedded Processors) to drivers/common which
will keep code reused by current and future MRVL PMDs.
Right now we have only common DMA memory initialization routines there.
Signed-off-by: Liron Himi <lironh@marvell.com>
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
drivers/common/Makefile | 4 +++
drivers/common/meson.build | 2 +-
drivers/common/mvep/Makefile | 38 +++++++++++++++++++++
drivers/common/mvep/meson.build | 19 +++++++++++
drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++
drivers/common/mvep/rte_common_mvep_version.map | 6 ++++
drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++
mk/rte.app.mk | 4 +++
8 files changed, 137 insertions(+), 1 deletion(-)
create mode 100644 drivers/common/mvep/Makefile
create mode 100644 drivers/common/mvep/meson.build
create mode 100644 drivers/common/mvep/mvep_common.c
create mode 100644 drivers/common/mvep/rte_common_mvep_version.map
create mode 100644 drivers/common/mvep/rte_mvep_common.h
diff --git a/drivers/common/Makefile b/drivers/common/Makefile
index 0fd2237..5f72da0 100644
--- a/drivers/common/Makefile
+++ b/drivers/common/Makefile
@@ -8,4 +8,8 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
DIRS-y += octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVPP2_PMD),y)
+DIRS-y += mvep
+endif
+
include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/common/meson.build b/drivers/common/meson.build
index d7b7d8c..f828ce7 100644
--- a/drivers/common/meson.build
+++ b/drivers/common/meson.build
@@ -2,6 +2,6 @@
# Copyright(c) 2018 Cavium, Inc
std_deps = ['eal']
-drivers = ['octeontx', 'qat']
+drivers = ['mvep', 'octeontx', 'qat']
config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
driver_name_fmt = 'rte_common_@0@'
diff --git a/drivers/common/mvep/Makefile b/drivers/common/mvep/Makefile
new file mode 100644
index 0000000..1f5f005
--- /dev/null
+++ b/drivers/common/mvep/Makefile
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+#
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),config)
+ifeq ($(LIBMUSDK_PATH),)
+$(error "Please define LIBMUSDK_PATH environment variable")
+endif
+endif
+endif
+
+# library name
+LIB = librte_common_mvep.a
+
+# library version
+LIBABIVER := 1
+
+# versioning export map
+EXPORT_MAP := rte_common_mvep_version.map
+
+# external library dependencies
+CFLAGS += -I$($RTE_SDK)/drivers/common/mvep
+CFLAGS += -I$(LIBMUSDK_PATH)/include
+CFLAGS += -DMVCONF_TYPES_PUBLIC
+CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
+CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -O3
+LDLIBS += -L$(LIBMUSDK_PATH)/lib
+LDLIBS += -lmusdk
+LDLIBS += -lrte_eal -lrte_kvargs
+
+# library source files
+SRCS-y += mvep_common.c
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build
new file mode 100644
index 0000000..8ccfacb
--- /dev/null
+++ b/drivers/common/mvep/meson.build
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd.
+# Copyright(c) 2018 Semihalf.
+# All rights reserved.
+#
+path = get_option('lib_musdk_dir')
+lib_dir = path + '/lib'
+inc_dir = path + '/include'
+
+lib = cc.find_library('libmusdk', dirs: [lib_dir], required: false)
+if not lib.found()
+ build = false
+else
+ ext_deps += lib
+ includes += include_directories(inc_dir)
+ cflags += ['-DMVCONF_TYPES_PUBLIC', '-DMVCONF_DMA_PHYS_ADDR_T_PUBLIC']
+endif
+
+sources = files('mvep_common.c')
diff --git a/drivers/common/mvep/mvep_common.c b/drivers/common/mvep/mvep_common.c
new file mode 100644
index 0000000..67fa65b
--- /dev/null
+++ b/drivers/common/mvep/mvep_common.c
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#include <rte_common.h>
+
+#include <env/mv_autogen_comp_flags.h>
+#include <env/mv_sys_dma.h>
+
+#include "rte_mvep_common.h"
+
+/* Memory size (in bytes) for MUSDK dma buffers */
+#define MRVL_MUSDK_DMA_MEMSIZE (40 * 1024 * 1024)
+
+struct mvep {
+ uint32_t ref_count;
+};
+
+static struct mvep mvep;
+
+int rte_mvep_init(enum mvep_module_type module __rte_unused,
+ struct rte_kvargs *kvlist __rte_unused)
+{
+ int ret;
+
+ if (!mvep.ref_count) {
+ ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
+ if (ret)
+ return ret;
+ }
+
+ mvep.ref_count++;
+
+ return 0;
+}
+
+int rte_mvep_deinit(enum mvep_module_type module __rte_unused)
+{
+ mvep.ref_count--;
+
+ if (!mvep.ref_count)
+ mv_sys_dma_mem_destroy();
+
+ return 0;
+}
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
new file mode 100644
index 0000000..c71722d
--- /dev/null
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -0,0 +1,6 @@
+DPDK_18.11 {
+ global:
+
+ rte_mvep_init;
+ rte_mvep_deinit;
+};
diff --git a/drivers/common/mvep/rte_mvep_common.h b/drivers/common/mvep/rte_mvep_common.h
new file mode 100644
index 0000000..ba47e16
--- /dev/null
+++ b/drivers/common/mvep/rte_mvep_common.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Marvell International Ltd.
+ */
+
+#ifndef __RTE_MVEP_COMMON_H__
+#define __RTE_MVEP_COMMON_H__
+
+#include <rte_kvargs.h>
+
+enum mvep_module_type {
+ MVEP_MOD_T_NONE = 0,
+ MVEP_MOD_T_PP2,
+ MVEP_MOD_T_SAM,
+ MVEP_MOD_T_LAST
+};
+
+int rte_mvep_init(enum mvep_module_type module, struct rte_kvargs *kvlist);
+int rte_mvep_deinit(enum mvep_module_type module);
+
+#endif /* __RTE_MVEP_COMMON_H__ */
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index de33883..899d51a 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -98,6 +98,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO
_LDLIBS-y += -lrte_common_octeontx
endif
+ifeq ($(CONFIG_RTE_LIBRTE_MVPP2_PMD),y)
+_LDLIBS-y += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk
+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
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 2/6] net/mvpp2: use common code to initialize DMA
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
@ 2018-08-24 18:29 ` Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
` (4 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:29 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Liron Himi
From: Liron Himi <lironh@marvell.com>
Use common code to initialize MUSDK DMA memory buffers.
Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Natalie Samsonov <nsamsono@marvell.com>
---
drivers/net/mvpp2/Makefile | 3 ++-
drivers/net/mvpp2/meson.build | 2 +-
drivers/net/mvpp2/mrvl_ethdev.c | 32 +++++++++++---------------------
3 files changed, 14 insertions(+), 23 deletions(-)
diff --git a/drivers/net/mvpp2/Makefile b/drivers/net/mvpp2/Makefile
index 492aef9..211d398 100644
--- a/drivers/net/mvpp2/Makefile
+++ b/drivers/net/mvpp2/Makefile
@@ -23,6 +23,7 @@ LIBABIVER := 1
EXPORT_MAP := rte_pmd_mvpp2_version.map
# external library dependencies
+CFLAGS += -I$(RTE_SDK)/drivers/common/mvep
CFLAGS += -I$(LIBMUSDK_PATH)/include
CFLAGS += -DMVCONF_TYPES_PUBLIC
CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
@@ -32,7 +33,7 @@ LDLIBS += -L$(LIBMUSDK_PATH)/lib
LDLIBS += -lmusdk
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_cfgfile
-LDLIBS += -lrte_bus_vdev
+LDLIBS += -lrte_bus_vdev -lrte_common_mvep
# library source files
SRCS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += mrvl_ethdev.c
diff --git a/drivers/net/mvpp2/meson.build b/drivers/net/mvpp2/meson.build
index e139889..3620659 100644
--- a/drivers/net/mvpp2/meson.build
+++ b/drivers/net/mvpp2/meson.build
@@ -22,4 +22,4 @@ sources = files(
'mrvl_qos.c'
)
-deps += ['cfgfile']
+deps += ['cfgfile', 'common_mvep']
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index a2d0576..8e1a32f 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <sys/types.h>
+#include <rte_mvep_common.h>
#include "mrvl_ethdev.h"
#include "mrvl_qos.h"
@@ -63,9 +64,6 @@
#define MRVL_COOKIE_HIGH_ADDR_SHIFT (sizeof(pp2_cookie_t) * 8)
#define MRVL_COOKIE_HIGH_ADDR_MASK (~0ULL << MRVL_COOKIE_HIGH_ADDR_SHIFT)
-/* Memory size (in bytes) for MUSDK dma buffers */
-#define MRVL_MUSDK_DMA_MEMSIZE 41943040
-
/** Port Rx offload capabilities */
#define MRVL_RX_OFFLOADS (DEV_RX_OFFLOAD_VLAN_FILTER | \
DEV_RX_OFFLOAD_JUMBO_FRAME | \
@@ -2654,23 +2652,16 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
goto init_devices;
MRVL_LOG(INFO, "Perform MUSDK initializations");
- /*
- * ret == -EEXIST is correct, it means DMA
- * has been already initialized (by another PMD).
- */
- ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE);
- if (ret < 0) {
- if (ret != -EEXIST)
- goto out_free_kvlist;
- else
- MRVL_LOG(INFO,
- "DMA memory has been already initialized by a different driver.");
- }
+
+ ret = rte_mvep_init(MVEP_MOD_T_PP2, kvlist);
+ if (ret)
+ goto out_free_kvlist;
ret = mrvl_init_pp2();
if (ret) {
MRVL_LOG(ERR, "Failed to init PP!");
- goto out_deinit_dma;
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ goto out_free_kvlist;
}
memset(mrvl_port_bpool_size, 0, sizeof(mrvl_port_bpool_size));
@@ -2695,11 +2686,10 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev)
for (; i > 0; i--)
mrvl_eth_dev_destroy(ifnames.names[i]);
- if (mrvl_dev_num == 0)
+ if (mrvl_dev_num == 0) {
mrvl_deinit_pp2();
-out_deinit_dma:
- if (mrvl_dev_num == 0)
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
+ }
out_free_kvlist:
rte_kvargs_free(kvlist);
@@ -2739,7 +2729,7 @@ rte_pmd_mrvl_remove(struct rte_vdev_device *vdev)
MRVL_LOG(INFO, "Perform MUSDK deinit");
mrvl_deinit_hifs();
mrvl_deinit_pp2();
- mv_sys_dma_mem_destroy();
+ rte_mvep_deinit(MVEP_MOD_T_PP2);
}
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 3/6] net/mvpp2: fix array initialization
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
@ 2018-08-24 18:30 ` Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
` (3 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:30 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, Tomasz Duszynski, stable
Fix used_bpools array initialization by using range initializer.
This way all necessary variables are properly initialized regardless
of PP2_NUM_PKT_PROC value.
Fixes: 0ddc9b815b11 ("net/mrvl: add net PMD skeleton")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 8e1a32f..fdf416b 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -84,8 +84,7 @@ static const char * const valid_args[] = {
static int used_hifs = MRVL_MUSDK_HIFS_RESERVED;
static struct pp2_hif *hifs[RTE_MAX_LCORE];
static int used_bpools[PP2_NUM_PKT_PROC] = {
- MRVL_MUSDK_BPOOLS_RESERVED,
- MRVL_MUSDK_BPOOLS_RESERVED
+ [0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 4/6] net/mvpp2: fix comments and error messages
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
` (2 preceding siblings ...)
2018-08-24 18:30 ` [PATCH v3 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
@ 2018-08-24 18:30 ` Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 5/6] net/mvpp2: make private variables static Tomasz Duszynski
` (2 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:30 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw, tdu
From: Natalie Samsonov <nsamsono@marvell.com>
Fix comments and error messages.
Fixes: 7235341d7517 ("net/mrvl: support classifier")
Cc: tdu@semihalf.com
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Liron Himi <lironh@marvell.com>
---
drivers/net/mvpp2/mrvl_flow.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_flow.c b/drivers/net/mvpp2/mrvl_flow.c
index ecc3419..13295e6 100644
--- a/drivers/net/mvpp2/mrvl_flow.c
+++ b/drivers/net/mvpp2/mrvl_flow.c
@@ -394,7 +394,8 @@ mrvl_parse_init(const struct rte_flow_item *item,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
- * @param mask Pointer to the flow.
+ * @param parse_dst Parse either destination or source mac address.
+ * @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
static int
@@ -613,6 +614,7 @@ mrvl_parse_ip4_dscp(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ip address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -726,6 +728,7 @@ mrvl_parse_ip4_proto(const struct rte_flow_item_ipv4 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source ipv6 address.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -874,6 +877,7 @@ mrvl_parse_ip6_next_hdr(const struct rte_flow_item_ipv6 *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -949,6 +953,7 @@ mrvl_parse_tcp_dport(const struct rte_flow_item_tcp *spec,
*
* @param spec Pointer to the specific flow item.
* @param mask Pointer to the specific flow item's mask.
+ * @param parse_dst Parse either destination or source port.
* @param flow Pointer to the flow.
* @return 0 in case of success, negative error value otherwise.
*/
@@ -1022,7 +1027,6 @@ mrvl_parse_udp_dport(const struct rte_flow_item_udp *spec,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1073,7 +1077,6 @@ mrvl_parse_eth(const struct rte_flow_item *item, struct rte_flow *flow,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1139,7 +1142,6 @@ mrvl_parse_vlan(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1205,7 +1207,6 @@ mrvl_parse_ip4(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1276,7 +1277,6 @@ mrvl_parse_ip6(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1332,7 +1332,6 @@ mrvl_parse_tcp(const struct rte_flow_item *item,
* @param item Pointer to the flow item.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
- * @param fields Pointer to the parsed parsed fields enum.
* @returns 0 on success, negative value otherwise.
*/
static int
@@ -1981,6 +1980,7 @@ mrvl_parse_pattern_ip6_tcp(const struct rte_flow_item pattern[],
* @param pattern Pointer to the flow pattern table.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
+ * @param ip6 1 to parse ip6 item, 0 to parse ip4 item.
* @returns 0 in case of success, negative value otherwise.
*/
static int
@@ -2350,6 +2350,12 @@ mrvl_flow_parse(struct mrvl_priv *priv, const struct rte_flow_attr *attr,
return mrvl_flow_parse_actions(priv, actions, flow, error);
}
+/**
+ * Get engine type for the given flow.
+ *
+ * @param field Pointer to the flow.
+ * @returns The type of the engine.
+ */
static inline enum pp2_cls_tbl_type
mrvl_engine_type(const struct rte_flow *flow)
{
@@ -2369,6 +2375,13 @@ mrvl_engine_type(const struct rte_flow *flow)
return PP2_CLS_TBL_MASKABLE;
}
+/**
+ * Create classifier table.
+ *
+ * @param dev Pointer to the device.
+ * @param flow Pointer to the very first flow.
+ * @returns 0 in case of success, negative value otherwise.
+ */
static int
mrvl_create_cls_table(struct rte_eth_dev *dev, struct rte_flow *first_flow)
{
@@ -2655,7 +2668,7 @@ mrvl_flow_remove(struct mrvl_priv *priv, struct rte_flow *flow,
/**
* DPDK flow destroy callback called when flow is to be removed.
*
- * @param priv Pointer to the port's private data.
+ * @param dev Pointer to the device.
* @param flow Pointer to the flow.
* @param error Pointer to the flow error.
* @returns 0 in case of success, negative value otherwise.
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 5/6] net/mvpp2: make private variables static
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
` (3 preceding siblings ...)
2018-08-24 18:30 ` [PATCH v3 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
@ 2018-08-24 18:30 ` Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-27 12:18 ` [PATCH v3 0/6] net/mvpp2: changes and features Ferruh Yigit
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:30 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Mark internal variables static to avoid potential redefinition
errors later on.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Yelena Krivosheev <yelena@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index fdf416b..6f18315 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -87,9 +87,9 @@ static int used_bpools[PP2_NUM_PKT_PROC] = {
[0 ... PP2_NUM_PKT_PROC - 1] = MRVL_MUSDK_BPOOLS_RESERVED
};
-struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
-int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
-uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
+static struct pp2_bpool *mrvl_port_to_bpool_lookup[RTE_MAX_ETHPORTS];
+static int mrvl_port_bpool_size[PP2_NUM_PKT_PROC][PP2_BPOOL_NUM_POOLS][RTE_MAX_LCORE];
+static uint64_t cookie_addr_high = MRVL_COOKIE_ADDR_INVALID;
int mrvl_logtype;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 6/6] net/mvpp2: add VLAN packet type support for parser offload
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
` (4 preceding siblings ...)
2018-08-24 18:30 ` [PATCH v3 5/6] net/mvpp2: make private variables static Tomasz Duszynski
@ 2018-08-24 18:30 ` Tomasz Duszynski
2018-08-27 12:18 ` [PATCH v3 0/6] net/mvpp2: changes and features Ferruh Yigit
6 siblings, 0 replies; 30+ messages in thread
From: Tomasz Duszynski @ 2018-08-24 18:30 UTC (permalink / raw)
To: dev; +Cc: nsamsono, mw
From: Natalie Samsonov <nsamsono@marvell.com>
Add VLAN packet type support for parser offload.
Signed-off-by: Natalie Samsonov <nsamsono@marvell.com>
Reviewed-by: Shlomi Gridish <sgridish@marvell.com>
Reviewed-by: Dmitri Epshtein <dima@marvell.com>
Reviewed-by: Yuval Caduri <cyuval@marvell.com>
---
drivers/net/mvpp2/mrvl_ethdev.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c
index 6f18315..6824445 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -1353,6 +1353,8 @@ mrvl_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused)
{
static const uint32_t ptypes[] = {
RTE_PTYPE_L2_ETHER,
+ RTE_PTYPE_L2_ETHER_VLAN,
+ RTE_PTYPE_L2_ETHER_QINQ,
RTE_PTYPE_L3_IPV4,
RTE_PTYPE_L3_IPV4_EXT,
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
@@ -1922,13 +1924,27 @@ mrvl_desc_to_packet_type_and_offset(struct pp2_ppio_desc *desc,
{
enum pp2_inq_l3_type l3_type;
enum pp2_inq_l4_type l4_type;
+ enum pp2_inq_vlan_tag vlan_tag;
uint64_t packet_type;
pp2_ppio_inq_desc_get_l3_info(desc, &l3_type, l3_offset);
pp2_ppio_inq_desc_get_l4_info(desc, &l4_type, l4_offset);
+ pp2_ppio_inq_desc_get_vlan_tag(desc, &vlan_tag);
packet_type = RTE_PTYPE_L2_ETHER;
+ switch (vlan_tag) {
+ case PP2_INQ_VLAN_TAG_SINGLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
+ break;
+ case PP2_INQ_VLAN_TAG_DOUBLE:
+ case PP2_INQ_VLAN_TAG_TRIPLE:
+ packet_type |= RTE_PTYPE_L2_ETHER_QINQ;
+ break;
+ default:
+ break;
+ }
+
switch (l3_type) {
case PP2_INQ_L3_TYPE_IPV4_NO_OPTS:
packet_type |= RTE_PTYPE_L3_IPV4;
--
2.7.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH v3 0/6] net/mvpp2: changes and features
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
` (5 preceding siblings ...)
2018-08-24 18:30 ` [PATCH v3 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
@ 2018-08-27 12:18 ` Ferruh Yigit
6 siblings, 0 replies; 30+ messages in thread
From: Ferruh Yigit @ 2018-08-27 12:18 UTC (permalink / raw)
To: Tomasz Duszynski, dev; +Cc: nsamsono, mw
On 8/24/2018 7:29 PM, Tomasz Duszynski wrote:
> This patch series introduces following changes:
>
> * Common code responsible for DMA memory initialization
> is now available under drivers/common/mvep. MVEP stands for
> Marvell Embedded Processors. This eases maintenance and avoids
> boilerplate code across Marvell PMDs. MVEP will grow over time as new
> features and PMDs are added.
>
> * Couple of minor fixes.
>
> * Support for reading VLAN information from descriptor.
>
> v3:
> * Change exported symbols version to 18.11.
> * Drop excessive new lines from messages passed to MRVL_LOG().
>
> v2:
> * Remove CONFIG_RTE_LIBRTE_MVEP_COMMON. Use CONFIG_RTE_LIBRTE_MVPP2_PMD
> to control common/mvep compilation instead.
>
> Liron Himi (2):
> drivers/common: add mvep common code for MRVL PMDs
> net/mvpp2: use common code to initialize DMA
>
> Natalie Samsonov (3):
> net/mvpp2: fix comments and error messages
> net/mvpp2: make private variables static
> net/mvpp2: add VLAN packet type support for parser offload
>
> Tomasz Duszynski (1):
> net/mvpp2: fix array initialization
Series applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2018-08-27 12:18 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-24 12:16 [PATCH 0/6] mvpp2 changes and features Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 12:32 ` Ferruh Yigit
2018-08-24 12:49 ` Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 5/6] net/mvpp2: make private variables static Tomasz Duszynski
2018-08-24 12:16 ` [PATCH 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-24 14:54 ` [PATCH 0/6] net/mvpp2 changes and features Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 16:45 ` Ferruh Yigit
2018-08-24 17:51 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 17:51 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
2018-08-24 16:46 ` Ferruh Yigit
2018-08-24 17:53 ` Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 5/6] net/mvpp2: make private variables static Tomasz Duszynski
2018-08-24 14:54 ` [PATCH v2 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 0/6] net/mvpp2: changes and features Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 1/6] drivers/common: add mvep common code for MRVL PMDs Tomasz Duszynski
2018-08-24 18:29 ` [PATCH v3 2/6] net/mvpp2: use common code to initialize DMA Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 3/6] net/mvpp2: fix array initialization Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 4/6] net/mvpp2: fix comments and error messages Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 5/6] net/mvpp2: make private variables static Tomasz Duszynski
2018-08-24 18:30 ` [PATCH v3 6/6] net/mvpp2: add VLAN packet type support for parser offload Tomasz Duszynski
2018-08-27 12:18 ` [PATCH v3 0/6] net/mvpp2: changes and features Ferruh Yigit
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.