Skip to content

mac80211: 802.11s TCP/IP Connectivity Fails After 2018-09

Username: Jeff Kletsky

Origin: https://bugs.openwrt.org/index.php?do=details&task_id=2123

802.11s mesh appears to not transport TCP/IP even though the mesh

appears up, for commits on master after late September, 2018.

(Steps to replicate at the end of this message)

The output of iw dev mesh0 station dump yields similar results for

working and non-working builds, though it has been confirmed after

the posting to the openwrt-devel list (archive link attached) that

“mesh peer PS mode” never seems to be “ACTIVE”

on builds after “first failing commit” (identified below).

mesh plink: ESTAB mesh local PS mode: ACTIVE mesh peer PS mode: UNKNOWN mesh non-peer PS mode: ACTIVE authorized: yes authenticated: yes associated: yes

ping to the peer(s) prior to the first failing commit is successful and

the peer is reflected in the arp table. Full connectivity can be

established over the mesh to peers with UDP or TCP transport.

Both ping and arp fail to behave as expected on or after the first

failing commit.

The routing is the same for both builds.

Behavior seen on both Archer C7 v2 (QCA9880-BR4A v2)

and a GL.iNet AR750S (QCA9887), both on ath79 target (AR750S is WIP)

Confirmed that the newer (newest?) firmware (ver 10.2.4-1.0-00041)

works on the “old” build.

Lack of TCP/IP transport over the mesh confirmed both with 802.11s

integral routing, as well with 802.11s routing disabled and replaced

with batman-adv. Configuration using both 802.11s routing and

batman-adv on distinct meshes on the same radios has been running

successfully with four or five Archer C7 v2 units for both backhaul

over the 5

GHz

mesh, as well as client access on 5

GHz

. (Not tested

on 2.4

GHz

on either the Archer C7 or the AR750S.)

git bisect was used to identify the “first failing commit”:

commit db90c243 Author: Hauke Mehrtens Date: Sun Sep 23 18:02:35 2018 +0200

mac80211: update to version based on 4.19-rc4

Note that the Candela Technologies drivers do not appear to support

mesh on either chipset.

Additional notes at

https://forum.openwrt.org/t/mac80211-802-11s-tcp-ip-connectivity-on-master-failing-after-2018-09/30629

Thanks to @slh and Koen for hopping on thing there!

To Replicate:

=⇒ Pick your target of choice

$ ./scripts/diffconfig.sh CONFIG_TARGET_ath79=y CONFIG_TARGET_ath79_generic=y CONFIG_TARGET_ath79_generic_DEVICE_glinet_gl-ar750s-nor=y CONFIG_DEVEL=y CONFIG_ATH10K_LEDS=y CONFIG_BUILD_LOG=y CONFIG_CCACHE=y CONFIG_OPENSSL_WITH_DEPRECATED=y CONFIG_OPENSSL_WITH_EC=y CONFIG_OPENSSL_WITH_NPN=y CONFIG_OPENSSL_WITH_PSK=y CONFIG_OPENSSL_WITH_SRP=y CONFIG_PACKAGE_ath10k-firmware-qca9887=y

CONFIG_PACKAGE_ath10k-firmware-qca9887-ct is not set

CONFIG_PACKAGE_diffutils=y CONFIG_PACKAGE_findutils-find=y CONFIG_PACKAGE_kmod-ath10k=y

CONFIG_PACKAGE_kmod-ath10k-ct is not set

CONFIG_PACKAGE_kmod-hwmon-core is not set

CONFIG_PACKAGE_less=y CONFIG_PACKAGE_libncurses=y CONFIG_PACKAGE_libopenssl=y CONFIG_PACKAGE_terminfo=y

CONFIG_PACKAGE_wpad-basic is not set

CONFIG_PACKAGE_wpad-mesh-openssl=y

=⇒ Add to /etc/config/network

config interface 'nwi_mesh0' option ifname 'mesh0' option mtu '2304' option proto 'static' option ipaddr '172.16.0.NNN' option netmask '255.255.255.0'

=⇒ Add to / replace in /etc/config/wireless

Please confirm a valid channel for your location

Adjust the device path/reference as needed

‘n’ used for support of older iPhones here

config wifi-device 'radio5' option type 'mac80211' option channel '149' option hwmode '11a' option path 'pci0000:00/0000:00:00.0' option htmode 'VHT80' option require_mode 'n'

config wifi-iface 'mesh0' option device 'radio5' option ifname 'mesh0' option network 'nwi_mesh0' option mode 'mesh' option mesh_id 'TestMesh' option mesh_fwding '1' option encryption 'psk2+ccmp' option key 'TestMeshPassPhrase'

=⇒ Flash and configure additional unit(s), changing the last octet

of the nwi_mesh0 interface address.

=⇒ Note that the mesh appears established from the output of

iw dev mesh0 station dump

=⇒ Note that the one unit can’t ping the other’s nwi_mesh0 address

when building on or after “first bad commit” but ping (arp and ip

neigh) will work as expected prior to that commit.