Search Linux Wireless

Re: Setting single rate in ath10k broken by "reject/clear user rate mask if not usable"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 18.10.2017 um 16:50 schrieb Ben Greear:


On 10/18/2017 12:33 AM, Johannes Berg wrote:
Hi,

The call to set the rate in the driver comes before the error
check.

    if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) {
        ret = drv_set_bitrate_mask(local, sdata, mask);
        if (ret) {
            pr_err("%s: drv-set-bitrate-mask had error
return: %d\n",
                   sdata->dev->name, ret);
            return ret;
        }
    }

    /*
     * If active validate the setting and reject it if it doesn't
leave
     * at least one basic rate usable, since we really have to be
able
     * to send something, and if we're an AP we have to be able to
do
     * so at a basic rate so that all clients can receive it.
     */
    if (rcu_access_pointer(sdata->vif.chanctx_conf) &&
        sdata->vif.bss_conf.chandef.chan) {
        u32 basic_rates = sdata->vif.bss_conf.basic_rates;
        enum nl80211_band band = sdata-
vif.bss_conf.chandef.chan->band;

        if (!(mask->control[band].legacy & basic_rates)) {
            #### I changed this code so I could set a
single rate... --Ben
            pr_err("%s:  WARNING: no legacy rates for
band[%d] in set-bitrate-mask.\n",
                   sdata->dev->name, band);
        }
    }

Heh, that's just dumb. I guess I'll fix that by putting the test first,
no idea how that happened.


So, I think we should relax this check, at least for ath10k.

Well, yes and no. I don't think we should make ath10k special here,
and
this fixes a real problem - namely that you can set up the system
so
that you have no usable rates at all, and then you just get a
WARN_ON
and start using the lowest possible rate...

Well, there are a million ways to set up a broken system,

True, but this one actually happened in practice, for some reason, and
stopping the user from constantly shooting themselves in the foot seems
like a good idea to me. Especially if the user (or application) can't
really even know what they're getting into.

Now, the case in question was _client_ mode, but still.

and setting a single rate has a useful purpose, especially with
ath10k since it has such limited rate-setting capabilities.

You're stretching the definition of "useful purpose" a bit here though,
you're about the only one who's ever going to need to set a single
rate.

People trying to do regulatory testing want this feature, and other people
that are not me also like to test with specific rates.  Still a small-ish set
of people, but bigger than just me at least.

Till now i was interviewing different people who was asking for this for ath9k-htc. So I would say we have:
- academical researchers
- testers
- R&D
- exploit and penetration testers
- HAM
- just hackers

As for me, it sounds a s lot.


--
Regards,
Oleksij



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux