Don't return ENOBUFS if the transmit path handles the frame but queues it (eg in power save.)

This is definitely an MFC candidate for 10.0-REL.

MFC after:	1 week
This commit is contained in:
Adrian Chadd 2013-11-06 17:20:49 +00:00
parent f26725de09
commit c6d5b60008

View file

@ -144,8 +144,12 @@ ieee80211_vap_pkt_send_dest(struct ieee80211vap *vap, struct mbuf *m,
*/
(void) ieee80211_pwrsave(ni, m);
ieee80211_free_node(ni);
/* XXX better status? */
return (ENOBUFS);
/*
* We queued it fine, so tell the upper layer
* that we consumed it.
*/
return (0);
}
/* calculate priority so drivers can find the tx queue */
if (ieee80211_classify(ni, m)) {
@ -156,8 +160,9 @@ ieee80211_vap_pkt_send_dest(struct ieee80211vap *vap, struct mbuf *m,
ifp->if_oerrors++;
m_freem(m);
ieee80211_free_node(ni);
/* XXX better status? */
return (ENOBUFS);
return (0);
}
/*
* Stash the node pointer. Note that we do this after
@ -169,7 +174,6 @@ ieee80211_vap_pkt_send_dest(struct ieee80211vap *vap, struct mbuf *m,
BPF_MTAP(ifp, m); /* 802.3 tx */
/*
* Check if A-MPDU tx aggregation is setup or if we
* should try to enable it. The sta must be associated