Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Feb 2004 23:01:44 -0800 (PST)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 46462 for review
Message-ID:  <200402040701.i1471iax041402@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=46462

Change 46462 by sam@sam_ebb on 2004/02/03 23:01:25

	o mark driver capable of transmit power control
	o complete 11g protection logic by only applying protection
	  for ofdm unicast frames
	o add comment about issue to be dealt with for sending fragments
	o count frames sent with protection
	o disable use of multi-rate retry when applying rts/cts

Affected files ...

.. //depot/projects/netperf+sockets/sys/dev/ath/if_ath.c#27 edit

Differences ...

==== //depot/projects/netperf+sockets/sys/dev/ath/if_ath.c#27 (text+ko) ====

@@ -340,6 +340,7 @@
 		| IEEE80211_C_MONITOR		/* monitor mode */
 		| IEEE80211_C_SHPREAMBLE	/* short preamble supported */
 		| IEEE80211_C_SHSLOT		/* short slot time supported */
+		| IEEE80211_C_TXPMGT		/* transmit power control */
 		| IEEE80211_C_RCVMGT		/* recv management frames */
 		;
 	ic->ic_flags |= IEEE80211_F_DATAPAD;
@@ -2121,18 +2122,20 @@
 	}
 
 	/*
-	 * Determine whether to use RTS/CTS or just CTS for
-	 * 802.11g protection.
-	 * XXX use only before transmitting OFDM, not CCK.
+	 * If 802.11g protection is enabled, determine whether
+	 * to use RTS/CTS or just CTS.  Note that this is only
+	 * done for OFDM unicast frames.
 	 */
 	if ((ic->ic_flags & IEEE80211_F_USEPROT) &&
-	    (ni->ni_flags & IEEE80211_NODE_ERP)) {
+	    rt->info[rix].phy == IEEE80211_T_OFDM &&
+	    (flags & HAL_TXDESC_NOACK) == 0) {
+		/* XXX fragments must use CCK rates w/ protection */
 		if (ic->ic_protmode == IEEE80211_PROT_RTSCTS)
 			flags |= HAL_TXDESC_RTSENA;
 		else if (ic->ic_protmode == IEEE80211_PROT_CTSONLY)
 			flags |= HAL_TXDESC_CTSENA;
 		cix = rt->info[sc->sc_protrix].controlRate;
-		/* XXX statistics */
+		sc->sc_stats.ast_tx_protect++;
 	}
 
 	/*
@@ -2183,6 +2186,10 @@
 			ctsduration += ath_hal_computetxtime(ah,
 				rt, IEEE80211_ACK_SIZE, cix, shortPreamble);
 		}
+		/*
+		 * Must disable multi-rate retry when using RTS/CTS.
+		 */
+		try0 = ATH_TXMAXTRY;
 	} else
 		ctsrate = 0;
 



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