On Thu, 2010-11-25 at 16:39 +0200, Shahar Levi wrote: > +void ieee80211_stop_rx_ba_session(struct ieee80211_vif *vif, u16 tid, > + const u8 *addr); missing docs > +void ieee80211_stop_rx_ba_session(struct ieee80211_vif *vif, u16 tid, > + const u8 *addr) > +{ > + struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); > + struct sta_info *sta = sta_info_get(sdata, addr); > + > + __ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_INITIATOR, 0, true); > +} > +EXPORT_SYMBOL(ieee80211_stop_rx_ba_session); Locking-wise, this is a disaster, as the function will acquire a mutex that it also holds across other calls into the driver. It would seem that this should have caused lockdep to warn you about ABBA style deadlock since you call this with wl->mutex held, and previously you said you were going to acquire that mutex from ampdu_action. This should use a similar trick to the one used in TX aggregation. 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