summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2007-04-02 08:41:05 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2007-04-02 08:41:05 +0000
commitc86ec29ed1ef760f6d2094236ebcf88fa1b8a289 (patch)
tree8c74f9bc79adbd04c18a0c9799fcd430bbc0fadd /sys
parentd15b9ae53a44ced47f4bb732a599f17a8b87e229 (diff)
Similar to other drivers call if_start() at the end of the rx interrupt because
ieee80211_input() may enqueue packets. OK jsg@
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ic/rtw.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/ic/rtw.c b/sys/dev/ic/rtw.c
index 6bcb85cc78d..12d55288950 100644
--- a/sys/dev/ic/rtw.c
+++ b/sys/dev/ic/rtw.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtw.c,v 1.58 2007/02/14 04:59:55 jsg Exp $ */
+/* $OpenBSD: rtw.c,v 1.59 2007/04/02 08:41:04 claudio Exp $ */
/* $NetBSD: rtw.c,v 1.29 2004/12/27 19:49:16 dyoung Exp $ */
/*-
@@ -1343,6 +1343,14 @@ next:
KASSERT(rdb->rdb_next < rdb->rdb_ndesc);
+ /*
+ * In HostAP mode, ieee80211_input() will enqueue packets in if_snd
+ * without calling if_start().
+ */
+ if (!IFQ_IS_EMPTY(&sc->sc_if.if_snd) &&
+ !(sc->sc_if.if_flags & IFF_OACTIVE))
+ (*sc->sc_if.if_start)(&sc->sc_if);
+
return;
#undef IS_BEACON
}