generic: 5.15: qca8k: add kernel version tag on backport patch
[openwrt/staging/svanheule.git] / target / linux / generic / backport-5.15 / 765-v5.17-01-net-next-net-dsa-reorder-PHY-initialization-with-MTU-setup-in.patch
diff --git a/target/linux/generic/backport-5.15/765-v5.17-01-net-next-net-dsa-reorder-PHY-initialization-with-MTU-setup-in.patch b/target/linux/generic/backport-5.15/765-v5.17-01-net-next-net-dsa-reorder-PHY-initialization-with-MTU-setup-in.patch
new file mode 100644 (file)
index 0000000..1786bf0
--- /dev/null
@@ -0,0 +1,52 @@
+From 904e112ad431492b34f235f59738e8312802bbf9 Mon Sep 17 00:00:00 2001
+From: Vladimir Oltean <vladimir.oltean@nxp.com>
+Date: Thu, 6 Jan 2022 01:11:12 +0200
+Subject: [PATCH 1/6] net: dsa: reorder PHY initialization with MTU setup in
+ slave.c
+
+In dsa_slave_create() there are 2 sections that take rtnl_lock():
+MTU change and netdev registration. They are separated by PHY
+initialization.
+
+There isn't any strict ordering requirement except for the fact that
+netdev registration should be last. Therefore, we can perform the MTU
+change a bit later, after the PHY setup. A future change will then be
+able to merge the two rtnl_lock sections into one.
+
+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>
+---
+ net/dsa/slave.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+--- a/net/dsa/slave.c
++++ b/net/dsa/slave.c
+@@ -1986,13 +1986,6 @@ int dsa_slave_create(struct dsa_port *po
+       port->slave = slave_dev;
+       dsa_slave_setup_tagger(slave_dev);
+-      rtnl_lock();
+-      ret = dsa_slave_change_mtu(slave_dev, ETH_DATA_LEN);
+-      rtnl_unlock();
+-      if (ret && ret != -EOPNOTSUPP)
+-              dev_warn(ds->dev, "nonfatal error %d setting MTU to %d on port %d\n",
+-                       ret, ETH_DATA_LEN, port->index);
+-
+       netif_carrier_off(slave_dev);
+       ret = dsa_slave_phy_setup(slave_dev);
+@@ -2004,6 +1997,13 @@ int dsa_slave_create(struct dsa_port *po
+       }
+       rtnl_lock();
++      ret = dsa_slave_change_mtu(slave_dev, ETH_DATA_LEN);
++      rtnl_unlock();
++      if (ret && ret != -EOPNOTSUPP)
++              dev_warn(ds->dev, "nonfatal error %d setting MTU to %d on port %d\n",
++                       ret, ETH_DATA_LEN, port->index);
++
++      rtnl_lock();
+       ret = register_netdevice(slave_dev);
+       if (ret) {