wlan0 gets stuck in pending state when bringing up AP mode connection with IWD backend
Summary
NetworkManager appears to get stuck in a pending state when configuring a wlan0 as an access point when using the IWD backend, the access point is visible and clients can connect but routes/iptables/dnsmasq settings don't appear to get applied so clients have no internet access.
Version affected
1.46.0
on buildroot with iwd version 2.16
Steps to reproduce
Create a connection with a config like this and try to bring up the connection with NetworkManager configured to use the IWD backend:
[connection]
id=connid
uuid=01adc9e6-dbcd-46e6-bb2e-8e5032a8d99b
type=wifi
interface-name=wlan0
[wifi]
mode=ap
ssid=APSSID
[wifi-security]
key-mgmt=wpa-psk
psk=wifipassword
[ipv4]
method=shared
[ipv6]
method=ignore
Actual result
wlan0 should be fully enabled/connected when connection is enabled
Expected result
wlan0 is stuck in a pending/connecting state when connection is enabled
Relevant logs
<debug> [1709938743.1640] device[e4bcd76bde98e8a1] (wlan0): Activation: (wifi) Called Start('APSSID').
<debug> [1709938743.1641] device[e4bcd76bde98e8a1] (wlan0): Activation: (wifi) IWD Device.Mode set successfully
<debug> [1709938743.1644] device[e4bcd76bde98e8a1] (wlan0): remove_pending_action (1): 'recheck-available'
<trace> [1709938743.2594] platform: (wlan0) emit signal ip4-address-changed added: 192.168.45.129/28 brd 0.0.0.0 lft forever pref forever lifetime 1235-0[4294967295,4294967295] dev 5 flags permanent src kernel
<debug> [1709938743.2595] platform: (wlan0) signal: address 4 added: 192.168.45.129/28 brd 0.0.0.0 lft forever pref forever lifetime 1235-0[4294967295,4294967295] dev 5 flags permanent src kernel
<trace> [1709938743.2598] platform: (wlan0) emit signal ip4-route-changed added: type local table 255 192.168.45.129/32 dev 5 metric 0 mss 0 rt-src rt-kernel scope host pref-src 192.168.45.129
<debug> [1709938743.2599] platform: (wlan0) signal: route 4 added: type local table 255 192.168.45.129/32 dev 5 metric 0 mss 0 rt-src rt-kernel scope host pref-src 192.168.45.129
<trace> [1709938743.2602] platform: (wlan0) emit signal ip4-route-changed added: type unicast 192.168.45.128/28 dev 5 metric 0 mss 0 rt-src rt-kernel rtm_flags linkdown scope link pref-src 192.168.45.129
<debug> [1709938743.2602] platform: (wlan0) signal: route 4 added: type unicast 192.168.45.128/28 dev 5 metric 0 mss 0 rt-src rt-kernel rtm_flags linkdown scope link pref-src 192.168.45.129
<trace> [1709938743.2609] platform: (wlan0) emit signal link-changed changed: 5: wlan0 <UP,LOWER_UP;broadcast,multicast,up,running,lowerup> mtu 1500 arp 1 wifi? init addrgenmode none addr BC:25:F0:1D:6A:03 permaddr BC:25:F0:1D:6A:03 brd FF:FF:FF:FF:FF:FF driver rtl8821ae tx-queue-len 1000 gso-max-size 65536 gso-max-segs 65535 gro-max-size 65536 rx:443,42144 tx:563,224232
<debug> [1709938743.2610] platform: (wlan0) signal: link changed: 5: wlan0 <UP,LOWER_UP;broadcast,multicast,up,running,lowerup> mtu 1500 arp 1 wifi? init addrgenmode none addr BC:25:F0:1D:6A:03 permaddr BC:25:F0:1D:6A:03 brd FF:FF:FF:FF:FF:FF driver rtl8821ae tx-queue-len 1000 gso-max-size 65536 gso-max-segs 65535 gro-max-size 65536 rx:443,42144 tx:563,224232
<debug> [1709938743.2611] device[e4bcd76bde98e8a1] (wlan0): queued link change for ifindex 5
<info> [1709938743.2657] device (wlan0): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Started 'APSSID'.
<debug> [1709938743.2658] device[e4bcd76bde98e8a1] (wlan0): activation-stage: schedule activate_stage3_ip_config
<debug> [1709938743.2659] device[e4bcd76bde98e8a1] (wlan0): activation-stage: invoke activate_stage3_ip_config
<debug> [1709938743.2660] device[e4bcd76bde98e8a1] (wlan0): activation-stage: synchronously invoke activate_stage3_ip_config
<debug> [1709938743.2661] device[e4bcd76bde98e8a1] (wlan0): ip4: required-timeout: disabled
<debug> [1709938743.2661] device[e4bcd76bde98e8a1] (wlan0): ip6: required-timeout: disabled
<debug> [1709938743.2662] active-connection[c8d123b3d4d3f96d]: set state-flags layer2-ready (was none)
<info> [1709938743.2664] device (wlan0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
<debug> [1709938743.2699] device[e4bcd76bde98e8a1] (wlan0): add_pending_action (2): 'in-state-change'
<debug> [1709938743.2704] device[e4bcd76bde98e8a1] (wlan0): remove_pending_action (1): 'in-state-change'
<info> [1709938743.2709] device (wlan0): IWD AP/AdHoc state is now Started
<trace> [1709938743.2710] device[e4bcd76bde98e8a1] (wlan0): ip4: check-state: state pending => pending, is_failed=0, is_pending=0, is_started=0 temp_na=0, may-fail-4=1, may-fail-6=1;;;
<trace> [1709938743.2710] device[e4bcd76bde98e8a1] (wlan0): ip: check-state: (combined) state pending => pending
<trace> [1709938743.2711] device[e4bcd76bde98e8a1] (wlan0): ip6: check-state: state pending => pending, is_failed=0, is_pending=0, is_started=0 temp_na=0, may-fail-4=1, may-fail-6=1;;;
<trace> [1709938743.2711] device[e4bcd76bde98e8a1] (wlan0): ip: check-state: (combined) state pending => pending
# nmcli device status
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected Wired connection 1
wlan0 wifi connecting (getting IP configuration) connid
lo loopback connected (externally) lo
# iwctl device list
Devices
--------------------------------------------------------------------------------
Name Address Powered Adapter Mode
--------------------------------------------------------------------------------
wlan0 bc:25:f0:1d:6a:03 on phy0 ap