net: dsa: sja1105: make devlink property best_effort_vlan_filtering true by default
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sat, 13 Feb 2021 20:46:32 +0000 (22:46 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Feb 2021 21:23:57 +0000 (13:23 -0800)
The sja1105 driver has a limitation, extensively described under
Documentation/networking/dsa/sja1105.rst and
Documentation/networking/devlink/sja1105.rst, which says that when the
ports are under a bridge with vlan_filtering=1, traffic to and from
the network stack is not possible, unless the driver-specific
best_effort_vlan_filtering devlink parameter is enabled.

For users, this creates a 'wtf' moment. They need to go to the
documentation and find about the existence of this property, then maybe
install devlink and set it to true.

Having best_effort_vlan_filtering enabled by the kernel by default
delays that 'wtf' moment (maybe up to the point that it never even
happens). The user doesn't need to care that the driver supports
addressing the ports individually by retagging VLAN IDs until he/she
needs to use more than 32 VLAN IDs (since there can be at most 32
retagging rules). Only then do they need to think whether they need the
full VLAN table, at the expense of no individual port addressing, or
not.

But the odds that an sja1105 user will need more than 32 VLANs
terminated by the CPU is probably low. And, if we were to follow the
principle that more advanced use cases should require more advanced
preparation steps, then it makes more sense for ping to 'just work'
while CPU termination of > 32 VLAN IDs to require a bit more forethought
and possibly a driver-specific devlink param.

So we should be able to safely change the default here, and make this
driver act just a little bit more sanely out of the box.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105_main.c

index 0818a67..85a39d5 100644 (file)
@@ -2939,6 +2939,8 @@ static int sja1105_setup(struct dsa_switch *ds)
 
        ds->mtu_enforcement_ingress = true;
 
+       priv->best_effort_vlan_filtering = true;
+
        rc = sja1105_devlink_setup(ds);
        if (rc < 0)
                return rc;