summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2016-12-08 17:24:25 +0000
committerstsp <stsp@openbsd.org>2016-12-08 17:24:25 +0000
commite621338f183aaf02b88593bdcba8c4e3e0430e96 (patch)
treefe987232fdb865b51d809bbbda73e576e4d8f21a
parentReturn ENODEV if playback is requested on devices with no DACs or (diff)
downloadwireguard-openbsd-e621338f183aaf02b88593bdcba8c4e3e0430e96.tar.xz
wireguard-openbsd-e621338f183aaf02b88593bdcba8c4e3e0430e96.zip
iwm(4) was stripping some bits from the MCS index value before passing
it to bpf for tcpdump(8). Fix it so MCS >= 8 get passed on correctly. ok phessler@
-rw-r--r--sys/dev/pci/if_iwm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/pci/if_iwm.c b/sys/dev/pci/if_iwm.c
index f890d5b4f74..baac7627b4e 100644
--- a/sys/dev/pci/if_iwm.c
+++ b/sys/dev/pci/if_iwm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_iwm.c,v 1.150 2016/12/06 12:57:20 stsp Exp $ */
+/* $OpenBSD: if_iwm.c,v 1.151 2016/12/08 17:24:25 stsp Exp $ */
/*
* Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
@@ -3321,7 +3321,8 @@ iwm_rx_rx_mpdu(struct iwm_softc *sc, struct iwm_rx_packet *pkt,
if (phy_info->phy_flags &
htole16(IWM_RX_RES_PHY_FLAGS_OFDM_HT)) {
uint8_t mcs = (phy_info->rate_n_flags &
- htole32(IWM_RATE_HT_MCS_RATE_CODE_MSK));
+ htole32(IWM_RATE_HT_MCS_RATE_CODE_MSK |
+ IWM_RATE_HT_MCS_NSS_MSK));
tap->wr_rate = (0x80 | mcs);
} else {
uint8_t rate = (phy_info->rate_n_flags &