On Fri, 2013-05-10 at 14:21 -0700, Ben Greear wrote: > void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, > struct net_device *dev) > { > struct wireless_dev *wdev = dev->ieee80211_ptr; > struct cfg80211_deauth_request req; > u8 bssid[ETH_ALEN]; > > ASSERT_WDEV_LOCK(wdev); > > printk("mlme_down: %s: type: %i sme_state: %i current-bss: %p\n", > dev->name, (int)(wdev->iftype), (int)(wdev->sme_state), > wdev->current_bss); > > I see this printout for the stuck station (this is dmesg | grep sta74, > so it skips errors about other interfaces that are also hung). > > I am guessing we should never be calling mlme_down with state > of CFG80211_SME_CONNECTED when bss is NULL? We should _never_ be in a state where current_bss is NULL but the state is != IDLE. The question I can't seem to find an answer for is how we got into that state, that we're in the state in down() is really less interesting. Since you seem to be able to reproduce this, maybe it'd help to mark all state transitions and current_bss assignments, and then backtrack them after the fact. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html