OpenWrt Forum Archive

Topic: AR9331 STA+AP config fails with a kernel core dump ...

The content of this topic has been archived on 30 Mar 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi there,

router#1 & router#2 - SOM9331 (open source hardware from alibaba) based on Atheros 9331..

I'm trying to configure two routers, router#1 as 'ap' and router#2 as 'ap+sta'.
On router#2, after making the config change if i restart the network, i get a core dump at
compat-wireless-2016-05-12/net/mac80211/sta_info.c:450 sta_info_insert_rcu+0xac/0x580 [mac80211]()

with the below core dumps, have any one seen this ?

[ 6483.245755] wlan0: failed to insert STA entry for the AP (error -22)
[ 6494.655458] wlan0: authenticate with 00:11:33:22:44:55
[ 6494.670847] ------------[ cut here ]------------
[ 6494.674236] WARNING: CPU: 0 PID: 2896 at compat-wireless-2016-05-12/net/mac80211/sta_info.c:450 sta_info_insert_rcu+0xac/0x580 [mac80211]()
[ 6494.686738] Modules linked in: ath9k ath9k_common pppoe ppp_async iptable_nat ath9k_hw ath pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_CT usbserial spidev spi_gpio slhc nf_reject_ipv4 nf_nat_redirect nf_nat_masquerade_ipv4 nf_nat nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack iptable_raw iptable_mangle iptable_filter ip_tables crc_ccitt compat i2c_dev ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables usb_storage ehci_platform ehci_hcd sd_mod scsi_mod gpio_button_hotplug usbcore nls_base usb_common
[ 6494.756246] CPU: 0 PID: 2896 Comm: wpa_supplicant Tainted: G        W       4.4.14 #12
[ 6494.764141] Stack : 803ba164 00000000 00000001 80410000 838af480 80400d63 8039b8a0 00000b50
          80463790 8320cb20 8303a138 00000000 8320cb20 800a678c 803a0ee4 80400000
          00000003 8320cb20 8039f2f0 838759ac 8320cb20 800a4758 8320d3e0 00000000
          803ffe70 801f2b00 00000000 00000000 00000000 00000000 00000000 00000000
          00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
          ...
[ 6494.799541] Call Trace:
[ 6494.801996] [<8007197c>] show_stack+0x50/0x84
[ 6494.806416] [<80081580>] warn_slowpath_common+0xa0/0xd0
[ 6494.811572] [<80081634>] warn_slowpath_null+0x18/0x24
[ 6494.816738] [<83184dd8>] sta_info_insert_rcu+0xac/0x580 [mac80211]
[ 6494.822895] [<831b64f4>] ieee80211_ap_probereq_get+0x15d4/0x163c [mac80211]
[ 6494.829793]
[ 6494.831144] ---[ end trace f1f981f912d039df ]---


root@OpenWrt:/# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option macaddr 'fe:ed:f0:0d:a1:12'
        option channel '1'
        option hwmode '11g'
        option path 'platform/ar933x_wmac'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface
        option device 'radio0'
        option mode 'ap'
#        option wds '0'
        option network 'aplan'
        option ssid 'xxxxxxx'
        option encryption 'psk2'
        option key 'xxxx'

config wifi-iface
        option device 'radio0'
        option mode 'sta'
#       option wds '1'
        option network 'wlan'
        option ssid 'xxxxx'
        option encryption 'psk2'
        option key 'xxxx'

root@OpenWrt:/# cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'

config interface 'wlan'
        option netmask '255.255.255.0'
        option proto 'dhcp'

config interface 'aplan'
        option netmask '255.255.255.0'
        option proto 'static'
        option ipaddr '11.11.11.2'

config interface 'lan'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.1.150'
        option macaddr 'fe:ed:f0:0d:a1:13'
        option netmask '255.255.255.0'
        option gateway '192.168.1.1'
        option dns '192.168.1.250'
        option broadcast '192.168.1.255'


root@OpenWrt:/# cat /etc/config/dhcp

config dnsmasq
        option domainneeded '1'
        option boguspriv '1'
        option filterwin2k '0'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option nonegcache '0'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option localservice '1'

config dhcp 'lan'
        option interface 'lan'
        option start '200'
        option limit '64'
        option leasetime '12h'
        option ignore '1'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config dhcp 'aplan'
        option start '100'
        option leasetime '12h'
        option limit '150'
        option interface 'aplan'

It's not a panic - it's a warning. It comes from the WARN_ON macro and is meant to catch bugs in user space code 

static int sta_info_insert_check(struct sta_info *sta)
{
    struct ieee80211_sub_if_data *sdata = sta->sdata;

    /*
     * Can't be a WARN_ON because it can be triggered through a race:
     * something inserts a STA (on one CPU) without holding the RTNL
     * and another CPU turns off the net device.
     */
    if (unlikely(!ieee80211_sdata_running(sdata)))
        return -ENETDOWN;

    if (WARN_ON(ether_addr_equal(sta->sta.addr, sdata->vif.addr) ||
            is_multicast_ether_addr(sta->sta.addr)))
        return -EINVAL;

    /* The RCU read lock is required by rhashtable due to
     * asynchronous resize/rehash.  We also require the mutex
     * for correctness.
     */
    rcu_read_lock();
    lockdep_assert_held(&sdata->local->sta_mtx);
    if (ieee80211_hw_check(&sdata->local->hw, NEEDS_UNIQUE_STA_ADDR) &&
        ieee80211_find_sta_by_ifaddr(&sdata->local->hw, sta->addr, NULL)) {
        rcu_read_unlock();
        return -ENOTUNIQ;
    }
    rcu_read_unlock();

    return 0;
}

The problem is almost certainly your configuration and is mac address related. Try remove the macaddr option from the wifi-device section in your /etc/config/wireless. This is only used to identify the device and not to change the mac. It should be autodetected.

Hi, I have removed the mac address but still i get the issue. I'm not sure it is mac related, but i guess it is to do with my configuration.

The discussion might have continued from here.