Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146220276
D43770.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
D43770.diff
View Options
diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c
--- a/sys/dev/iwn/if_iwn.c
+++ b/sys/dev/iwn/if_iwn.c
@@ -6660,7 +6660,7 @@
if (IEEE80211_IS_CHAN_HT40(c)) {
switch (vap->iv_curhtprotmode) {
- case IEEE80211_HTINFO_OPMODE_HT20PR:
+ case IEEE80211_HTINFO_OPMODE_PROTECTION_20MHZ:
htflags |= IWN_RXON_HT_MODEPURE40;
break;
default:
diff --git a/sys/net80211/ieee80211.h b/sys/net80211/ieee80211.h
--- a/sys/net80211/ieee80211.h
+++ b/sys/net80211/ieee80211.h
@@ -3,6 +3,10 @@
*
* Copyright (c) 2001 Atsushi Onoe
* Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
+ * Copyright (c) 2024 The FreeBSD Foundation
+ *
+ * Portions of this software were developed by Cheng Cui
+ * <cc@FreeBSD.org> under sponsorship from the FreeBSD Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -801,12 +805,14 @@
/* XXX add rest */
/* bytes 2+3 */
-#define IEEE80211_HTINFO_OPMODE 0x03 /* operating mode */
+/* 802.11-2012, Table 8-130-HT Operation element fields and subfields, HT Protection */
+#define IEEE80211_HTINFO_OPMODE 0x03 /* operating mode mask */
#define IEEE80211_HTINFO_OPMODE_S 0
-#define IEEE80211_HTINFO_OPMODE_PURE 0x00 /* no protection */
-#define IEEE80211_HTINFO_OPMODE_PROTOPT 0x01 /* protection optional */
-#define IEEE80211_HTINFO_OPMODE_HT20PR 0x02 /* protection for HT20 sta's */
-#define IEEE80211_HTINFO_OPMODE_MIXED 0x03 /* protection for legacy sta's*/
+#define IEEE80211_HTINFO_OPMODE_PROTECTION_NONE 0 /* for no protection mode */
+#define IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER 1 /* for nonmember protection mode */
+#define IEEE80211_HTINFO_OPMODE_PROTECTION_20MHZ 2 /* for 20 MHz protection mode */
+#define IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED 3 /* for non-HT mixed mode */
+
#define IEEE80211_HTINFO_NONGF_PRESENT 0x04 /* non-GF sta's present */
#define IEEE80211_HTINFO_TXBL 0x08 /* transmit burst limit */
#define IEEE80211_HTINFO_NONHT_PRESENT 0x10 /* non-HT sta's present */
diff --git a/sys/net80211/ieee80211_hostap.c b/sys/net80211/ieee80211_hostap.c
--- a/sys/net80211/ieee80211_hostap.c
+++ b/sys/net80211/ieee80211_hostap.c
@@ -2,6 +2,10 @@
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
+ * Copyright (c) 2024 The FreeBSD Foundation
+ *
+ * Portions of this software were developed by Cheng Cui
+ * <cc@FreeBSD.org> under sponsorship from the FreeBSD Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -1735,7 +1739,7 @@
const struct ieee80211_ie_htinfo *ht =
(const struct ieee80211_ie_htinfo *) ie;
return (ht->hi_byte2 & IEEE80211_HTINFO_OPMODE) ==
- IEEE80211_HTINFO_OPMODE_MIXED;
+ IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED;
}
static int
@@ -1865,12 +1869,12 @@
}
if (scan.htinfo == NULL) {
ieee80211_htprot_update(vap,
- IEEE80211_HTINFO_OPMODE_PROTOPT |
+ IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER |
IEEE80211_HTINFO_NONHT_PRESENT);
} else if (ishtmixed(scan.htinfo)) {
/* XXX? take NONHT_PRESENT from beacon? */
ieee80211_htprot_update(vap,
- IEEE80211_HTINFO_OPMODE_MIXED |
+ IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED |
IEEE80211_HTINFO_NONHT_PRESENT);
}
}
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c
--- a/sys/net80211/ieee80211_ht.c
+++ b/sys/net80211/ieee80211_ht.c
@@ -2,6 +2,10 @@
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
+ * Copyright (c) 2024 The FreeBSD Foundation
+ *
+ * Portions of this software were developed by Cheng Cui
+ * <cc@FreeBSD.org> under sponsorship from the FreeBSD Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -238,7 +242,7 @@
ic->ic_ampdu_rx_stop = ampdu_rx_stop;
ic->ic_htprotmode = IEEE80211_PROT_RTSCTS;
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PURE;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONE;
}
void
@@ -262,7 +266,7 @@
vap->iv_ampdu_mintraffic[WME_AC_VI] = 32;
vap->iv_htprotmode = IEEE80211_PROT_RTSCTS;
- vap->iv_curhtprotmode = IEEE80211_HTINFO_OPMODE_PURE;
+ vap->iv_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONE;
if (vap->iv_htcaps & IEEE80211_HTC_HT) {
/*
@@ -1546,17 +1550,17 @@
uint8_t protmode;
if (vap->iv_sta_assoc != vap->iv_ht_sta_assoc) {
- protmode = IEEE80211_HTINFO_OPMODE_MIXED
+ protmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED
| IEEE80211_HTINFO_NONHT_PRESENT;
} else if (vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) {
- protmode = IEEE80211_HTINFO_OPMODE_PROTOPT
+ protmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER
| IEEE80211_HTINFO_NONHT_PRESENT;
} else if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
IEEE80211_IS_CHAN_HT40(ic->ic_bsschan) &&
vap->iv_sta_assoc != vap->iv_ht40_sta_assoc) {
- protmode = IEEE80211_HTINFO_OPMODE_HT20PR;
+ protmode = IEEE80211_HTINFO_OPMODE_PROTECTION_20MHZ;
} else {
- protmode = IEEE80211_HTINFO_OPMODE_PURE;
+ protmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONE;
}
if (protmode != vap->iv_curhtprotmode) {
vap->iv_curhtprotmode = protmode;
@@ -1605,9 +1609,9 @@
* Public version of htinfo_update; used for processing
* beacon frames from overlapping bss.
*
- * Caller can specify either IEEE80211_HTINFO_OPMODE_MIXED
+ * Caller can specify either IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED
* (on receipt of a beacon that advertises MIXED) or
- * IEEE80211_HTINFO_OPMODE_PROTOPT (on receipt of a beacon
+ * IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER (on receipt of a beacon
* from an overlapping legacy bss). We treat MIXED with
* a higher precedence than PROTOPT (i.e. we will not change
* change PROTOPT -> MIXED; only MIXED -> PROTOPT). This
@@ -1628,8 +1632,8 @@
vap->iv_lastnonht = ticks;
if (protmode != vap->iv_curhtprotmode &&
- (OPMODE(vap->iv_curhtprotmode) != IEEE80211_HTINFO_OPMODE_MIXED ||
- OPMODE(protmode) == IEEE80211_HTINFO_OPMODE_PROTOPT)) {
+ (OPMODE(vap->iv_curhtprotmode) != IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED ||
+ OPMODE(protmode) == IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER)) {
vap->iv_curhtprotmode = protmode;
/* Update VAP with new protection mode */
ieee80211_vap_update_ht_protmode(vap);
diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c
--- a/sys/net80211/ieee80211_proto.c
+++ b/sys/net80211/ieee80211_proto.c
@@ -4,6 +4,10 @@
* Copyright (c) 2001 Atsushi Onoe
* Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
* Copyright (c) 2012 IEEE
+ * Copyright (c) 2024 The FreeBSD Foundation
+ *
+ * Portions of this software were developed by Cheng Cui
+ * <cc@FreeBSD.org> under sponsorship from the FreeBSD Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -1095,13 +1099,13 @@
if (iv->iv_curhtprotmode & IEEE80211_HTINFO_NONHT_PRESENT)
num_nonhtpr++;
switch (iv->iv_curhtprotmode & IEEE80211_HTINFO_OPMODE) {
- case IEEE80211_HTINFO_OPMODE_PURE:
+ case IEEE80211_HTINFO_OPMODE_PROTECTION_NONE:
num_pure++;
break;
- case IEEE80211_HTINFO_OPMODE_PROTOPT:
+ case IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER:
num_optional++;
break;
- case IEEE80211_HTINFO_OPMODE_HT20PR:
+ case IEEE80211_HTINFO_OPMODE_PROTECTION_20MHZ:
num_ht2040++;
break;
}
@@ -1143,13 +1147,13 @@
* non HT40-involved combination of opmode and this is the most
* sensible default.
*/
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_MIXED;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED;
if (num_pure == num_vaps)
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PURE;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONE;
if (num_optional == num_vaps)
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTOPT;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONMEMBER;
/*
* Note: we need /a/ HT40 station somewhere for this to
@@ -1158,14 +1162,14 @@
if ((num_ht2040 > 0) ||
((num_ht_sta > 0) && (num_ht40_sta > 0) &&
(num_ht_sta != num_ht40_sta)))
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_HT20PR;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_20MHZ;
/*
* Step 3 - if any of the stations across the VAPs are
* non-HT then this needs to be flipped back to MIXED.
*/
if (num_ht_sta != num_sta)
- ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_MIXED;
+ ic->ic_curhtprotmode = IEEE80211_HTINFO_OPMODE_PROTECTION_NONHT_MIXED;
/*
* Step 4 - If we see any overlapping BSS non-HT stations
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 1, 8:58 PM (11 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29117325
Default Alt Text
D43770.diff (8 KB)
Attached To
Mode
D43770: Rename HT Operation Protection micros to represent the state of the art.
Attached
Detach File
Event Timeline
Log In to Comment