On Thu, 2012-08-02 at 10:11 -0600, Daniel Drake wrote: > On Thu, Aug 2, 2012 at 2:02 AM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > > Oh, hm. I didn't think it could unregister before we give up our > > reference, but I guess that makes sense after all. > > > > I'm not sure there's an easy way to fix it other than making the driver > > not call cfg80211_disconnected() in case the disconnect was requested by > > cfg80211 -- that call isn't needed and will not do anything at all, but > > I'm not sure how easy that would be in the driver? > > I guess you've considered clearing all the pending work before > removing a netdev from the rdev's list? Yes, but we can't just try to flush the workqueue because of locking concerns in this area. Hmm. Then again, I think we can call cfg80211_process_wdev_events() from case NETDEV_UNREGISTER though, probably after removing from the list. Maybe you could try that? > I think a driver modification would be easy, if it is the right solution. > > lbs_disconnect() is the function that calls cfg80211_disconnected(). > We only ever call this in 2 contexts: > > 1. From our cfg80211_ops.disconnect handler - you say this isn't needed > 2. From the netdev ndo_stop handler - I guess it is also not necessary > to inform cfg80211 that we have disconnected at this point, it is kind > of obvious..? In fact, you won't get to ndo_stop without cfg80211 calling disconnect(), because it does that from NETDEV_GOING_DOWN. > So completely removing the call to cfg80211_disconnected() may be the > right option here, is that what you recommend? I'm not 100% sure about the API in this area right now though, it's been a while and I never worked much with this API (rather than the mac80211 one with auth/assoc/disassoc/deauth.) 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