Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Feb 2011 04:41:05 +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: r218935 - head/sys/dev/ath
Message-ID:  <201102220441.p1M4f5Ht094186@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Tue Feb 22 04:41:04 2011
New Revision: 218935
URL: http://svn.freebsd.org/changeset/base/218935

Log:
  Don't set the RTS/CTS enable bit per-scenario if the global RTS/CTS
  flags aren't set.

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

Modified: head/sys/dev/ath/if_ath_tx_ht.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx_ht.c	Tue Feb 22 04:07:15 2011	(r218934)
+++ head/sys/dev/ath/if_ath_tx_ht.c	Tue Feb 22 04:41:04 2011	(r218935)
@@ -96,7 +96,7 @@ __FBSDID("$FreeBSD$");
 static void
 ath_rateseries_setup(struct ath_softc *sc, struct ieee80211_node *ni,
     HAL_11N_RATE_SERIES *series, unsigned int pktlen, uint8_t *rix,
-    uint8_t *try)
+    uint8_t *try, int flags)
 {
 	struct ieee80211com *ic = ni->ni_ic;
 	struct ath_hal *ah = sc->sc_ah;
@@ -125,12 +125,7 @@ ath_rateseries_setup(struct ath_softc *s
 		 */
 		series[i].ChSel = sc->sc_txchainmask;
 
-		/*
-		 * This merely enables RTS or RTS/CTS for the given scenario;
-		 * it needs to be enabled elsewhere.
-		 */
-		if (ic->ic_protmode == IEEE80211_PROT_RTSCTS ||
-		    ic->ic_protmode == IEEE80211_PROT_CTSONLY)
+		if (flags & (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA))
 			series[i].RateFlags |= HAL_RATESERIES_RTS_CTS;
 
 		if (ni->ni_htcap & IEEE80211_HTCAP_CHWIDTH40)
@@ -201,7 +196,7 @@ ath_buf_set_rate(struct ath_softc *sc, s
 	/* Setup rate scenario */
 	memset(&series, 0, sizeof(series));
 
-	ath_rateseries_setup(sc, ni, series, pktlen, rix, try);
+	ath_rateseries_setup(sc, ni, series, pktlen, rix, try, flags);
 
 	/* Enforce AR5416 aggregate limit - can't do RTS w/ an agg frame > 8k */
 
@@ -210,6 +205,11 @@ ath_buf_set_rate(struct ath_softc *sc, s
 	/* Get a pointer to the last tx descriptor in the list */
 	lastds = &bf->bf_desc[bf->bf_nseg - 1];
 
+#if 0
+	printf("pktlen: %d; flags 0x%x\n", pktlen, flags);
+	ath_rateseries_print(series);
+#endif
+
 	/* Set rate scenario */
 	ath_hal_set11nratescenario(ah, ds,
 	    !is_pspoll,	/* whether to override the duration or not */



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