Hi Xiaojun, Comments inline.
Best Regards, Xiao > -----Original Message----- > From: Xiaojun Liu <xiaojun....@silicom.co.il> > Sent: Friday, February 28, 2020 4:38 PM > To: Wang, Xiao W <xiao.w.w...@intel.com>; Zhang, Qi Z > <qi.z.zh...@intel.com>; Kwan, Ngai-mint <ngai-mint.k...@intel.com>; Keller, > Jacob E <jacob.e.kel...@intel.com> > Cc: dev@dpdk.org; Xiaojun Liu <xiaojun....@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....@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. [...]