summaryrefslogtreecommitdiff
path: root/net/dsa/master.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2020-03-27 16:07:25 -0700
committerDavid S. Miller <davem@davemloft.net>2020-03-27 16:07:25 -0700
commit1a147b74c2fd4058dea0133cb2471724c3b3de09 (patch)
tree3ae828b214df599a0f3f2b463acbb23c9ebfea45 /net/dsa/master.c
parent22f33971aa47a9868453850c434bbc080b804133 (diff)
parent0b912fc93a680ab6105a63c36222923fbe09065e (diff)
Merge branch 'DSA-mtu'
Vladimir Oltean says: ==================== Configure the MTU on DSA switches This series adds support for configuring the MTU on front-panel switch ports, while seamlessly adapting the CPU port and the DSA master to the largest value plus the tagger overhead. It also implements bridge MTU auto-normalization within the DSA core, as resulted after the feedback of the implementation of this feature inside the bridge driver in v2. Support was added for quite a number of switches, in the hope that this series would gain some traction: - sja1105 - felix - vsc73xx - b53 and rest of the platform V3 of this series was submitted here: https://patchwork.ozlabs.org/cover/1262394/ V2 of this series was submitted here: https://patchwork.ozlabs.org/cover/1261471/ V1 of this series was submitted here: https://patchwork.ozlabs.org/cover/1199868/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa/master.c')
-rw-r--r--net/dsa/master.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/net/dsa/master.c b/net/dsa/master.c
index bd44bde272f4..b5c535af63a3 100644
--- a/net/dsa/master.c
+++ b/net/dsa/master.c
@@ -314,20 +314,6 @@ static const struct attribute_group dsa_group = {
.attrs = dsa_slave_attrs,
};
-static void dsa_master_set_mtu(struct net_device *dev, struct dsa_port *cpu_dp)
-{
- unsigned int mtu = ETH_DATA_LEN + cpu_dp->tag_ops->overhead;
- int err;
-
- rtnl_lock();
- if (mtu <= dev->max_mtu) {
- err = dev_set_mtu(dev, mtu);
- if (err)
- netdev_dbg(dev, "Unable to set MTU to include for DSA overheads\n");
- }
- rtnl_unlock();
-}
-
static void dsa_master_reset_mtu(struct net_device *dev)
{
int err;
@@ -344,7 +330,12 @@ int dsa_master_setup(struct net_device *dev, struct dsa_port *cpu_dp)
{
int ret;
- dsa_master_set_mtu(dev, cpu_dp);
+ rtnl_lock();
+ ret = dev_set_mtu(dev, ETH_DATA_LEN + cpu_dp->tag_ops->overhead);
+ rtnl_unlock();
+ if (ret)
+ netdev_warn(dev, "error %d setting MTU to include DSA overhead\n",
+ ret);
/* If we use a tagging format that doesn't have an ethertype
* field, make sure that all packets from this point on get