[PATCH v8 net-next 10/12] net: dsa: mv88e6xxx: mac-auth/MAB implementation
netdev at kapio-technology.com
netdev at kapio-technology.com
Sat Oct 22 00:31:06 PDT 2022
On 2022-10-20 15:25, Vladimir Oltean wrote:
>> if (flags.mask & BR_LEARNING) {
>> bool learning = !!(flags.val & BR_LEARNING);
>> u16 pav = learning ? (1 << port) : 0;
>>
>> + mv88e6xxx_reg_lock(chip);
>> err = mv88e6xxx_port_set_assoc_vector(chip, port, pav);
>> + mv88e6xxx_reg_unlock(chip);
>> if (err)
>> goto out;
>> }
>> @@ -6563,8 +6593,10 @@ static int mv88e6xxx_port_bridge_flags(struct
>> dsa_switch *ds, int port,
>> if (flags.mask & BR_FLOOD) {
>> bool unicast = !!(flags.val & BR_FLOOD);
>>
>> + mv88e6xxx_reg_lock(chip);
>> err = chip->info->ops->port_set_ucast_flood(chip, port,
>> unicast);
>> + mv88e6xxx_reg_unlock(chip);
>> if (err)
>> goto out;
>> }
>> @@ -6572,8 +6604,10 @@ static int mv88e6xxx_port_bridge_flags(struct
>> dsa_switch *ds, int port,
>> if (flags.mask & BR_MCAST_FLOOD) {
>> bool multicast = !!(flags.val & BR_MCAST_FLOOD);
>>
>> + mv88e6xxx_reg_lock(chip);
>> err = chip->info->ops->port_set_mcast_flood(chip, port,
>> multicast);
>> + mv88e6xxx_reg_unlock(chip);
>> if (err)
>> goto out;
>> }
>> @@ -6581,20 +6615,34 @@ static int mv88e6xxx_port_bridge_flags(struct
>> dsa_switch *ds, int port,
>> if (flags.mask & BR_BCAST_FLOOD) {
>> bool broadcast = !!(flags.val & BR_BCAST_FLOOD);
>>
>> + mv88e6xxx_reg_lock(chip);
>> err = mv88e6xxx_port_broadcast_sync(chip, port, broadcast);
>> + mv88e6xxx_reg_unlock(chip);
>> if (err)
>> goto out;
>> }
>>
>> + if (flags.mask & BR_PORT_MAB) {
>> + chip->ports[port].mab = !!(flags.val & BR_PORT_MAB);
>> +
>> + if (!chip->ports[port].mab)
>> + err = mv88e6xxx_atu_locked_entry_flush(ds, port);
>> + else
>> + err = 0;
>
> Again, dsa_port_fast_age() is also called when dp->learning is turned
> off in dsa_port_bridge_flags(). I don't want to see the mv88e6xxx
> driver
> doing this manually.
>
But I think it should be so that turning MAB off will clear the ALE
entries
regardless, as the port can continue to be locked and needing port
association,
or you want them to just age out normally in that case, thus lingering
for
up to bridge ageing time?
More information about the Linux-mediatek
mailing list