802.11ac - how to control primary channel on wide (vht40 / vht80) channels?


I've been testing it with the latest stable version (17.01.2) under linksys wrt1900ac (v1) router. What I'd expect is that if I for example do:

uci set wireless.radio1.channel=40
uci set wireless.radio1.htmode=VHT80
uci commit
wifi enable

Then I'd expect to have channel 40 remain as a primary channel - in the other words: iw dev wlan1 info would report:

channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz

But the current behavior is:

36 - remains at 36
40 - drops down to 36: channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
44 - jumps up to 48: channel 48 (5240 MHz), width: 80 MHz, center1: 5210 MHz
48 - remains at 48

Similar behavior happens on the higher channels - 52-64 and 100-140 - but the "pattern" of correct/incorrect settings is different.

Note that the above configuration seems to be correctly reflected under /etc/config/wireless, relevant fragment:

config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11a'
        option path 'soc/soc:pcie-controller/pci0000:00/0000:00:03.0/0000:03:00.0'
        option country 'PL'
        option txpower '5'
        option htmode 'VHT80'
        option channel '40'

IF I manually do:

ip li set dev wlan1 down
iw dev wlan1 set freq 5200 80 5210
ip li set dev wlan1 up

Then I get what I want (and it works fine for any channel I choose as a primary):

channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz

But obviously that's not permanent and out of the question in practice.

Is there any way to directly control what is the primary channel ?

Doublechecked with development snapshot as well, same behaviour.

It looks like it could be linked to the way it's specified in the 802.11ac standards (credits goes to @JonP for finding theses) :


I do not pretend to know what they are talking about :wink: