if_wi_hostap.c basically inlines what if_enqueue does, but badly. more specifically, it uses IF_FOO operations to manipulate the interfaces send queue, but they only work if you're using priq. if you have hfsc on the interface it's not going to work well.
this makes it just call if_enqueue. ok? Index: if_wi_hostap.c =================================================================== RCS file: /cvs/src/sys/dev/ic/if_wi_hostap.c,v retrieving revision 1.47 diff -u -p -r1.47 if_wi_hostap.c --- if_wi_hostap.c 18 Nov 2014 02:37:30 -0000 1.47 +++ if_wi_hostap.c 4 Nov 2015 00:27:37 -0000 @@ -1163,18 +1163,7 @@ wihap_data_input(struct wi_softc *sc, st /* Queue up for repeating. */ - if (IF_QFULL(&ifp->if_snd)) { - IF_DROP(&ifp->if_snd); - m_freem(m); - } - else { - ifp->if_obytes += m->m_pkthdr.len; - if (m->m_flags & M_MCAST) - ifp->if_omcasts++; - IF_ENQUEUE(&ifp->if_snd, m); - if ((ifp->if_flags & IFF_OACTIVE) == 0) - (*ifp->if_start)(ifp); - } + if_enqueue(ifp, m); return (!mcast); }