QCA9888: mesh does not receive broadcast packets

Remi Pommarel repk at triplefau.lt
Mon Mar 20 04:51:16 PDT 2023


Hi,

Using QCA9888 on kernel 5.15 with FW 10.4-3.10-00076, if a mesh
interface is created while a STA is scanning on the same phy, the mesh
interface connects correctly to other mesh nodes but not a single
broadcast packet is received by ath10k (unicast packets are received
correctly). Creating a monitor interface on this phy and bringing it up
allows the mesh interface to receive those broadcast packet.

I tried to add debug in ath10k_htt_rx_h_enqueue() to see ath10k was
seeing those broadcast packets but it doesn't (ath10k_htt_rx_h_enqueue()
sees them only when monitor interface is up).

So I have a hunch it could be that this is a FW issue, I tried with
10.4-3.9.0.2-00157 FW which seem more recent than 10.4-3.10-00076 but
the issue is still here.

Has anyone with a better understanding of the 9888 firmware and/or
ath10k driver any idea how to debug this further ?

I use the script below to reproduce the issue but as it seems to be very
timing sensitive I am not sure other plateform will behave the same.

Thanks

-- 
Remi

---

#!/bin/sh

start_sta() {
        iw phy phy1 interface add  wlan1 type managed
        wpa_supplicant -Dnl80211 -i wlan1 -C /tmp/sta_supp&
        STA_PID=$!

        sleep 4

        wpa_cli -p /tmp/sta_supp/ RAW ADD_NETWORK
        wpa_cli -p /tmp/sta_supp/ RAW SET_NETWORK 0 ssid \"\"
        wpa_cli -p /tmp/sta_supp/ RAW SET_NETWORK 0 key_mgmt NONE
        wpa_cli -p /tmp/sta_supp/ RAW SET_NETWORK 0 scan_ssid 0
        wpa_cli -p /tmp/sta_supp/ RAW ENABLE_NETWORK 0
}

stop_sta() {
        if [ ! "x${STA_PID}" = "x" ]; then
                wpa_cli -p /tmp/wpa_supp RAW REMOVE_NETWORK 0
                kill ${STA_PID}
        fi
        iw dev wlan1 del
}

start_mesh() {
        iw phy phy1 interface add mesh1 type mesh
        ip link set dev mesh1 address 72:FC:8F:A6:00:C4
        wpa_supplicant -Dnl80211 -i mesh1 -C /tmp/mesh_supp&
        MESH_PID=$!

        sleep 4

        wpa_cli -p /tmp/mesh_supp/ RAW ADD_NETWORK
        wpa_cli -p /tmp/mesh_supp/ RAW SET_NETWORK 0 ssid \"mesh\"
        wpa_cli -p /tmp/mesh_supp/ RAW SET_NETWORK 0 key_mgmt NONE
        wpa_cli -p /tmp/mesh_supp/ RAW SET_NETWORK 0 frequency 5240
        wpa_cli -p /tmp/mesh_supp/ RAW SET_NETWORK 0 mode 5
        wpa_cli -p /tmp/mesh_supp/ RAW SET_NETWORK 0 beacon_int 120
        wpa_cli -p /tmp/mesh_supp/ RAW ENABLE_NETWORK 0
}

stop_mesh() {
        if [ ! "x${MESH_PID}" = "x" ]; then
                wpa_cli -p /tmp/mesh_supp RAW REMOVE_NETWORK 0
                kill ${MESH_PID}
        fi
        iw dev mesh1 del
}

main() {
        while [ true ]; do
                stop_sta
                stop_mesh
                start_sta
                start_mesh
                sleep 10
                tcpdump -nepi mesh1 -c 4 -Qin broadcast
        done
}                                                             

main



More information about the ath10k mailing list