From b866247bc7e51d2b7d73621409fa892dec43b42f Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Tue, 20 Feb 2007 14:24:21 +0000 Subject: [PATCH] Don't assume mgtq will always be empty, drain mgtq explicitly. Tested-by: Johannes Hofmann (iwi(4)) --- sys/dev/netif/ipw/if_ipw.c | 9 ++++++--- sys/dev/netif/iwi/if_iwi.c | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/dev/netif/ipw/if_ipw.c b/sys/dev/netif/ipw/if_ipw.c index 07bc50743b..1880449b63 100644 --- a/sys/dev/netif/ipw/if_ipw.c +++ b/sys/dev/netif/ipw/if_ipw.c @@ -27,7 +27,7 @@ * * $Id: if_ipw.c,v 1.7.2.1 2005/01/13 20:01:03 damien Exp $ * $FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.7.2.4 2006/01/29 15:13:01 damien Exp $ - * $DragonFly: src/sys/dev/netif/ipw/Attic/if_ipw.c,v 1.19 2007/01/02 23:28:49 swildner Exp $ + * $DragonFly: src/sys/dev/netif/ipw/Attic/if_ipw.c,v 1.20 2007/02/20 14:24:21 sephe Exp $ */ /*- @@ -1491,9 +1491,12 @@ ipw_start(struct ifnet *ifp) struct mbuf *m0; struct ieee80211_node *ni; - if (ic->ic_state != IEEE80211_S_RUN) { + if (ic->ic_state != IEEE80211_S_RUN) return; - } + + IF_POLL(&ic->ic_mgtq, m0); + if (m0 != NULL) + ieee80211_drain_mgtq(&ic->ic_mgtq); for (;;) { struct ether_header *eh; diff --git a/sys/dev/netif/iwi/if_iwi.c b/sys/dev/netif/iwi/if_iwi.c index 0d915a2d08..6f14a5b541 100644 --- a/sys/dev/netif/iwi/if_iwi.c +++ b/sys/dev/netif/iwi/if_iwi.c @@ -29,7 +29,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.8.2.6 2006/02/23 02:06:46 sam Exp $ - * $DragonFly: src/sys/dev/netif/iwi/if_iwi.c,v 1.18 2006/12/23 09:44:26 sephe Exp $ + * $DragonFly: src/sys/dev/netif/iwi/if_iwi.c,v 1.19 2007/02/20 14:24:21 sephe Exp $ */ /*- @@ -1843,6 +1843,10 @@ iwi_start(struct ifnet *ifp) if (ic->ic_state != IEEE80211_S_RUN) return; + IF_POLL(&ic->ic_mgtq, m0); + if (m0 != NULL) + ieee80211_drain_mgtq(&ic->ic_mgtq); + for (;;) { m0 = ifq_dequeue(&ifp->if_snd, NULL); if (m0 == NULL) -- 2.41.0