]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Begin tidying up the reassociation and node sleep/wakeup paths.
authorAdrian Chadd <adrian@FreeBSD.org>
Mon, 13 May 2013 18:56:04 +0000 (18:56 +0000)
committerAdrian Chadd <adrian@FreeBSD.org>
Mon, 13 May 2013 18:56:04 +0000 (18:56 +0000)
commit4bed2b67cafb1ddfde99af9b52ca68ace38fd50e
treeba63759b23784cc27963f0fd621aed23f805efcb
parenta92b1688920711afa235550c9688b2e03eb2d1d0
Begin tidying up the reassociation and node sleep/wakeup paths.

* Move the node sleep/wake state under the TX lock rather than the
  node lock.  Let's leave the node lock protecting rate control only
  for now.

* When reassociating, various state needs to be cleared.  For example,
  the aggregate session needs to be torn down, including any pending
  aggregation negotiation and BAR TX waiting.

* .. and we need to do a "cleanup" pass since frames in the hardware
  TX queue need to be transmitted.

Modify ath_tx_tid_cleanup() to be called with the TX lock held and push
frames into a completion list.  This allows for the cleanup to be
done atomically for all TIDs in a node rather than grabbing and
releasing the TX lock each time.
sys/dev/ath/if_ath.c