From c86ec29ed1ef760f6d2094236ebcf88fa1b8a289 Mon Sep 17 00:00:00 2001 From: Claudio Jeker Date: Mon, 2 Apr 2007 08:41:05 +0000 Subject: Similar to other drivers call if_start() at the end of the rx interrupt because ieee80211_input() may enqueue packets. OK jsg@ --- sys/dev/ic/rtw.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 } -- cgit v1.2.3