summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-07-24 15:37:02 +0000
committersam <sam@FreeBSD.org>2009-07-24 15:37:02 +0000
commitd6e0586219d19788c9ead7bdea50914572e7f5f2 (patch)
tree9db07d427a5f22a5d1b0f87382fde30668cfe38b
parent33f3a67bc1f6ed041c320e4d7ebf363b010178db (diff)
downloadFreeBSD-src-d6e0586219d19788c9ead7bdea50914572e7f5f2.zip
FreeBSD-src-d6e0586219d19788c9ead7bdea50914572e7f5f2.tar.gz
revert OACTIVE part of r195845; instead fix the comment so it does not refer
to the old hack removed in r193312 Approved by: re (implicit)
-rw-r--r--sys/net80211/ieee80211_output.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index afbbfc3..f1a21bc 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -382,10 +382,22 @@ ieee80211_output(struct ifnet *ifp, struct mbuf *m,
{
#define senderr(e) do { error = (e); goto bad;} while (0)
struct ieee80211_node *ni = NULL;
- struct ieee80211vap *vap = ifp->if_softc;
+ struct ieee80211vap *vap;
struct ieee80211_frame *wh;
int error;
+ if (ifp->if_drv_flags & IFF_DRV_OACTIVE) {
+ /*
+ * Short-circuit requests if the vap is marked OACTIVE
+ * as this can happen because a packet came down through
+ * ieee80211_start before the vap entered RUN state in
+ * which case it's ok to just drop the frame. This
+ * should not be necessary but callers of if_output don't
+ * check OACTIVE.
+ */
+ senderr(ENETDOWN);
+ }
+ vap = ifp->if_softc;
/*
* Hand to the 802.3 code if not tagged as
* a raw 802.11 frame.
OpenPOWER on IntegriCloud