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
stations.
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