--- net80211/ieee80211_input.c 2007-05-23 01:43:05.000000000 -0700 +++ net80211/ieee80211_input.c 2007-06-04 02:45:27.000000000 -0700 @@ -3536,10 +3536,14 @@ case IEEE80211_FC0_SUBTYPE_DEAUTH: { u_int16_t reason; - if (vap->iv_state == IEEE80211_S_SCAN) { - vap->iv_stats.is_rx_mgtdiscard++; - return; - } + + if (vap->iv_state == IEEE80211_M_STA && + vap->iv_state == IEEE80211_M_MONITOR && + vap->iv_state == IEEE80211_S_SCAN) { + vap->iv_stats.is_rx_mgtdiscard++; + return; + } + /* * deauth frame format * [2] reason @@ -3572,6 +3576,8 @@ if (vap->iv_state != IEEE80211_S_RUN && vap->iv_state != IEEE80211_S_ASSOC && + vap->iv_state == IEEE80211_M_STA && + vap->iv_state == IEEE80211_M_MONITOR && vap->iv_state != IEEE80211_S_AUTH) { vap->iv_stats.is_rx_mgtdiscard++; return;