slave.c (651a88798412e216f337d70181127e847f00a4b7) slave.c (b2033a05a7197f5ddef617be8f510c9957a82553)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/dsa/slave.c - Slave device handling
4 * Copyright (c) 2008-2009 Marvell Semiconductor
5 */
6
7#include <linux/list.h>
8#include <linux/etherdevice.h>

--- 1794 unchanged lines hidden (view full) ---

1803}
1804
1805int dsa_slave_change_mtu(struct net_device *dev, int new_mtu)
1806{
1807 struct net_device *master = dsa_slave_to_master(dev);
1808 struct dsa_port *dp = dsa_slave_to_port(dev);
1809 struct dsa_slave_priv *p = netdev_priv(dev);
1810 struct dsa_switch *ds = p->dp->ds;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/dsa/slave.c - Slave device handling
4 * Copyright (c) 2008-2009 Marvell Semiconductor
5 */
6
7#include <linux/list.h>
8#include <linux/etherdevice.h>

--- 1794 unchanged lines hidden (view full) ---

1803}
1804
1805int dsa_slave_change_mtu(struct net_device *dev, int new_mtu)
1806{
1807 struct net_device *master = dsa_slave_to_master(dev);
1808 struct dsa_port *dp = dsa_slave_to_port(dev);
1809 struct dsa_slave_priv *p = netdev_priv(dev);
1810 struct dsa_switch *ds = p->dp->ds;
1811 struct dsa_port *dp_iter;
1811 struct dsa_port *other_dp;
1812 struct dsa_port *cpu_dp;
1813 int port = p->dp->index;
1814 int largest_mtu = 0;
1815 int new_master_mtu;
1816 int old_master_mtu;
1817 int mtu_limit;
1818 int cpu_mtu;
1819 int err;
1820
1821 if (!ds->ops->port_change_mtu)
1822 return -EOPNOTSUPP;
1823
1812 struct dsa_port *cpu_dp;
1813 int port = p->dp->index;
1814 int largest_mtu = 0;
1815 int new_master_mtu;
1816 int old_master_mtu;
1817 int mtu_limit;
1818 int cpu_mtu;
1819 int err;
1820
1821 if (!ds->ops->port_change_mtu)
1822 return -EOPNOTSUPP;
1823
1824 list_for_each_entry(dp_iter, &ds->dst->ports, list) {
1824 dsa_tree_for_each_user_port(other_dp, ds->dst) {
1825 int slave_mtu;
1826
1825 int slave_mtu;
1826
1827 if (!dsa_port_is_user(dp_iter))
1828 continue;
1829
1830 /* During probe, this function will be called for each slave
1831 * device, while not all of them have been allocated. That's
1832 * ok, it doesn't change what the maximum is, so ignore it.
1833 */
1827 /* During probe, this function will be called for each slave
1828 * device, while not all of them have been allocated. That's
1829 * ok, it doesn't change what the maximum is, so ignore it.
1830 */
1834 if (!dp_iter->slave)
1831 if (!other_dp->slave)
1835 continue;
1836
1837 /* Pretend that we already applied the setting, which we
1838 * actually haven't (still haven't done all integrity checks)
1839 */
1832 continue;
1833
1834 /* Pretend that we already applied the setting, which we
1835 * actually haven't (still haven't done all integrity checks)
1836 */
1840 if (dp_iter == dp)
1837 if (dp == other_dp)
1841 slave_mtu = new_mtu;
1842 else
1838 slave_mtu = new_mtu;
1839 else
1843 slave_mtu = dp_iter->slave->mtu;
1840 slave_mtu = other_dp->slave->mtu;
1844
1845 if (largest_mtu < slave_mtu)
1846 largest_mtu = slave_mtu;
1847 }
1848
1849 cpu_dp = dsa_to_port(ds, port)->cpu_dp;
1850
1851 mtu_limit = min_t(int, master->max_mtu, dev->max_mtu);

--- 1210 unchanged lines hidden ---
1841
1842 if (largest_mtu < slave_mtu)
1843 largest_mtu = slave_mtu;
1844 }
1845
1846 cpu_dp = dsa_to_port(ds, port)->cpu_dp;
1847
1848 mtu_limit = min_t(int, master->max_mtu, dev->max_mtu);

--- 1210 unchanged lines hidden ---