[dpdk-dev] [PATCH v1 1/5] net/fm10k: add basic functions for switch management
Wang, Xiao W
xiao.w.wang at intel.com
Mon Mar 16 07:37:50 CET 2020
Hi Xiaojun,
Comments inline.
Best Regards,
Xiao
> -----Original Message-----
> From: Xiaojun Liu <xiaojun.liu at silicom.co.il>
> Sent: Friday, February 28, 2020 4:38 PM
> To: Wang, Xiao W <xiao.w.wang at intel.com>; Zhang, Qi Z
> <qi.z.zhang at intel.com>; Kwan, Ngai-mint <ngai-mint.kwan at intel.com>; Keller,
> Jacob E <jacob.e.keller at intel.com>
> Cc: dev at dpdk.org; Xiaojun Liu <xiaojun.liu at silicom.co.il>
> Subject: [PATCH v1 1/5] net/fm10k: add basic functions for switch management
For new version patch, the version number should increment from previous one. Otherwise, it confuses reviewer.
>
> Add I2C to control the inside LED and PHY.
> All the operations of I2C are using fm10k I2C register.
> Add SBUS to communicate with spico(micro code in serdes)
> by using fm10k SBUS register. This is like I2C operations.
> Add registers defination, which include all the registers
> will be used in the driver. Add switch management log API.
> Add switch management structures. Modify Makefile to add
> new files building. Add CONFIG_RTE_FM10K_MANAGEMENT=n
> in config/common_linux.
>
> To enable the switch management, you need add
> CONFIG_RTE_FM10K_MANAGEMENT=y in
> config/common_linux when building.
>
> Signed-off-by: Xiaojun Liu <xiaojun.liu at silicom.co.il>
> ---
> config/common_linux | 7 +
> drivers/net/fm10k/Makefile | 14 +
> drivers/net/fm10k/switch/fm10k_debug.h | 19 +
> drivers/net/fm10k/switch/fm10k_i2c.c | 310 +++++
> drivers/net/fm10k/switch/fm10k_i2c.h | 54 +
> drivers/net/fm10k/switch/fm10k_regs.h | 2302
> +++++++++++++++++++++++++++++++
> drivers/net/fm10k/switch/fm10k_sbus.c | 292 ++++
> drivers/net/fm10k/switch/fm10k_sbus.h | 40 +
> drivers/net/fm10k/switch/fm10k_switch.h | 335 +++++
> 9 files changed, 3373 insertions(+)
> create mode 100644 drivers/net/fm10k/switch/fm10k_debug.h
> create mode 100644 drivers/net/fm10k/switch/fm10k_i2c.c
> create mode 100644 drivers/net/fm10k/switch/fm10k_i2c.h
> create mode 100644 drivers/net/fm10k/switch/fm10k_regs.h
> create mode 100644 drivers/net/fm10k/switch/fm10k_sbus.c
> create mode 100644 drivers/net/fm10k/switch/fm10k_sbus.h
> create mode 100644 drivers/net/fm10k/switch/fm10k_switch.h
>
> diff --git a/config/common_linux b/config/common_linux
> index 8168106..75a4fa8 100644
> --- a/config/common_linux
> +++ b/config/common_linux
> @@ -66,3 +66,10 @@ CONFIG_RTE_LIBRTE_HINIC_PMD=y
> # Hisilicon HNS3 PMD driver
> #
> CONFIG_RTE_LIBRTE_HNS3_PMD=y
> +
> +#
> +# FM10K switch management
> +#
> +CONFIG_RTE_FM10K_MANAGEMENT=n
CONFIG_RTE_FM10K_SWITCH_MANAGEMENT is more appropriate.
> +
> +
Do not add extra empty lines.
> diff --git a/drivers/net/fm10k/Makefile b/drivers/net/fm10k/Makefile
> index 29e659d..15ea187 100644
> --- a/drivers/net/fm10k/Makefile
> +++ b/drivers/net/fm10k/Makefile
> @@ -11,6 +11,9 @@ LIB = librte_pmd_fm10k.a
> CFLAGS += -O3
> CFLAGS += $(WERROR_FLAGS)
> CFLAGS += -DALLOW_EXPERIMENTAL_API
> +ifeq ($(CONFIG_RTE_FM10K_MANAGEMENT),y)
> +CFLAGS += -DENABLE_FM10K_MANAGEMENT
> +endif
As I commented previously, no need to add another new MACRO. Just use RTE_FM10K_MANAGEMENT
>
> EXPORT_MAP := rte_pmd_fm10k_version.map
>
> @@ -49,6 +52,9 @@ endif
> LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
> LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
> LDLIBS += -lrte_bus_pci
> +ifeq ($(CONFIG_RTE_FM10K_MANAGEMENT),y)
> +LDLIBS += -lpthread
> +endif
>
> #
> # Add extra flags for base driver source files to disable warnings in them
> @@ -58,6 +64,10 @@ $(foreach obj, $(BASE_DRIVER_OBJS), $(eval
> CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER))
>
> VPATH += $(SRCDIR)/base
>
> +ifeq ($(CONFIG_RTE_FM10K_MANAGEMENT),y)
> +VPATH += $(SRCDIR)/switch
> +endif
> +
> #
> # all source are stored in SRCS-y
> # base driver is based on the package of cid-fm10k.2017.01.24.tar.gz
> @@ -71,6 +81,10 @@ SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) +=
> fm10k_common.c
> SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_mbx.c
> SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_vf.c
> SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_api.c
> +ifeq ($(CONFIG_RTE_FM10K_MANAGEMENT),y)
> +SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_i2c.c
> +SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_sbus.c
> +endif
> ifeq ($(CONFIG_RTE_ARCH_X86), y)
> SRCS-$(CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR) += fm10k_rxtx_vec.c
> endif
> diff --git a/drivers/net/fm10k/switch/fm10k_debug.h
> b/drivers/net/fm10k/switch/fm10k_debug.h
> new file mode 100644
> index 0000000..f7b5c06
> --- /dev/null
> +++ b/drivers/net/fm10k/switch/fm10k_debug.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2019 Silicom Ltd. Connectivity Solutions
> + */
> +
> +#ifndef _FM10K_DEBUG_H_
> +#define _FM10K_DEBUG_H_
> +
> +
> +#define FM10K_SW_ERR(...) PMD_INIT_LOG(ERR, __VA_ARGS__)
> +#define FM10K_SW_INFO(...) PMD_INIT_LOG(INFO, __VA_ARGS__)
> +#define FM10K_SW_TRACE(...) PMD_INIT_LOG(DEBUG, __VA_ARGS__)
> +
> +#define FM10K_SW_ASSERT(...) do {} while (0)
> +
> +#define FM10K_SW_STATS_TRACE_ENABLE 1
> +#define FM10K_SW_FFU_CONF_TRACE_ENABLE 0
> +#define FM10K_SW_MIRROR_TRACE_ENABLE 0
> +
> +#endif /* _FM10K_DEBUG_H_ */
> diff --git a/drivers/net/fm10k/switch/fm10k_i2c.c
> b/drivers/net/fm10k/switch/fm10k_i2c.c
> new file mode 100644
> index 0000000..28b0c34
> --- /dev/null
> +++ b/drivers/net/fm10k/switch/fm10k_i2c.c
> @@ -0,0 +1,310 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2019 Silicom Ltd. Connectivity Solutions
> + */
> +
> +#include <rte_malloc.h>
> +
Remove this extra empty line, and please re-check other places for similar issues.
> +#include <rte_time.h>
> +#include <rte_kvargs.h>
> +#include <rte_hash.h>
> +#include <rte_flow.h>
> +#include <rte_flow_driver.h>
> +#include <rte_tm_driver.h>
> +
> +#include "fm10k_debug.h"
> +#include "fm10k_i2c.h"
> +#include "fm10k_regs.h"
> +#include "fm10k_switch.h"
> +
[...]
> diff --git a/drivers/net/fm10k/switch/fm10k_i2c.h
> b/drivers/net/fm10k/switch/fm10k_i2c.h
> new file mode 100644
> index 0000000..f835afe
> --- /dev/null
> +++ b/drivers/net/fm10k/switch/fm10k_i2c.h
> @@ -0,0 +1,54 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2019 Silicom Ltd. Connectivity Solutions
> + */
> +
> +#ifndef _FM10K_SW_I2C_H_
> +#define _FM10K_SW_I2C_H_
> +
> +#include <semaphore.h>
> +#include <pthread.h>
Add an empty line here to separate CLIB headers and local headers. Please check all other places.
> +#include "rte_spinlock.h"
> +#include "fm10k_debug.h"
> +
[...]
> diff --git a/drivers/net/fm10k/switch/fm10k_sbus.c
> b/drivers/net/fm10k/switch/fm10k_sbus.c
> new file mode 100644
> index 0000000..d7d656e
> --- /dev/null
> +++ b/drivers/net/fm10k/switch/fm10k_sbus.c
> @@ -0,0 +1,292 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2019 Silicom Ltd. Connectivity Solutions
> + */
> +
> +#include <rte_malloc.h>
> +
> +#include <rte_time.h>
> +#include <rte_kvargs.h>
> +#include <rte_hash.h>
> +#include <rte_flow.h>
> +#include <rte_flow_driver.h>
> +#include <rte_tm_driver.h>
> +
> +#include "fm10k_debug.h"
> +#include "fm10k_regs.h"
> +#include "fm10k_sbus.h"
> +#include "fm10k_switch.h"
> +
> +#define FM10K_SW_SBUS_COMMAND_WAIT_LOCK_US_MAX 4
> +#define FM10K_SW_SBUS_COMMAND_TIMEOUT_US 500000
> +#define FM10K_SW_SBUS_RING_DIVIDER 0x01
The above two lines are not aligned, though in outlook it may be. You can have a check here: http://patches.dpdk.org/patch/66130/
It's also not aligned in my "vim". Note: " set tabstop=8 " is recommended for dpdk.
[...]
More information about the dev
mailing list