Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jun 2012 08:00:29 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-wireless@FreeBSD.org
Subject:   Re: kern/169432: commit references a PR
Message-ID:  <201206260800.q5Q80Tls054640@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/169432; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/169432: commit references a PR
Date: Tue, 26 Jun 2012 07:56:32 +0000 (UTC)

 Author: adrian
 Date: Tue Jun 26 07:56:15 2012
 New Revision: 237593
 URL: http://svn.freebsd.org/changeset/base/237593
 
 Log:
   Make sure the BAR TX session pause is correctly unpaused when a node
   is reassociating.
   
   PR:		kern/169432
 
 Modified:
   head/sys/dev/ath/if_ath_tx.c
 
 Modified: head/sys/dev/ath/if_ath_tx.c
 ==============================================================================
 --- head/sys/dev/ath/if_ath_tx.c	Tue Jun 26 06:02:43 2012	(r237592)
 +++ head/sys/dev/ath/if_ath_tx.c	Tue Jun 26 07:56:15 2012	(r237593)
 @@ -4330,6 +4330,9 @@ ath_addba_response(struct ieee80211_node
  
  /*
   * Stop ADDBA on a queue.
 + *
 + * This can be called whilst BAR TX is currently active on the queue,
 + * so make sure this is unblocked before continuing.
   */
  void
  ath_addba_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
 @@ -4341,9 +4344,21 @@ ath_addba_stop(struct ieee80211_node *ni
  
  	DPRINTF(sc, ATH_DEBUG_SW_TX_CTRL, "%s: called\n", __func__);
  
 -	/* Pause TID traffic early, so there aren't any races */
 +	/*
 +	 * Pause TID traffic early, so there aren't any races
 +	 * Unblock the pending BAR held traffic, if it's currently paused.
 +	 */
  	ATH_TXQ_LOCK(sc->sc_ac2q[atid->ac]);
  	ath_tx_tid_pause(sc, atid);
 +	if (atid->bar_wait) {
 +		/*
 +		 * bar_unsuspend() expects bar_tx == 1, as it should be
 +		 * called from the TX completion path.  This quietens
 +		 * the warning.  It's cleared for us anyway.
 +		 */
 +		atid->bar_tx = 1;
 +		ath_tx_tid_bar_unsuspend(sc, atid);
 +	}
  	ATH_TXQ_UNLOCK(sc->sc_ac2q[atid->ac]);
  
  	/* There's no need to hold the TXQ lock here */
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



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