On Thu, Feb 10, 2011 at 03:03:57PM +0800, æææ wrote: > > I'm not sure if I understand problem you described. Anyway, > > maybe is enaugh to implement ->flush() in rtlwifi to solve > > the problem? > > I don't think drv_flush in ieee80211_start_sw_scan is needed, because > there's no netif_tx_stop_all_queues before it. > And on my test, all queues still send skb to driver in this drv_flush. Hmm, there must be something wrong ... there is netif_tx_stop_all_queues when interface is not MONITOR. Below are corresponding code snippets: static void ieee80211_scan_state_leave_oper_channel(struct ieee80211_local *local, unsigned long *next_delay) { /* PS will already be in off-channel mode, * we do that once at the beginning of scanning. */ ieee80211_offchannel_stop_vifs(local, false); /* * What if the nullfunc frames didn't arrive? */ drv_flush(local, false); .... void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, bool offchannel_ps_enable) { struct ieee80211_sub_if_data *sdata; /* * notify the AP about us leaving the channel and stop all * STA interfaces. */ mutex_lock(&local->iflist_mtx); list_for_each_entry(sdata, &local->interfaces, list) { if (!ieee80211_sdata_running(sdata)) continue; if (sdata->vif.type != NL80211_IFTYPE_MONITOR) set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); ... if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { netif_tx_stop_all_queues(sdata->dev); -- 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