]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: dsa: reorder PHY initialization with MTU setup in slave.c
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 5 Jan 2022 23:11:12 +0000 (01:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Jan 2022 11:59:09 +0000 (11:59 +0000)
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

index 88f7b8686dac053f5493345b8881f2071afd5301..88bcdba92fa72efa845854ee93a97b4a44ed617a 100644 (file)
@@ -2011,13 +2011,6 @@ int dsa_slave_create(struct dsa_port *port)
        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);
@@ -2028,6 +2021,13 @@ int dsa_slave_create(struct dsa_port *port)
                goto out_gcells;
        }
 
+       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);