diff options
Diffstat (limited to 'drivers/net/ethernet/mscc')
| -rw-r--r-- | drivers/net/ethernet/mscc/ocelot.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/mscc/ocelot_mm.c | 14 | 
2 files changed, 7 insertions, 8 deletions
| diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c index 2fa833d041ba..56ccbd4c37fe 100644 --- a/drivers/net/ethernet/mscc/ocelot.c +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -2927,7 +2927,6 @@ int ocelot_init(struct ocelot *ocelot)  	mutex_init(&ocelot->mact_lock);  	mutex_init(&ocelot->fwd_domain_lock); -	mutex_init(&ocelot->tas_lock);  	spin_lock_init(&ocelot->ptp_clock_lock);  	spin_lock_init(&ocelot->ts_id_lock); diff --git a/drivers/net/ethernet/mscc/ocelot_mm.c b/drivers/net/ethernet/mscc/ocelot_mm.c index fb3145118d68..c815ae64e39d 100644 --- a/drivers/net/ethernet/mscc/ocelot_mm.c +++ b/drivers/net/ethernet/mscc/ocelot_mm.c @@ -67,10 +67,13 @@ void ocelot_port_update_active_preemptible_tcs(struct ocelot *ocelot, int port)  		val = mm->preemptible_tcs;  	/* Cut through switching doesn't work for preemptible priorities, -	 * so first make sure it is disabled. +	 * so first make sure it is disabled. Also, changing the preemptible +	 * TCs affects the oversized frame dropping logic, so that needs to be +	 * re-triggered. And since tas_guard_bands_update() also implicitly +	 * calls cut_through_fwd(), we don't need to explicitly call it.  	 */  	mm->active_preemptible_tcs = val; -	ocelot->ops->cut_through_fwd(ocelot); +	ocelot->ops->tas_guard_bands_update(ocelot, port);  	dev_dbg(ocelot->dev,  		"port %d %s/%s, MM TX %s, preemptible TCs 0x%x, active 0x%x\n", @@ -89,17 +92,14 @@ void ocelot_port_change_fp(struct ocelot *ocelot, int port,  {  	struct ocelot_mm_state *mm = &ocelot->mm[port]; -	mutex_lock(&ocelot->fwd_domain_lock); +	lockdep_assert_held(&ocelot->fwd_domain_lock);  	if (mm->preemptible_tcs == preemptible_tcs) -		goto out_unlock; +		return;  	mm->preemptible_tcs = preemptible_tcs;  	ocelot_port_update_active_preemptible_tcs(ocelot, port); - -out_unlock: -	mutex_unlock(&ocelot->fwd_domain_lock);  }  static void ocelot_mm_update_port_status(struct ocelot *ocelot, int port) |