if_start() is being used here as a way of kick-starting the new queue

processing.  For if_transmit() style hardware drivers (which none publicly
exist yet, for wireless) they will need to still implement if_start()
but only to re-start the TX queue.
This commit is contained in:
Adrian Chadd 2012-12-22 01:17:49 +00:00
parent 88954eb02e
commit a7f31a3636

View File

@ -1787,6 +1787,11 @@ ieee80211_newstate_cb(void *xvap, int npending)
IF_LOCK(&vap->iv_ifp->if_snd);
vap->iv_ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
IF_UNLOCK(&vap->iv_ifp->if_snd);
/*
* XXX Kick-start a VAP queue - this should be a method,
* not if_start()!
*/
if_start(vap->iv_ifp);
/* bring up any vaps waiting on us */