Before this commit, we do not add an uci section name to wifi-device(s).
For example, if we do not have a section in `/etc/config/wireless` for
the phy at sysfs path `ffe09000.pcie...`, creating one with Ansible
with this inventory variable:
```yaml
- name: radio1
path: ffe09000.pcie/pci9000:00/9000:00:00.0/9000:01:00.0
template: ath9k_2
channel: 6
```
would give us
```/etc/config/wireless
config wifi-device
option type 'mac80211'
option htmode 'HT20'
option band '2g'
option channel '6'
option country 'US'
option disabled '0'
option path 'ffe09000.pcie/pci9000:00/9000:00:00.0/9000:01:00.0'
```
... and not:
```/etc/config/wireless
config wifi-device 'radio1'
option type 'mac80211'
option htmode 'HT20'
option band '2g'
option channel '6'
option country 'US'
option disabled '0'
option path 'ffe09000.pcie/pci9000:00/9000:00:00.0/9000:01:00.0'
```
We must name the wifi-device section, since wifi-iface sections point
to the name of their wifi-device exclusively.
(cherry picked from commit 0c8452b9a6d408b1669e273feb6a9161d0a56da6)
There appears to be a bug in hostapd where this[1]:
```hostapd.conf
interface=vgo5
:
skip_inactivity_poll=1
:
interface=labb5
:
skip_inactivity_poll=0
:
```
... still results in inactivity polling on the vgo5 interface:
Tue Aug 9 04:54:20 2022 daemon.info hostapd: vgo5: STA 3a:0e:52:a1:43:ea IEEE 802.11: disassociated due to inactivity
Tue Aug 9 04:54:21 2022 daemon.info hostapd: vgo5: STA 3a:0e:52:a1:43:ea IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Tue Aug 9 05:18:05 2022 daemon.info hostapd: vgo5: STA 3a:0e:52:a1:43:ea IEEE 802.11: disassociated due to inactivity
Tue Aug 9 05:18:06 2022 daemon.info hostapd: vgo5: STA 3a:0e:52:a1:43:ea IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Not sure what's going on there. I will have to verify this fix works
in production.
[1]: https://paste.c-net.org/MulanMaybe
We cannot afford to defer things to a handler when reconfiguring the
network: we need to know as soon as possible when our playbook has
gone up in flames and left a remote out-of-reach, so we can know what
broke when we have to go and directly service the unit.
I've hard-set the timeout here to 70 to handle the full one-minute DFS
CAC timeout, but please, for the love of God, don't run mesh on
UNII-2A. You do not want to be waiting that full minute for the device
to come back.
This is probably not the right way to do this ... but it's
tricky. Packages that are REQUIRED for proper network config need to
be handled somewhere before we do network config.
Perhaps this could be moved to the netconfig role on its own, but I
don't really want to try.
Note that this also drops the package setup at the beginning of the
original wireless-setup.yml.
We no longer need to specify -e @default_vars.yml since it is included
in the role.
This commit reconfigures the ap3825i2 in preparation for having it
replace mr16_3. We set up STP, prep some mesh VIFs and match it to the
mr16_3's channels.
Replacing the mr16_3 will fix Matt Woodbury's issues.
I neglected to do this before.
Also, since these conf values now apply everywhere, shift the default
settings for these confs to just vgolan, where they are known-working.
As per openwrt.org[1], the `band` configurable was introduced in
OpenWrt 21.02.2, replacing `hwmode`.
To handle the pre-21.02.2 nodes to which we're deploying, allow us to
configure either of the two (but defaulting hwmode to null).
[1]: https://openwrt.org/docs/guide-user/network/wifi/basic
- Use empty 'ssid:' in your template when you want it to be removed but
the mesh_id added
- Add an stp network.device option so mesh loops don't break things