Fix inverted logic in iwm_tx(). The PROT_REQUIRE flag in should be set for
authorstsp <stsp@openbsd.org>
Mon, 18 Jul 2016 13:09:58 +0000 (13:09 +0000)
committerstsp <stsp@openbsd.org>
Mon, 18 Jul 2016 13:09:58 +0000 (13:09 +0000)
data frames above a certain length, but we were setting it for !data frames
above a certain length, which makes no sense at all. Found while comparing
our driver's Tx code to iwlwifi.
ok mpi@

sys/dev/pci/if_iwm.c

index 21675f6..96cd149 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_iwm.c,v 1.93 2016/07/18 13:09:08 stsp Exp $        */
+/*     $OpenBSD: if_iwm.c,v 1.94 2016/07/18 13:09:58 stsp Exp $        */
 
 /*
  * Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
@@ -4517,7 +4517,7 @@ iwm_tx(struct iwm_softc *sc, struct mbuf *m, struct ieee80211_node *ni, int ac)
                flags |= IWM_TX_CMD_FLG_ACK;
        }
 
-       if (type != IEEE80211_FC0_TYPE_DATA
+       if (type == IEEE80211_FC0_TYPE_DATA
            && (totlen + IEEE80211_CRC_LEN > ic->ic_rtsthreshold)
            && !IEEE80211_IS_MULTICAST(wh->i_addr1)) {
                flags |= IWM_TX_CMD_FLG_PROT_REQUIRE;