nm setting AP wifi interface mode as STA during initialization
Summary
During NM's initialization process, it brings an AP wifi interface down before bringing it up again. While doing that, it sets the AP interface mode to STA, and when the interface is brought up again, it's in STA mode.
Detailed description
We have wifi modules on our SoM designs using NXP IW416 together with mwifiex. We're setting driver_mode=0x3
which means a STA interface and an AP interface are created during initialization. Starting nm in this setup with no previous configuration changes the AP interface to STA.
Version affected
nmcli tool, version 1.36.2 built by yocto
Steps to reproduce
With an AP wifi interface already created, and confirmed to be in AP mode with iw dev
, start nm.
Actual result
root@verdin-am62-15207058:~# nmcli c show
Error: NetworkManager is not running.
root@verdin-am62-15207058:~# iw dev
phy#0
Interface uap0
ifindex 8
wdev 0x2
addr 6c:1d:eb:9d:3c:49
type AP
txpower 0.00 dBm
Interface mlan0
ifindex 7
wdev 0x1
addr 6c:1d:eb:9d:3e:49
type managed
txpower 0.00 dBm
root@verdin-am62-15207058:~# systemctl start NetworkManager
root@verdin-am62-15207058:~# [ 61.474288] audit: type=1334 audit(1714733894.730:22): prog-id=19 op=LOAD
[ 61.481265] audit: type=1334 audit(1714733894.740:23): prog-id=20 op=LOAD
[ 61.960979] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=359)
[ 61.970993] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
[ 62.103114] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:07] driver [Microchip KSZ9131 Gigabit PHY] (irq=372)
[ 62.115322] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
[ 62.226839] systemd-journald[185]: Data hash table of /run/log/journal/4f33d3f2269541c4ab87523d04c6f9f9/system.journal has a fill level at 75.1 (2732 of 3640 items, 2097152 file size, 767 bytes per hash table item), suggesting rotation.
[ 62.247958] systemd-journald[185]: /run/log/journal/4f33d3f2269541c4ab87523d04c6f9f9/system.journal: Journal header limits reached or header out-of-date, rotating.
root@verdin-am62-15207058:~#
root@verdin-am62-15207058:~# [ 65.475538] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[ 65.498231] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
root@verdin-am62-15207058:~#
root@verdin-am62-15207058:~# iw dev
phy#0
Interface uap0
ifindex 8
wdev 0x2
addr e2:e8:11:e4:27:75
type managed
txpower 0.00 dBm
Interface mlan0
ifindex 7
wdev 0x1
addr a2:64:81:cd:a8:c2
type managed
txpower 0.00 dBm
Expected result
The expected result would be that an AP interface would continue to be treated as an AP interface, regardless of the fact it is configured or not in nm. It's completely unexpected that nm would change the underlying mode of the wifi interface just by being started.
Relevant logs
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9258] device[ace9e35afb05a53d] (uap0): bringing up device 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9259] platform-linux: link: change 8: flags: set 0x1/0x1 ([up] / [up])
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9260] platform-linux: do-request-link: 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9263] platform-linux: do-change-link[8]: success changing link: success
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9264] device[ace9e35afb05a53d] (uap0): preparing device
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9267] platform-linux: sysctl: setting '/proc/sys/net/ipv6/conf/uap0/use_tempaddr' to '0' (current value is identical)
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9273] device[ace9e35afb05a53d] (uap0): taking down device 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9274] platform-linux: link: change 8: flags: set 0x0/0x1 ([] / [up])
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9326] platform-linux: do-request-link: 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9330] platform: (uap0) signal: link changed: 8: uap0 <DOWN;broadcast,multicast> mtu 1500 arp 1 wifi? init addrgenmode none addr xx:xx:xx:xx:xx:xx permaddr xx:xx:xx:xx:xx:xx brd FF:FF:FF:FF:FF:FF driver mwifiex_sdio rx:0,0 tx:0,0
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9336] platform-linux: do-change-link[8]: success changing link: success
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9365] device[ace9e35afb05a53d] (uap0): bringing up device 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9367] platform-linux: link: change 8: flags: set 0x1/0x1 ([up] / [up])
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9449] platform-linux: do-request-link: 8
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9454] platform: (uap0) signal: link changed: 8: uap0 <UP;broadcast,multicast,up> mtu 1500 arp 1 wifi? init addrgenmode none addr xx:xx:xx:xx:xx:xx permaddr xx:xx:xx:xx:xx:xx brd FF:FF:FF:FF:FF:FF driver mwifiex_sdio rx:0,0 tx:0,0
May 02 12:44:52 verdin-am62-15207058 NetworkManager[734]: <debug> [1714653892.9458] platform-linux: do-change-link[8]: success changing link: success