Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F137927772
D22840.id72100.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D22840.id72100.diff
View Options
Index: dev/usb/wlan/if_run.c
===================================================================
--- dev/usb/wlan/if_run.c
+++ dev/usb/wlan/if_run.c
@@ -808,6 +812,19 @@
IEEE80211_C_WME | /* WME */
IEEE80211_C_WPA; /* WPA1|WPA2(RSN) */
+#ifdef IF_RUN_11N
+ /* set device HT capabilities */
+ /* HT Capabilities strictly for 11ng (we dont support 11ac yet..) */
+
+ // hardcoded for now (pcap from rt2x00)
+ // These can be converted to the actual bitset using IEEE80211_HTC_XXX
+ uint16_t cap80211 = 0x03fe;
+
+ ic->ic_htcaps =
+ IEEE80211_HTC_HT | IEEE80211_HTC_AMPDU | IEEE80211_HTC_RXMCS32 | cap80211;
+ ic->ic_rxstream = 3;
+ ic->ic_txstream = 3;
+#endif
ic->ic_cryptocaps =
IEEE80211_CRYPTO_WEP |
IEEE80211_CRYPTO_AES_CCM |
@@ -972,6 +1007,11 @@
vap->iv_update_beacon = run_update_beacon;
vap->iv_max_aid = RT2870_WCID_MAX;
+#ifdef IF_RUN_11N
+ vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K;
+ vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_2;
+#endif
+
/*
* To delete the right key from h/w, we need wcid.
* Luckily, there is unused space in ieee80211_key{}, wk_pad,
@@ -4847,11 +4889,19 @@
{
struct run_softc *sc = ic->ic_softc;
uint8_t bands[IEEE80211_MODE_BYTES];
+ int ht40 = 0;
memset(bands, 0, sizeof(bands));
+
+#ifdef IF_RUN_11N
+ setbit(bands, IEEE80211_MODE_11NG);
+ setbit(bands, IEEE80211_MODE_11G);
+ ht40 = 1;
+#else
setbit(bands, IEEE80211_MODE_11B);
setbit(bands, IEEE80211_MODE_11G);
- ieee80211_add_channels_default_2ghz(chans, maxchans, nchans, bands, 0);
+#endif
+ ieee80211_add_channels_default_2ghz(chans, maxchans, nchans, bands, ht40);
if (sc->rf_rev == RT2860_RF_2750 || sc->rf_rev == RT2860_RF_2850 ||
sc->rf_rev == RT3070_RF_3052 || sc->rf_rev == RT3593_RF_3053 ||
@@ -4858,7 +4908,7 @@
sc->rf_rev == RT5592_RF_5592) {
setbit(bands, IEEE80211_MODE_11A);
ieee80211_add_channel_list_5ghz(chans, maxchans, nchans,
- run_chan_5ghz, nitems(run_chan_5ghz), bands, 0);
+ run_chan_5ghz, nitems(run_chan_5ghz), bands, ht40);
}
}
Index: net80211/ieee80211_ht.c
===================================================================
--- net80211/ieee80211_ht.c
+++ net80211/ieee80211_ht.c
@@ -2994,8 +2992,14 @@
txparams |= (ic->ic_txstream - 1) << 2; /* num TX streams */
if (ic->ic_htcaps & IEEE80211_HTC_TXUNEQUAL)
txparams |= 0x16; /* TX unequal modulation sup */
- } else
- txparams = 0;
+ } else {
+ /* lrx337 XXX: This was 0, but changed to 1 in order to mimic rt2x00 behavior.
+ Shouldn't this if else block take into consideration other htcaps like
+ IEEE80211_HTC_TXMCS32 for setting txparams = 0x1 and then check if the
+ num streams are equal for TX RX MCS not equal (is it enough to check the
+ num rx / tx streams to conclude that MCS sets are unequal?). */
+ txparams = 0x1;
+ }
frm[12] = txparams;
}
Index: net80211/ieee80211_output.c
===================================================================
--- net80211/ieee80211_output.c
+++ net80211/ieee80211_output.c
@@ -2415,6 +2415,18 @@
frm = ieee80211_add_htcap_ch(frm, vap, c);
}
+ if ((vap->iv_opmode == IEEE80211_M_STA) && (vap->iv_flags_ht & IEEE80211_FHT_HT)) {
+ struct ieee80211_channel *c;
+
+ /*
+ * Get the HT channel that we should try upgrading to.
+ * If we can do 40MHz then this'll upgrade it appropriately.
+ */
+ c = ieee80211_ht_adjust_channel(ic, ic->ic_curchan,
+ vap->iv_flags_ht);
+ frm = ieee80211_add_htcap_ch(frm, vap, c);
+ }
+
/*
* XXX TODO: need to figure out what/how to update the
* VHT channel.
Index: sys/conf/NOTES
===================================================================
--- sys/conf/NOTES
+++ sys/conf/NOTES
@@ -2899,3 +2899,6 @@
# Kernel support for stats(3).
options STATS
+
+# Enable (experimental) 11n support for the run(4) driver
+options IF_RUN_11N
Index: sys/conf/options
===================================================================
--- sys/conf/options
+++ sys/conf/options
@@ -1035,3 +1035,6 @@
# gcov support
GCOV opt_global.h
LINDEBUGFS
+
+# 11n support for run(4) driver
+IF_RUN_11N opt_run_11n.h
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 28, 8:33 AM (11 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26278688
Default Alt Text
D22840.id72100.diff (4 KB)
Attached To
Mode
D22840: Add HTCAPS for run(4)
Attached
Detach File
Event Timeline
Log In to Comment