> -----Original Message----- > From: Vijay Srivastava <vijay.srivast...@xilinx.com> > Sent: Friday, October 29, 2021 10:47 PM > To: dev@dpdk.org > Cc: maxime.coque...@redhat.com; Xia, Chenbo <chenbo....@intel.com>; > andrew.rybche...@oktetlabs.ru; Vijay Kumar Srivastava <vsriv...@xilinx.com> > Subject: [PATCH v3 10/10] vdpa/sfc: set a multicast filter during vDPA init > > From: Vijay Kumar Srivastava <vsriv...@xilinx.com> > > Insert unknown multicast filter to allow IPv6 neighbor discovery > > Signed-off-by: Vijay Kumar Srivastava <vsriv...@xilinx.com> > Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru> > --- > drivers/vdpa/sfc/sfc_vdpa.h | 3 ++- > drivers/vdpa/sfc/sfc_vdpa_filter.c | 19 +++++++++++++++++-- > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/drivers/vdpa/sfc/sfc_vdpa.h b/drivers/vdpa/sfc/sfc_vdpa.h > index dbd099f..bedc76c 100644 > --- a/drivers/vdpa/sfc/sfc_vdpa.h > +++ b/drivers/vdpa/sfc/sfc_vdpa.h > @@ -21,7 +21,7 @@ > #define SFC_VDPA_DEFAULT_MCDI_IOVA 0x200000000000 > > /* Broadcast & Unicast MAC filters are supported */ > -#define SFC_MAX_SUPPORTED_FILTERS 2 > +#define SFC_MAX_SUPPORTED_FILTERS 3 > > /* > * Get function-local index of the associated VI from the > @@ -32,6 +32,7 @@ > enum sfc_vdpa_filter_type { > SFC_VDPA_BCAST_MAC_FILTER = 0, > SFC_VDPA_UCAST_MAC_FILTER = 1, > + SFC_VDPA_MCAST_DST_FILTER = 2, > SFC_VDPA_FILTER_NTYPE > }; > > diff --git a/drivers/vdpa/sfc/sfc_vdpa_filter.c > b/drivers/vdpa/sfc/sfc_vdpa_filter.c > index 03b6a5d..74204d3 100644 > --- a/drivers/vdpa/sfc/sfc_vdpa_filter.c > +++ b/drivers/vdpa/sfc/sfc_vdpa_filter.c > @@ -39,8 +39,12 @@ > spec->efs_flags = EFX_FILTER_FLAG_RX; > spec->efs_dmaq_id = qid; > > - rc = efx_filter_spec_set_eth_local(spec, EFX_FILTER_SPEC_VID_UNSPEC, > - eth_addr); > + if (eth_addr == NULL) > + rc = efx_filter_spec_set_mc_def(spec); > + else > + rc = efx_filter_spec_set_eth_local(spec, > + EFX_FILTER_SPEC_VID_UNSPEC, > + eth_addr); > if (rc != 0) > return rc; > > @@ -114,6 +118,17 @@ int sfc_vdpa_filter_config(struct sfc_vdpa_ops_data > *ops_data) > else > sva->filters.filter_cnt++; > > + sfc_vdpa_log_init(sva, "insert unknown mcast filter"); > + spec = &sva->filters.spec[SFC_VDPA_MCAST_DST_FILTER]; > + > + rc = sfc_vdpa_set_mac_filter(nic, spec, qid, NULL); > + if (rc != 0) > + sfc_vdpa_err(sva, > + "mcast filter insertion failed: %s", > + rte_strerror(rc));
Can improve to use two lines. With this fixed: Reviewed-by: Chenbo Xia <chenbo....@intel.com> > + else > + sva->filters.filter_cnt++; > + > sfc_vdpa_log_init(sva, "done"); > > return rc; > -- > 1.8.3.1