On Thu, Jan 17, 2013 at 12:34:14AM +0100, Johannes Berg wrote: > On Tue, 2013-01-08 at 12:10 -0600, Seth Forshee wrote: > > > +++ b/net/mac80211/offchannel.c > > @@ -136,8 +136,23 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, > > netif_tx_stop_all_queues(sdata->dev); > > if (offchannel_ps_enable && > > (sdata->vif.type == NL80211_IFTYPE_STATION) && > > - sdata->u.mgd.associated) > > + sdata->u.mgd.associated) { > > + /* > > + * Need to flush frames in driver queues > > + * before sending nullfunc. Otherwise > > + * devices which support QoS may send the > > + * nullfunc before these queued frames, and > > + * those frames may not have PM set. > > + * > > + * XXX: Would be nice to not flush for each > > + * vif, however I don't see that there's any > > + * protection to prevent frames being handed > > + * to the driver before stopping the netdev > > + * queue. > > + */ > > + drv_flush(local, false); > > ieee80211_offchannel_ps_enable(sdata); > > Could we split the loop, and send the frames in a second loop, to > combine the flushes into a single one? I started thinking about just that earlier today. Seems like it ought to be possible. Seth -- 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