diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2015-05-03 23:40:12 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2015-05-03 23:40:12 +0000 |
commit | 3077c104f50aea882da7a4fa534d587133d18921 (patch) | |
tree | 98392e81796f36af264663f68646aeee94eebf0d /sys/dev/wpi | |
parent | a20c9aff424ac6c93e268dca47b13117d54d711d (diff) | |
download | src-3077c104f50aea882da7a4fa534d587133d18921.tar.gz src-3077c104f50aea882da7a4fa534d587133d18921.zip |
[iwn] Do not filter control frames in monitor mode.
PR: kern/197143
Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
Notes
Notes:
svn path=/head/; revision=282402
Diffstat (limited to 'sys/dev/wpi')
-rw-r--r-- | sys/dev/wpi/if_wpi.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/wpi/if_wpi.c b/sys/dev/wpi/if_wpi.c index 320961d73c3e..7b438c7024b9 100644 --- a/sys/dev/wpi/if_wpi.c +++ b/sys/dev/wpi/if_wpi.c @@ -1972,7 +1972,7 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc, goto fail1; } /* Discard frames that are too short. */ - if (len < sizeof (*wh)) { + if (len < sizeof (struct ieee80211_frame_ack)) { DPRINTF(sc, WPI_DEBUG_RECV, "%s: frame too short: %d\n", __func__, len); goto fail1; @@ -2033,7 +2033,11 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc, m->m_flags |= M_WEP; } - ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh); + if (len >= sizeof(struct ieee80211_frame_min)) + ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh); + else + ni = NULL; + sc->rx_tstamp = tail->tstamp; if (ieee80211_radiotap_active(ic)) { |