Index: sys/dev/iwn/if_iwn.c =================================================================== --- sys/dev/iwn/if_iwn.c (revision 307664) +++ sys/dev/iwn/if_iwn.c (working copy) @@ -4903,6 +4903,8 @@ IWN_LOCK(sc); if ((sc->sc_flags & IWN_FLAG_RUNNING) == 0) { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, 1); m_freem(m); IWN_UNLOCK(sc); return (ENETDOWN); @@ -4911,6 +4913,8 @@ /* queue frame if we have to */ if (sc->sc_beacon_wait) { if (iwn_xmit_queue_enqueue(sc, m) != 0) { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, 1); m_freem(m); IWN_UNLOCK(sc); return (ENOBUFS); @@ -4935,8 +4939,11 @@ } if (error == 0) sc->sc_tx_timer = 5; - else + else { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, 1); m_freem(m); + } IWN_UNLOCK(sc);