On 11/9/23 17:01, Ben Greear wrote:
So, this log is huge. The problem could easily start with the firmware crash, though not certain of that. I have a bunch of radios attempting to associate, in order to reproduce the problems faster, but a single radio will cause the same or similar issue after some time.
[snip big bug report] I am thinking the problem I hit might originate in this code below. The radio's firmware has crashed and/or is bugging at this point, user-space is trying to admin down the wlan. But, the code below probably restores the configuration instead of actually cleaning it up as expected. So maybe we need at least option to not roll back to the old config in cases where we really need to clean things up? ret = ieee80211_check_dup_link_addrs(sdata); if (!ret) { /* for keys we will not be able to undo this */ ieee80211_tear_down_links(sdata, to_free, rem); ieee80211_set_vif_links_bitmaps(sdata, new_links, dormant_links); /* tell the driver */ ret = drv_change_vif_links(sdata->local, sdata, old_links & old_active, new_links & sdata->vif.active_links, old); if (!new_links) ieee80211_debugfs_recreate_netdev(sdata, false); } if (ret) { sdata_info(sdata, "vif-update-links, error applying links: %d Restoring old configuration, links: 0x%x dormant_links: 0x%x\n", ret, old_links, dormant_links); /* restore config */ memcpy(sdata->link, old_data, sizeof(old_data)); memcpy(sdata->vif.link_conf, old, sizeof(old)); ieee80211_set_vif_links_bitmaps(sdata, old_links, dormant_links); /* and free (only) the newly allocated links */ memset(to_free, 0, sizeof(links)); goto free; } Thanks, Ben