linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benoit PAPILLAULT <benoit.papillault@free.fr>
To: "Luis R. Rodriguez" <mcgrof@gmail.com>
Cc: linux-wireless@vger.kernel.org
Subject: Re: Issue connecting to an HT40 AP that sends a Country IE
Date: Sat, 02 Jan 2010 10:21:20 +0100	[thread overview]
Message-ID: <4B3F1010.3070906@free.fr> (raw)
In-Reply-To: <43e72e891001011524r190950c8pdfc89e765afb205d@mail.gmail.com>

Luis R. Rodriguez a écrit :
> On Fri, Jan 1, 2010 at 4:07 AM, Benoit PAPILLAULT
> <benoit.papillault@free.fr> wrote:
>   
>> Hello,
>>
>> I'd like to report an issue I have when trying to connect a laptop
>> running ath9k to a 802.11n AP in HT40 mode. What happens is that the
>> laptop cannot associate if the AP is running in HT40 mode. Association
>> is OK if the AP is running in HT20 mode. Here is an excerpt from syslog :
>>
>> [  577.166241] wlan0: associate with AP 00:15:6d:e8:88:84 (try 1)
>> [  577.167448] wlan0: RX AssocResp from 00:15:6d:e8:88:84 (capab=0x411
>> status=10 aid=257)
>> [  577.167451] wlan0: AP denied association (code=10)
>> [  577.167460] wlan0: deauthenticating from 00:15:6d:e8:88:84 by local
>> choice (reason=3)
>>
>> What's wrong is that the Associate Request (built by
>> ieee80211_send_assoc) does not set the bit in HT Capabilities IE saying
>> : "The station supports both HT20 & HT40".
>>
>> Looking into the code, it appears that both (flags &
>> IEEE80211_CHAN_NO_HT40PLUS) and (flags & IEEE80211_CHAN_NO_HT40MINUS)
>> are true, thus disabling the IEEE80211_HT_CAP_SUP_WIDTH_20_40 which is
>> the culprit mentioned above.
>>
>> Digging further down, both flags are set in reg.c by :
>>   if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40))
>>       bw_flags = IEEE80211_CHAN_NO_HT40;
>>
>> Indeed, at this stage, max_bandwidth_khz is 20 MHz only... Looking up in
>> my syslog, I found this :
>>
>> [  506.036923] cfg80211: Received country IE:
>> [  506.036927] cfg80211: Regulatory domain: FR
>> [  506.036928]     (start_freq - end_freq @ bandwidth),
>> (max_antenna_gain, max_eirp)
>> [  506.036931]     (5170000 KHz - 5190000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036933]     (5190000 KHz - 5210000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036936]     (5210000 KHz - 5230000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036938]     (5230000 KHz - 5250000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036940]     (5250000 KHz - 5270000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036943]     (5270000 KHz - 5290000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036945]     (5290000 KHz - 5310000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036948]     (5310000 KHz - 5330000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036950]     (5490000 KHz - 5510000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036952]     (5510000 KHz - 5530000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036955]     (5530000 KHz - 5550000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036957]     (5550000 KHz - 5570000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036959]     (5570000 KHz - 5590000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036962]     (5590000 KHz - 5610000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036964]     (5610000 KHz - 5630000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036966]     (5630000 KHz - 5650000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036969]     (5650000 KHz - 5670000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036971]     (5670000 KHz - 5690000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>> [  506.036974]     (5690000 KHz - 5710000 KHz @ 40000 KHz), (10000 mBi,
>> 10000 mBm)
>>
>> [  506.036975] cfg80211: CRDA thinks this should applied:
>> [  506.036976] cfg80211: Regulatory domain: FR
>> [  506.036978]     (start_freq - end_freq @ bandwidth),
>> (max_antenna_gain, max_eirp)
>> [  506.036980]     (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
>> [  506.036982]     (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
>> [  506.036984]     (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
>> [  506.036987]     (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
>>
>> [  506.036988] cfg80211: We intersect both of these and get:
>> [  506.037005] cfg80211: Regulatory domain: 98
>> [  506.037006]     (start_freq - end_freq @ bandwidth),
>> (max_antenna_gain, max_eirp)
>> [  506.037008]     (5170000 KHz - 5190000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037011]     (5190000 KHz - 5210000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037013]     (5210000 KHz - 5230000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037015]     (5230000 KHz - 5250000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037017]     (5250000 KHz - 5270000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037019]     (5270000 KHz - 5290000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037021]     (5290000 KHz - 5310000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037024]     (5310000 KHz - 5330000 KHz @ 20000 KHz), (N/A, 2000 mBm)
>> [  506.037026]     (5490000 KHz - 5510000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037028]     (5510000 KHz - 5530000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037030]     (5530000 KHz - 5550000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037032]     (5550000 KHz - 5570000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037035]     (5570000 KHz - 5590000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037037]     (5590000 KHz - 5610000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037039]     (5610000 KHz - 5630000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037041]     (5630000 KHz - 5650000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037043]     (5650000 KHz - 5670000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037045]     (5670000 KHz - 5690000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>> [  506.037047]     (5690000 KHz - 5710000 KHz @ 20000 KHz), (N/A, 2700 mBm)
>>
>> So, at this stage, max_bandwidth_khz is indeed 20 MHz!
>>
>> What's the real meaning of max_bandwidth_khz? If this is just the
>> difference between the upper/lower frequency of each channels, then it's
>> useless. If it is a capability features saying 40 MHz channel wide are
>> allowed, then it should be left to 40 MHz even if upper/lower
>> frequencies are only 20 MHz apart (since the ability to use 40 MHz
>> depends on the list of all frequencies, not a single frequency).
>>     
>
> Your AP is sending a country IE channel triplet for each channel it
> allows. Its the first time I see an AP do this and its good that you
> report this. What AP do you have?
>
> reg.c treats each triplet as a regulatory rule though and since you
> have a rule for each channel it will restrict this to the triplet
> range which is just one channel and as such 20 MHz only makes sense. A
> fix would be to expand on the ht40 checks to check connecting
> frequency rules.
>
>   Luis
>   
Hello,

My AP is a NanoStation M5 configured with Country "FR" and 40 MHz.

Could you detail the fix you are proposing?

On my side, I would propose to leave max_bandwidth_khz to 40 MHz and use 
it as a capability features. This way we would consider valid the case 
where upper/lower frequencies are just 20 MHz apart but 
max_bandwidth_khz is 40 MHz.

Regards,
Benoit


  reply	other threads:[~2010-01-02  9:21 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-01  9:07 Issue connecting to an HT40 AP that sends a Country IE Benoit PAPILLAULT
2010-01-01 23:24 ` Luis R. Rodriguez
2010-01-02  9:21   ` Benoit PAPILLAULT [this message]
2010-01-02 18:04     ` Luis R. Rodriguez
2010-01-07  1:39       ` Luis R. Rodriguez
2010-01-07  7:22         ` Benoit PAPILLAULT
2010-01-07 15:43           ` Luis R. Rodriguez
2010-01-07 21:08             ` Benoit PAPILLAULT

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B3F1010.3070906@free.fr \
    --to=benoit.papillault@free.fr \
    --cc=linux-wireless@vger.kernel.org \
    --cc=mcgrof@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).