diff options
author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2023-07-05 13:44:20 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-07-06 19:10:22 -0700 |
commit | 009d30f1a77795014f151ba317fcbfc2f17153c6 (patch) | |
tree | 457ca561c323ab36e13b4394bab66ad0e440621c /drivers/net/dsa/ocelot/felix.c | |
parent | ceb20a3cc52611cb84d164f03e466f64b4ed9fb4 (diff) | |
download | linux-009d30f1a77795014f151ba317fcbfc2f17153c6.tar.gz linux-009d30f1a77795014f151ba317fcbfc2f17153c6.tar.bz2 linux-009d30f1a77795014f151ba317fcbfc2f17153c6.zip |
net: mscc: ocelot: extend ocelot->fwd_domain_lock to cover ocelot->tas_lock
In a future commit we will have to call vsc9959_tas_guard_bands_update()
from ocelot_port_update_active_preemptible_tcs(), and that will be
impossible due to the AB/BA locking dependencies between
ocelot->tas_lock and ocelot->fwd_domain_lock.
Just like we did in commit 3ff468ef987e ("net: mscc: ocelot: remove
struct ocelot_mm_state :: lock"), the only solution is to expand the
scope of ocelot->fwd_domain_lock for it to also serialize changes made
to the Time-Aware Shaper, because those will have to result in a
recalculation of cut-through TCs, which is something that depends on the
forwarding domain.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Message-ID: <20230705104422.49025-2-vladimir.oltean@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/dsa/ocelot/felix.c')
-rw-r--r-- | drivers/net/dsa/ocelot/felix.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 70c0e2b1936b..0c1207613aa4 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -1790,12 +1790,12 @@ static int felix_change_mtu(struct dsa_switch *ds, int port, int new_mtu) ocelot_port_set_maxlen(ocelot, port, new_mtu); - mutex_lock(&ocelot->tas_lock); + mutex_lock(&ocelot->fwd_domain_lock); if (ocelot_port->taprio && felix->info->tas_guard_bands_update) felix->info->tas_guard_bands_update(ocelot, port); - mutex_unlock(&ocelot->tas_lock); + mutex_unlock(&ocelot->fwd_domain_lock); return 0; } |