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 --- |