On Wed, Feb 24, 2021 at 04:10:18PM +0800, DENG Qingfang wrote: > Support port MDB and bridge flag operations. > > As the hardware can manage multicast forwarding itself, offload_fwd_mark > can be unconditionally set to true. > > Signed-off-by: DENG Qingfang <dqf...@gmail.com> > --- > Changes: > Add bridge flag operations and resend as RFC > > drivers/net/dsa/mt7530.c | 123 +++++++++++++++++++++++++++++++++++++-- > drivers/net/dsa/mt7530.h | 1 + > net/dsa/tag_mtk.c | 14 +---- > 3 files changed, 121 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c > index bca4fc724e45..341a6b3f7ef6 100644 > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -1000,8 +1000,9 @@ mt753x_cpu_port_enable(struct dsa_switch *ds, int port) > mt7530_write(priv, MT7530_PVC_P(port), > PORT_SPEC_TAG); > > - /* Unknown multicast frame forwarding to the cpu port */ > - mt7530_rmw(priv, MT7530_MFC, UNM_FFP_MASK, UNM_FFP(BIT(port))); > + /* Disable flooding by default */
I think the comment is incorrect and this _enables_ flooding (which btw is ok until we get the address filtering thing sorted out). > + mt7530_rmw(priv, MT7530_MFC, BC_FFP_MASK | UNM_FFP_MASK | UNU_FFP_MASK, > + BC_FFP(BIT(port)) | UNM_FFP(BIT(port)) | UNU_FFP(BIT(port))); > > /* Set CPU port number */ > if (priv->id == ID_MT7621) > @@ -1138,6 +1139,55 @@ mt7530_stp_state_set(struct dsa_switch *ds, int port, > u8 state) > mt7530_rmw(priv, MT7530_SSP_P(port), FID_PST_MASK, stp_state); > } > > +static int > +mt7530_port_pre_bridge_flags(struct dsa_switch *ds, int port, > + struct switchdev_brport_flags flags, > + struct netlink_ext_ack *extack) > +{ > + if (flags.mask & ~(BR_AUTO_MASK | BR_MCAST_FLOOD | BR_BCAST_FLOOD)) > + return -EINVAL; I think BR_AUTO_MASK is confusing (because it is internal to the bridge layer) and could be better expressed as BR_FLOOD | BR_LEARNING. > + > + return 0; > +} > +