Page MenuHomeFreeBSD

D43770.diff
No OneTemporary

D43770.diff

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

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)

Event Timeline