[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