CFT: 11n support for iwn(4)

Brandon Gooch jamesbrandongooch at gmail.com
Mon May 2 07:34:33 UTC 2011


2011/5/2 Bernhard Schmidt <bschmidt at freebsd.org>:
> On Sunday, May 01, 2011 23:36:56 Brandon Gooch wrote:
>> On Sun, May 1, 2011 at 8:24 AM, Bernhard Schmidt <bschmidt at freebsd.org> wrote:
>> > On Sunday 01 May 2011 13:19:30 Bernhard Schmidt wrote:
>> >> Hi,
>> >>
>> >> I finally managed to get the 11n bits for iwn(4) sorted out. Well,
>> >> there is still an issue somewhere with HT40 frame protection or
>> >> TX chain setup on 5000 adapters, resulting in throughput not being
>> >> that stable. But overall it seems to work pretty decently
>> >>
>> >> This is for HEAD only right now, net80211 in stable/8 does not yet
>> >> contain the latest 11n related fixes. So, if you run HEAD and have
>> >> some iwn(4) hardware, I'd appreciate feedback.
>> >> ..
>> >
>> > Updated version, I've missed a locking issue.
>> >
>> > --
>> > Bernhard
>>
>> Thanks for working on this Bernhard!
>>
>> Unfortunately, I'm having trouble achieving HT rates.
>>
>> After 'wlandebug 0xffffffff', lots of:
>> ...
>> May  1 14:38:15 x300 kernel: wlan0: received beacon from
>> 00:1d:0f:d3:fb:cc rssi 47
>> May  1 14:38:15 x300 kernel: wlan0: [00:1d:0f:d3:fb:cc] discard beacon
>> frame, ie too short, got 26, expected 30
>> ...
>>
>> I've attached relevant debugging information, but let me know if there
>> may be anything else that could help. I need to work on DTracing
>> net80211, any tips on relevant function traces?
>
> Attachment seems to be missing?

I'll send the attachment again, directly to you, bypassing the list...

> I'd start of with enabling bootverbose to figure out if your adapter
> supports 11n at all.

iwn0: <Intel(R) Wireless WiFi Link 4965> mem 0xf9f00000-0xf9f01fff irq
17 at device 0.0 on pci3
iwn0: attempting to allocate 1 MSI vectors (1 supported)
msi: routing MSI IRQ 259 to local APIC 0 vector 55
iwn0: using IRQ 259 for MSI
iwn0: MIMO 2T3R, MoW1, address 00:1f:3b:28:30:c5
iwn0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
iwn0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
iwn0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps
24Mbps 36Mbps 48Mbps 54Mbps
iwn0: 2T3R
iwn0: 11na MCS 20MHz
iwn0: MCS 0-7: 6.5Mbps - 65Mbps
iwn0: MCS 8-15: 13Mbps - 130Mbps
iwn0: 11na MCS 20MHz SGI
iwn0: MCS 0-7: 7Mbps - 72Mbps
iwn0: MCS 8-15: 14.5Mbps - 144.5Mbps
iwn0: 11na MCS 40MHz:
iwn0: MCS 0-7: 13.5Mbps - 135Mbps
iwn0: MCS 8-15: 27Mbps - 270Mbps
iwn0: 11na MCS 40MHz SGI:
iwn0: MCS 0-7: 15Mbps - 150Mbps
iwn0: MCS 8-15: 30Mbps - 300Mbps
iwn0: 11ng MCS 20MHz
iwn0: MCS 0-7: 6.5Mbps - 65Mbps
iwn0: MCS 8-15: 13Mbps - 130Mbps
iwn0: 11ng MCS 20MHz SGI
iwn0: MCS 0-7: 7Mbps - 72Mbps
iwn0: MCS 8-15: 14.5Mbps - 144.5Mbps
iwn0: 11ng MCS 40MHz:
iwn0: MCS 0-7: 13.5Mbps - 135Mbps
iwn0: MCS 8-15: 27Mbps - 270Mbps
iwn0: 11ng MCS 40MHz SGI:
iwn0: MCS 0-7: 15Mbps - 150Mbps
iwn0: MCS 8-15: 30Mbps - 300Mbps

>There are some where the 11n bits have been
> disabled. Next thing would be to check with
> % ifconfig -v wlan0 list chan

I think you may be right about this, despite the dmesg output, as I
see no 11n listed in the output:

# ifconfig -v wlan0 list chan

Channel   1 : 2412  MHz 11b          Channel  40 : 5200* MHz 11a
Channel   1 : 2412  MHz 11g          Channel  40 : 5200* MHz 11a ht/20
Channel   1 : 2412  MHz 11g ht/20    Channel  40 : 5200* MHz 11a ht/40-
Channel   2 : 2417  MHz 11b          Channel  44 : 5220* MHz 11a
Channel   2 : 2417  MHz 11g          Channel  44 : 5220* MHz 11a ht/20
Channel   2 : 2417  MHz 11g ht/20    Channel  44 : 5220* MHz 11a ht/40+
Channel   3 : 2422  MHz 11b          Channel  48 : 5240* MHz 11a
Channel   3 : 2422  MHz 11g          Channel  48 : 5240* MHz 11a ht/20
Channel   3 : 2422  MHz 11g ht/20    Channel  48 : 5240* MHz 11a ht/40-
Channel   4 : 2427  MHz 11b          Channel  52 : 5260* MHz 11a
Channel   4 : 2427  MHz 11g          Channel  52 : 5260* MHz 11a ht/20
Channel   4 : 2427  MHz 11g ht/20    Channel  52 : 5260* MHz 11a ht/40+
Channel   5 : 2432  MHz 11b          Channel  56 : 5280* MHz 11a
Channel   5 : 2432  MHz 11g          Channel  56 : 5280* MHz 11a ht/20
Channel   5 : 2432  MHz 11g ht/20    Channel  56 : 5280* MHz 11a ht/40-
Channel   6 : 2437  MHz 11b          Channel  60 : 5300* MHz 11a
Channel   6 : 2437  MHz 11g          Channel  60 : 5300* MHz 11a ht/20
Channel   6 : 2437  MHz 11g ht/20    Channel  60 : 5300* MHz 11a ht/40+
Channel   7 : 2442  MHz 11b          Channel  64 : 5320* MHz 11a
Channel   7 : 2442  MHz 11g          Channel  64 : 5320* MHz 11a ht/20
Channel   7 : 2442  MHz 11g ht/20    Channel  64 : 5320* MHz 11a ht/40-
Channel   8 : 2447  MHz 11b          Channel 149 : 5745* MHz 11a
Channel   8 : 2447  MHz 11g          Channel 149 : 5745* MHz 11a ht/20
Channel   8 : 2447  MHz 11g ht/20    Channel 149 : 5745* MHz 11a ht/40+
Channel   9 : 2452  MHz 11b          Channel 153 : 5765* MHz 11a
Channel   9 : 2452  MHz 11g          Channel 153 : 5765* MHz 11a ht/20
Channel   9 : 2452  MHz 11g ht/20    Channel 153 : 5765* MHz 11a ht/40-
Channel  10 : 2457  MHz 11b          Channel 157 : 5785* MHz 11a
Channel  10 : 2457  MHz 11g          Channel 157 : 5785* MHz 11a ht/20
Channel  10 : 2457  MHz 11g ht/20    Channel 157 : 5785* MHz 11a ht/40+
Channel  11 : 2462  MHz 11b          Channel 161 : 5805* MHz 11a
Channel  11 : 2462  MHz 11g          Channel 161 : 5805* MHz 11a ht/20
Channel  11 : 2462  MHz 11g ht/20    Channel 161 : 5805* MHz 11a ht/40-
Channel  36 : 5180* MHz 11a          Channel 165 : 5825* MHz 11a
Channel  36 : 5180* MHz 11a ht/20    Channel 165 : 5825* MHz 11a ht/20
Channel  36 : 5180* MHz 11a ht/40+

> if the HT channel setup works, if so it should list several HT20/HT40
> channels. With
> % wlanconfig +11n

# wlandebug +11n

May  2 02:22:24 x300 kernel: wlan0: [00:1d:0f:d3:fb:cc] discard MPDU
frame, BA win <268:331> (0 frames) rxseq 267 tid 0 (retransmit)
May  2 02:22:28 x300 kernel: wlan0: [00:1d:0f:d3:fb:cc] discard MPDU
frame, BA win <336:399> (0 frames) rxseq 335 tid 0 (retransmit)
May  2 02:22:28 x300 kernel: wlan0: [00:1d:0f:d3:fb:cc] discard MPDU
frame, BA win <393:456> (0 frames) rxseq 392 tid 0 (retransmit)
May  2 02:22:28 x300 kernel: wlan0: [00:1d:0f:d3:fb:cc] discard MPDU
frame, BA win <406:469> (0 frames) rxseq 405 tid 0 (retransmit)

> you should at least see something like "Switching channel to HT20"
> right before moving into RUN state. Also, does
> % ifconfig wlan0 list scan
> show HTCAP for the AP you're associating too?

# ifconfig -v wlan0 list scan

bingo                            00:1d:0f:d3:fb:cc   11   54M -71:-95
100 EPS  SSID<bingo> RATES<B2,B4,B11,B22,12,18,24,36> DSPARMS<11>
RSN<v1 mc:AES-CCMP uc:AES-CCMP km:8021X-PSK> WPA<v1 mc:AES-CCMP
uc:AES-CCMP km:8021X-PSK> ERP<0x0> XRATES<48,72,96,108> WME<qosinfo
0x5 BE[aifsn 3 cwmin 4 cwmax 10 txop 0] BK[aifsn 7 cwmin 4 cwmax 10
txop 0] VO[aifsn 2 cwmin 3 cwmax 4 txop 94] VI[aifsn 2 cwmin 2 cwmax 3
txop 47]> VEN<dd1e00904c334e101bffff000000000000-> HTCAP<cap 0x104e
param 0x1b mcsset[0-15] extcap 0x0 txbf 0x0 antenna 0x0>
VEN<dd1a00904c340b0f0a0000000000000000-> HTINFO<ctl 11, f,a,0,0
basicmcs[]> ATH<0x7fff> VEN<dd0a00037f04010004000000>

-Brandon


More information about the freebsd-net mailing list