svn commit: r254279 - head/sys/dev/bwi

Adrian Chadd adrian at FreeBSD.org
Tue Aug 13 09:58:28 UTC 2013


Author: adrian
Date: Tue Aug 13 09:58:27 2013
New Revision: 254279
URL: http://svnweb.freebsd.org/changeset/base/254279

Log:
  ieee80211_rate2plcp() and ieee80211_rate2phytype() are both pre-11n
  routines and thus assert if one passes in a rate code with the
  high bit set.
  
  Since the high bit can indicate either IEEE80211_RATE_BASIC or
  IEEE80211_RATE_MCS, it's up to the caller to determine whether
  the rate is 11n or not, and either mask out the BASIC bit, or
  call a different function.
  
  (Yes, this does mean that net80211 should grow 11n-aware rate2phytype()
  and rate2plcp() functions..)
  
  This may need to happen for the other drivers - it's currently only
  done (now) for iwn(4) and bwi(4).
  
  PR:		kern/181100

Modified:
  head/sys/dev/bwi/bwimac.c

Modified: head/sys/dev/bwi/bwimac.c
==============================================================================
--- head/sys/dev/bwi/bwimac.c	Tue Aug 13 09:06:18 2013	(r254278)
+++ head/sys/dev/bwi/bwimac.c	Tue Aug 13 09:58:27 2013	(r254279)
@@ -1427,7 +1427,8 @@ bwi_mac_set_ackrates(struct bwi_mac *mac
 		enum ieee80211_phytype modtype;
 		uint16_t ofs;
 
-		modtype = ieee80211_rate2phytype(rt, rs->rs_rates[i]);
+		modtype = ieee80211_rate2phytype(rt,
+		    rs->rs_rates[i] & IEEE80211_RATE_VAL);
 		switch (modtype) {
 		case IEEE80211_T_DS:
 			ofs = 0x4c0;
@@ -1438,7 +1439,9 @@ bwi_mac_set_ackrates(struct bwi_mac *mac
 		default:
 			panic("unsupported modtype %u\n", modtype);
 		}
-		ofs += 2*(ieee80211_rate2plcp(rs->rs_rates[i], modtype) & 0xf);
+		ofs += 2*(ieee80211_rate2plcp(
+		    rs->rs_rates[i] & IEEE80211_RATE_VAL,
+		    modtype) & 0xf);
 
 		MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, ofs + 0x20,
 			     MOBJ_READ_2(mac, BWI_COMM_MOBJ, ofs));


More information about the svn-src-head mailing list