summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_freebsd.h
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2007-03-07 04:42:22 +0000
committersam <sam@FreeBSD.org>2007-03-07 04:42:22 +0000
commit519f61f9957d9a7307fe381d04f1ae9ebbf6137f (patch)
tree783d971edc20e5ec5dd605945b690d9232c36062 /sys/net80211/ieee80211_freebsd.h
parent24d9d9d38048472a526ad8fd061b7e5d587ac709 (diff)
downloadFreeBSD-src-519f61f9957d9a7307fe381d04f1ae9ebbf6137f.zip
FreeBSD-src-519f61f9957d9a7307fe381d04f1ae9ebbf6137f.tar.gz
When dispatching frames saved on the power save queue to a
station exiting power save mode prepend them to the driver's send q instead of appending them. This insures the packets are not misordered wrt any packets already q'd for the station. This corrects a problem noticed when using a VoIP phone talking to an ath card in ap mode; the misordered packets caused noise. Submitted by: "J.R. Oldroyd" <jr@opal.com> MFC after: 2 weeks
Diffstat (limited to 'sys/net80211/ieee80211_freebsd.h')
-rw-r--r--sys/net80211/ieee80211_freebsd.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h
index 48ffd6e..9880b69 100644
--- a/sys/net80211/ieee80211_freebsd.h
+++ b/sys/net80211/ieee80211_freebsd.h
@@ -115,6 +115,21 @@ typedef struct mtx ieee80211_scan_lock_t;
(_qlen) = ++(_ni)->ni_savedq.ifq_len; \
} while (0)
+#ifndef IF_PREPEND_LIST
+#define _IF_PREPEND_LIST(ifq, mhead, mtail, mcount) do { \
+ (mtail)->m_nextpkt = (ifq)->ifq_head; \
+ if ((ifq)->ifq_tail == NULL) \
+ (ifq)->ifq_tail = (mtail); \
+ (ifq)->ifq_head = (mhead); \
+ (ifq)->ifq_len += (mcount); \
+} while (0)
+#define IF_PREPEND_LIST(ifq, mhead, mtail, mcount) do { \
+ IF_LOCK(ifq); \
+ _IF_PREPEND_LIST(ifq, mhead, mtail, mcount); \
+ IF_UNLOCK(ifq); \
+} while (0)
+#endif /* IF_PREPEND_LIST */
+
/*
* 802.1x MAC ACL database locking definitions.
*/
OpenPOWER on IntegriCloud