HomeFreeBSD

[urtwn] welcome basic 11n support to urtwn.

Description

[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

Details

Provenance
adrianAuthored on
Parents
rS297174: Build the zfs module on armv6, but not on older arm.
Branches
Unknown
Tags
Unknown