Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151524272
D47838.id147334.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D47838.id147334.diff
View Options
diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c
--- a/sbin/ifconfig/ifieee80211.c
+++ b/sbin/ifconfig/ifieee80211.c
@@ -135,6 +135,8 @@
#define IEEE80211_FVHT_USEVHT80 0x000000004 /* CONF: Use VHT80 */
#define IEEE80211_FVHT_USEVHT160 0x000000008 /* CONF: Use VHT160 */
#define IEEE80211_FVHT_USEVHT80P80 0x000000010 /* CONF: Use VHT 80+80 */
+#define IEEE80211_FVHT_STBC_TX 0x00000020 /* CONF: STBC tx enabled */
+#define IEEE80211_FVHT_STBC_RX 0x00000040 /* CONF: STBC rx enabled */
#endif
/* Helper macros unified. */
@@ -6038,6 +6040,12 @@
DEF_CMD("-vht160", -IEEE80211_FVHT_USEVHT160, set80211vhtconf),
DEF_CMD("vht80p80", IEEE80211_FVHT_USEVHT80P80, set80211vhtconf),
DEF_CMD("-vht80p80", -IEEE80211_FVHT_USEVHT80P80, set80211vhtconf),
+ DEF_CMD("vhtstbctx", IEEE80211_FVHT_STBC_TX, set80211vhtconf),
+ DEF_CMD("-vhtstbctx", -IEEE80211_FVHT_STBC_TX, set80211vhtconf),
+ DEF_CMD("vhtstbcrx", IEEE80211_FVHT_STBC_RX, set80211vhtconf),
+ DEF_CMD("-vhtstbcrx", -IEEE80211_FVHT_STBC_RX, set80211vhtconf),
+ DEF_CMD("vhtstbc", (IEEE80211_FVHT_STBC_TX|IEEE80211_FVHT_STBC_RX), set80211vhtconf),
+ DEF_CMD("-vhtstbc", -(IEEE80211_FVHT_STBC_TX|IEEE80211_FVHT_STBC_RX), set80211vhtconf),
DEF_CMD("rifs", 1, set80211rifs),
DEF_CMD("-rifs", 0, set80211rifs),
DEF_CMD("smps", IEEE80211_HTCAP_SMPS_ENA, set80211smps),
diff --git a/sys/net80211/ieee80211.c b/sys/net80211/ieee80211.c
--- a/sys/net80211/ieee80211.c
+++ b/sys/net80211/ieee80211.c
@@ -744,6 +744,8 @@
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT80);
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT160);
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT80P80);
+ ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_STBC_TX);
+ ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_STBC_RX);
IEEE80211_UNLOCK(ic);
return 1;
@@ -801,6 +803,8 @@
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT80);
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT160);
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT80P80);
+ ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_STBC_TX);
+ ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_STBC_RX);
/* NB: this handles the bpfdetach done below */
ieee80211_syncflag_ext_locked(ic, IEEE80211_FEXT_BPF);
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c
--- a/sys/net80211/ieee80211_ioctl.c
+++ b/sys/net80211/ieee80211_ioctl.c
@@ -3506,6 +3506,26 @@
else
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80P80);
+ /* Check if we can do STBC TX/RX before changing the setting. */
+ if ((ireq->i_val & IEEE80211_FVHT_STBC_TX) &&
+ ((vap->iv_vht_cap.vht_cap_info & IEEE80211_VHTCAP_TXSTBC) == 0))
+ return EOPNOTSUPP;
+ if ((ireq->i_val & IEEE80211_FVHT_STBC_RX) &&
+ ((vap->iv_vht_cap.vht_cap_info & IEEE80211_VHTCAP_RXSTBC_MASK) == 0))
+ return EOPNOTSUPP;
+
+ /* TX */
+ if (ireq->i_val & IEEE80211_FVHT_STBC_TX)
+ ieee80211_syncflag_vht(vap, IEEE80211_FVHT_STBC_TX);
+ else
+ ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_STBC_TX);
+
+ /* RX */
+ if (ireq->i_val & IEEE80211_FVHT_STBC_RX)
+ ieee80211_syncflag_vht(vap, IEEE80211_FVHT_STBC_RX);
+ else
+ ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_STBC_RX);
+
error = ENETRESET;
break;
diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h
--- a/sys/net80211/ieee80211_var.h
+++ b/sys/net80211/ieee80211_var.h
@@ -737,12 +737,20 @@
#define IEEE80211_FVHT_USEVHT80 0x000000004 /* CONF: Use VHT80 */
#define IEEE80211_FVHT_USEVHT160 0x000000008 /* CONF: Use VHT160 */
#define IEEE80211_FVHT_USEVHT80P80 0x000000010 /* CONF: Use VHT 80+80 */
-#define IEEE80211_FVHT_MASK \
+#define IEEE80211_FVHT_STBC_TX 0x00000020 /* CONF: STBC tx enabled */
+#define IEEE80211_FVHT_STBC_RX 0x00000040 /* CONF: STBC rx enabled */
+
+#define IEEE80211_FVHT_CHANWIDTH_MASK \
(IEEE80211_FVHT_VHT | IEEE80211_FVHT_USEVHT40 | \
IEEE80211_FVHT_USEVHT80 | IEEE80211_FVHT_USEVHT160 | \
IEEE80211_FVHT_USEVHT80P80)
+
+#define IEEE80211_FVHT_MASK \
+ (IEEE80211_FVHT_CHANWIDTH_MASK | \
+ IEEE80211_FVHT_STBC_TX | IEEE80211_FVHT_STBC_RX)
+
#define IEEE80211_VFHT_BITS \
- "\20\1VHT\2VHT40\3VHT80\4VHT160\5VHT80P80"
+ "\20\1VHT\2VHT40\3VHT80\4VHT160\5VHT80P80\6STBC_TX\7STBC_RX"
#define IEEE80211_COM_DETACHED 0x00000001 /* ieee80211_ifdetach called */
#define IEEE80211_COM_REF_ADD 0x00000002 /* add / remove reference */
diff --git a/sys/net80211/ieee80211_vht.c b/sys/net80211/ieee80211_vht.c
--- a/sys/net80211/ieee80211_vht.c
+++ b/sys/net80211/ieee80211_vht.c
@@ -439,8 +439,7 @@
IEEE80211_VHTCAP_RXSTBC_MASK);
}
val = MIN(val1, val2);
- /* XXX For now, use the 11n config flag */
- if ((vap->iv_flags_ht & IEEE80211_FHT_STBC_TX) == 0)
+ if ((vap->iv_vht_flags & IEEE80211_FVHT_STBC_TX) == 0)
val = 0;
new_vhtcap |= _IEEE80211_SHIFTMASK(val, IEEE80211_VHTCAP_TXSTBC);
@@ -453,8 +452,7 @@
IEEE80211_VHTCAP_TXSTBC);
}
val = MIN(val1, val2);
- /* XXX For now, use the 11n config flag */
- if ((vap->iv_flags_ht & IEEE80211_FHT_STBC_RX) == 0)
+ if ((vap->iv_vht_flags & IEEE80211_FVHT_STBC_RX) == 0)
val = 0;
new_vhtcap |= _IEEE80211_SHIFTMASK(val, IEEE80211_VHTCAP_RXSTBC_MASK);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 10, 12:31 AM (21 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31182197
Default Alt Text
D47838.id147334.diff (5 KB)
Attached To
Mode
D47838: net80211: 11ac: add options to manage VHT STBC
Attached
Detach File
Event Timeline
Log In to Comment