Hi Xiaojun, 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 5/5] net/fm10k: add switch management support > > Split dev init to 2 parts. > First only register the port in switch > management; second init hook will be > called after all the pf are registered > and switch initialization. It will finish > dev init. Also add switch interrupt support. > Add fm10k_mirror_rule_set/fm10k_mirror_rule_reset > to support mirror operation. Add fm10k_dev_filter_ctrl > to support flow operation. > Add dpdk port and pf mapping, so > the dpdk port can map to a specific pf > and 1 dpdk port can map to 2 pf to get > total 100G throughput. > > 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> > --- > drivers/net/fm10k/base/fm10k_type.h | 1 + > drivers/net/fm10k/fm10k_ethdev.c | 562 > +++++++++++++++++++++++++++++--- > drivers/net/fm10k/switch/fm10k_switch.c | 20 +- > drivers/net/fm10k/switch/fm10k_switch.h | 1 + > 4 files changed, 541 insertions(+), 43 deletions(-) > > diff --git a/drivers/net/fm10k/base/fm10k_type.h > b/drivers/net/fm10k/base/fm10k_type.h > index 84781ba..810e5ee 100644 > --- a/drivers/net/fm10k/base/fm10k_type.h > +++ b/drivers/net/fm10k/base/fm10k_type.h > @@ -717,6 +717,7 @@ struct fm10k_hw { > u16 subsystem_vendor_id; > u8 revision_id; > u32 flags; > + bool switch_ready; > #define FM10K_HW_FLAG_CLOCK_OWNER BIT(0) > }; > > diff --git a/drivers/net/fm10k/fm10k_ethdev.c > b/drivers/net/fm10k/fm10k_ethdev.c > index 581c690..f11fa53 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -13,6 +13,10 @@ > > #include "fm10k.h" > #include "base/fm10k_api.h" > +#ifdef RTE_FM10K_MANAGEMENT > +#include "switch/fm10k_regs.h" > +#include "switch/fm10k_switch.h" > +#endif > > /* Default delay to acquire mailbox lock */ > #define FM10K_MBXLOCK_DELAY_US 20 > @@ -461,9 +465,6 @@ struct fm10k_xstats_name_off { > > PMD_INIT_FUNC_TRACE(); > > - if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) > - dev->data->dev_conf.rxmode.offloads |= > DEV_RX_OFFLOAD_RSS_HASH; > - Why delete this? Will it break the existing usage? > /* multipe queue mode checking */ > ret = fm10k_check_mq_mode(dev); > if (ret != 0) { [...]