lkml.org 
[lkml]   [2021]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC net-next] net: dsa: mt7530: support MDB and bridge flag operations
    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 <dqfext@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;
    > +}
    > +

    \
     
     \ /
      Last update: 2021-02-24 09:48    [W:5.086 / U:2.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site