Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2014 05:19:45 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r264798 - head/sys/dev/ath
Message-ID:  <201404230519.s3N5Jj5E036503@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Wed Apr 23 05:19:45 2014
New Revision: 264798
URL: http://svnweb.freebsd.org/changeset/base/264798

Log:
  Wrap the rate control re-init code in a lock, to serialise it with
  concurrent updates from any completing transmits in other threads.
  
  This was exposed when doing power save work - net80211 is constantly
  doing reassociations and it's causing the rate control state to get
  blanked out.  This could cause the rate control code to assert.
  
  This should be MFCed to stable/10 as it's a stability fix.
  
  Tested:
  
  * AR5416, STA
  
  MFC after:	7 days

Modified:
  head/sys/dev/ath/if_ath.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Wed Apr 23 03:30:00 2014	(r264797)
+++ head/sys/dev/ath/if_ath.c	Wed Apr 23 05:19:45 2014	(r264798)
@@ -5567,7 +5567,9 @@ ath_newassoc(struct ieee80211_node *ni, 
 	an->an_mcastrix = ath_tx_findrix(sc, tp->mcastrate);
 	an->an_mgmtrix = ath_tx_findrix(sc, tp->mgmtrate);
 
+	ATH_NODE_LOCK(an);
 	ath_rate_newassoc(sc, an, isnew);
+	ATH_NODE_UNLOCK(an);
 
 	if (isnew &&
 	    (vap->iv_flags & IEEE80211_F_PRIVACY) == 0 && sc->sc_hasclrkey &&



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404230519.s3N5Jj5E036503>