On Fri, Feb 16, 2024 at 03:22:07AM +0100, Kirill A. Korinsky wrote:
> Thus, disabling 5Ghz does help. that lead me to dig an issue on network 
> settings
> side. After poking around I've discovered that settings which triggers an 
> issue
> is "Minimum Data Rate Control" inside Unifi UI. It has settings for 5Ghz
> network: 6, 9, 12 and 24 mbps. Old one was 12 (or 24), anyway, an issue
> happening when this settings is 12 or 24 mbps.

Tne driver uses the lowest basic rate anncounced by the AP:

const struct iwx_rate *
iwx_tx_fill_cmd(struct iwx_softc *sc, struct iwx_node *in,
    struct ieee80211_frame *wh, uint16_t *flags, uint32_t *rate_n_flags)
{
        [...]
        int min_ridx = iwx_rval2ridx(ieee80211_min_basic_rate(ic));


This rate will be used for broadcast frames, which include DHCP requests.
If the AP doesn't receive such frames then no DHCP requests will pass.

During scans, or while associated (even if DPCH doesn't work), you can check
the rates anncounted by the AP with tcpdump:

# tcpdump -i iwx0 -y IEEE802_11_RADIO -v type mgt subtype beacon

For example, my AP shows:

 rates 6M* 9M 12M* 18M 24M* 36M 48M 54M

An asterisk (*) indicates a basic rate, which the client must support in order
to join the network. And in any case, the 802.11 standard _requires_ 6, 12, and
24 to be supported, always! My AP's rate information is thus in fact redundant.
(In pratice, I've never seen devices that didn't support the whole rate set.)

If your AP still announces 6M even while you've disabled this rate in settings,
then the AP is broken and there is nothing to fix for us, you could only try
asking the vendor for an AP firmware fix. Otherwise, there could be a bug in
net80211, iwx, or intel wifi firmware where the lack of support for 6 Mbps
on the AP breaks something.

You won't see any improvements in throughput by disabling 6 Mbps.
The most noticable effect of disabling it will be compatibility issues.
Most of our drivers are still hard-coded to use 6 Mbps for broadcasts.
The only drivers which call ieee80211_min_basic_rate() are:
iwn, iwm, iwx, and qwx.

I wouldn't be surprised if this setting is also causing issues for phones,
laptops running an OS other than OpenBSD, etc.

I recommend leaving 6 Mbps enabled in your setup for production, and only
use this feature to help debug our drivers so we can make them work when
they come across an AP that's misconfigured in this way and cannot be fixed.

One reason to keep 6 Mbps disabled would be many APs on the same channel,
so many that their collective beacons sent at 6 Mbps use up all available
air time, leaving no time for actual data. But unless you're running something
like a CCC congress this limitation won't apply ;)

Reply via email to