slave.c (b3c9a04135bdbd3aabd5e9534bad0fe6df505f8a) slave.c (636e8adf7878eab3614250234341bde45537f47a)
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>

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

1928 struct dsa_port *dp = dsa_slave_to_port(dev);
1929 struct dsa_port *cpu_dp = dp->cpu_dp;
1930 struct dsa_switch *ds = dp->ds;
1931 struct dsa_port *other_dp;
1932 int largest_mtu = 0;
1933 int new_master_mtu;
1934 int old_master_mtu;
1935 int mtu_limit;
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>

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

1928 struct dsa_port *dp = dsa_slave_to_port(dev);
1929 struct dsa_port *cpu_dp = dp->cpu_dp;
1930 struct dsa_switch *ds = dp->ds;
1931 struct dsa_port *other_dp;
1932 int largest_mtu = 0;
1933 int new_master_mtu;
1934 int old_master_mtu;
1935 int mtu_limit;
1936 int overhead;
1936 int cpu_mtu;
1937 int err;
1938
1939 if (!ds->ops->port_change_mtu)
1940 return -EOPNOTSUPP;
1941
1942 dsa_tree_for_each_user_port(other_dp, ds->dst) {
1943 int slave_mtu;

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

1956 slave_mtu = new_mtu;
1957 else
1958 slave_mtu = other_dp->slave->mtu;
1959
1960 if (largest_mtu < slave_mtu)
1961 largest_mtu = slave_mtu;
1962 }
1963
1937 int cpu_mtu;
1938 int err;
1939
1940 if (!ds->ops->port_change_mtu)
1941 return -EOPNOTSUPP;
1942
1943 dsa_tree_for_each_user_port(other_dp, ds->dst) {
1944 int slave_mtu;

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

1957 slave_mtu = new_mtu;
1958 else
1959 slave_mtu = other_dp->slave->mtu;
1960
1961 if (largest_mtu < slave_mtu)
1962 largest_mtu = slave_mtu;
1963 }
1964
1964 mtu_limit = min_t(int, master->max_mtu, dev->max_mtu);
1965 overhead = dsa_tag_protocol_overhead(cpu_dp->tag_ops);
1966 mtu_limit = min_t(int, master->max_mtu, dev->max_mtu + overhead);
1965 old_master_mtu = master->mtu;
1967 old_master_mtu = master->mtu;
1966 new_master_mtu = largest_mtu + dsa_tag_protocol_overhead(cpu_dp->tag_ops);
1968 new_master_mtu = largest_mtu + overhead;
1967 if (new_master_mtu > mtu_limit)
1968 return -ERANGE;
1969
1970 /* If the master MTU isn't over limit, there's no need to check the CPU
1971 * MTU, since that surely isn't either.
1972 */
1973 cpu_mtu = largest_mtu;
1974

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

1993 dev->mtu = new_mtu;
1994
1995 dsa_bridge_mtu_normalization(dp);
1996
1997 return 0;
1998
1999out_port_failed:
2000 if (new_master_mtu != old_master_mtu)
1969 if (new_master_mtu > mtu_limit)
1970 return -ERANGE;
1971
1972 /* If the master MTU isn't over limit, there's no need to check the CPU
1973 * MTU, since that surely isn't either.
1974 */
1975 cpu_mtu = largest_mtu;
1976

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

1995 dev->mtu = new_mtu;
1996
1997 dsa_bridge_mtu_normalization(dp);
1998
1999 return 0;
2000
2001out_port_failed:
2002 if (new_master_mtu != old_master_mtu)
2001 dsa_port_mtu_change(cpu_dp, old_master_mtu -
2002 dsa_tag_protocol_overhead(cpu_dp->tag_ops));
2003 dsa_port_mtu_change(cpu_dp, old_master_mtu - overhead);
2003out_cpu_failed:
2004 if (new_master_mtu != old_master_mtu)
2005 dev_set_mtu(master, old_master_mtu);
2006out_master_failed:
2007 return err;
2008}
2009
2010static int __maybe_unused

--- 1565 unchanged lines hidden ---
2004out_cpu_failed:
2005 if (new_master_mtu != old_master_mtu)
2006 dev_set_mtu(master, old_master_mtu);
2007out_master_failed:
2008 return err;
2009}
2010
2011static int __maybe_unused

--- 1565 unchanged lines hidden ---