[PATCH v2] mac80211: reject/clear user rate mask if not usable

Wen Gong wgong at codeaurora.org
Fri Nov 13 03:35:07 EST 2020

On 2020-11-13 16:16, Johannes Berg wrote:
> On Fri, 2020-11-13 at 16:14 +0800, Wen Gong wrote:
>> On 2020-11-13 15:38, Johannes Berg wrote:
>> > On Fri, 2020-11-13 at 10:08 +0800, Wen Gong wrote:
>> > > > Which was the intent of this change, wasn't it?
>> >
>> > Indeed. Permitting this leads to warnings later.
>> >
>> > > We need to set the tx rate to fixed at a single rate, e.g.,
>> > > 54M/48M/36M... for a test case.
>> > > I do not want a clear error message, I want to the 54M rate pass/set
>> > > success to lower wlan driver.
>> > > Then lower wlan driver can handle it.
>> >
>> > No, that will not happen. You should configure your test AP to actually
>> > support 54M.
>> Yes, the AP support 54M, but it is not basic rate, so
>> ieee80211_set_bitrate_mask will reject 54M
>> because fail for check (mask->control[band].legacy & basic_rates).
> Ah. So this is what I said in the original commit message even:
>> Technically, selecting basic rates as the criterion is a bit too
>> restrictive, but calculating the usable rates over all stations
>> (e.g. in AP mode) is harder, and all stations must support the
>> basic rates. Similarly, in client mode, the basic rates will be
>> used anyway for control frames.
> I guess if we really want to redefine the user rate mask to not apply 
> to
> control frames, then we can relax this?
Yes, for AP mode, it is hard to calculate the usable rates over all 
But for STATION mode, it can set 54M because AP support it, so it should 
not reject it.
If add a check for nl80211_iftype of ieee80211_vif in 
ieee80211_set_bitrate_mask, it can
solve this like this:
if (sdata->vif.type != NL80211_IFTYPE_STATION && 
!(mask->control[band].legacy & basic_rates))
> johannes

More information about the ath10k mailing list