Cannot switch between 20MHz and 40MHz rates

From: ghostrain
Date: Mon Jun 17 2013 - 15:59:29 EST

Hello there! Thanks for your attention!!

I have 1 STA and 1 AP (hostapd + wireless-compat ath9k driver). What I am
trying to do is:

1.AP starts with HT20 (I did this through commenting out any ht_capab lines
in hostapd.conf)

2.STA connects to AP (so STA is also HT20)

3.STA issues an action frame to AP, AP sends back another action frame as
ACK and changes its tx bitrates to HT40

what I do for changing tx bitrates now is setting ht_cap flag and update
rate table, i.e. in function ieee80211_rx_h_action() in file
net/mac80211/rx.c, on receiving my action frame for rate update, do:

rx->sta->sta.ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;

4.STA receives ACK and do something (what I do now is update its rate table
as I do on AP side).

[b]The problem is[/b]: when AP starts with HT40+ and STA connects,
transmission first uses HT40 rates and then switches to HT20 rates on
issuing my action frame. But when AP starts with HT20 and STA connects,
transmission can only use HT20 rates: once switched to HT40 rates,
transmission will pause, until switching back to HT20.

Could anybody give me some hints on possible reasons, please? Is this a
hostapd configuration problem? or I am doing wrong updating rates? or it is
theoretically impossible to using HT40 rates if started with HT20?


View this message in context:
Sent from the Linux Kernel mailing list archive at
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at