[802.11] Fix sequence number fields in ieee80211.h
authorJoshua Oreman <oremanj@xenon.get-linux.org>
Mon, 8 Jun 2009 06:35:32 +0000 (23:35 -0700)
committerJoshua Oreman <oremanj@xenon.get-linux.org>
Mon, 8 Jun 2009 06:35:32 +0000 (23:35 -0700)
The IEEE 802.11 documentation confusingly diagrams the LSB of a field to the
left of the page; this had caused me to reverse the order of the seqnr and
fragment fields in the Sequence Control field in 802.11 frame headers.

src/include/gpxe/ieee80211.h

index 0b5092a..911c7a8 100644 (file)
@@ -72,8 +72,9 @@ FILE_LICENCE(GPL2_OR_LATER);
 #define IEEE80211_FC_ORDER      0x8000 /* "StrictlyOrdered service class" */
 
 /* Parts of Sequence Control field, ieee80211_frame.seq: */
-#define IEEE80211_SEQNR(seq)    ((seq) & 0x0FFF)
-#define IEEE80211_FRAG(seq)     (((seq) >> 12) & 0xF)
+#define IEEE80211_SEQNR(seq)    ((seq) >> 4)
+#define IEEE80211_FRAG(seq)     ((seq) & 0x000F)
+#define IEEE80211_MAKESEQ(seqnr,frag) ((((seqnr) & 0xFFF) << 4) | ((frag) & 0xF))
 
 /* Generic data or management frame - non-QoS, not between APs. */
 struct ieee80211_frame