[urtwn] welcome basic 11n support to urtwn.
This is a pretty good reference for teaching an almost-11n-capable
driver about 11n.
It enables HT20 operation, A-MPDU/A-MSDU RX, but no aggregate support
for transmit. That'll come later. This means that receive throughput
should be higher, but transmit throughput won't have changed much.
- Disable bgscan - for now, bgscan will interfere with AMPDU TX/RX, so until we correctly handle it in software driven scans, disable.
- Add null 11n methods for channel width / ampdu_enable. the firmware can apparently handle ampdu tx (and hopefully block-ack handling and retransmission) so I'll go review the linux code and figure it out.
- Set the number of tx/rx streams. I /hope/ that nchains == nstreams here.
- Add 11n channels in the call to ieee80211_init_channels().
- Don't enable HT40 for now - I'll have to verify the channel set command and tidy it up a bit first.
- Teach the RX path about M_AMPDU for 11n nodes. Kinda wonder why we aren't just doing this in net80211 already, this is the fourth driver I've had to do this to.
- Teach rate2ridx() about MCS rates and what hardware rates to use.
- Teach the urtwn_tx_data() routine about MCS/11ng transmission. It doesn't know about short-gi and 40MHz modes yet; that'll come later.
- For 8192CU firmware, teach the rate table code about MCS rates.
- Ensure that the fixed rate transmit sets the right transmit flag so the firmware obeys the driver transmit path.
- Set the default transmit rate to MCS4 if no rate control is available.
- Add HT protection (RTS-CTS exchange) support.
- Add appropriate XXX TODO entries.
TODO:
- 40MHz, short-gi, etc - channel tuning, TX, RX;
- teach urtwn_tx_raw() about (more) 11n stuff;
- A-MPDU TX would be nice!
Thanks to Andriy (avos@) for reviewing the code and testing it on IRC.
Tested:
- RTL8188EU - STA (me)
- RTL8192CU - STA (me)
- RTL8188EU - hostap (avos)
- RTL8192CU - STA (avos)
Reviewed by: avos