summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorAndriy Voskoboinyk <avos@FreeBSD.org>2016-07-26 20:26:03 +0000
committerAndriy Voskoboinyk <avos@FreeBSD.org>2016-07-26 20:26:03 +0000
commit16542d14b16d3392b2e0ee2ad0fd317ac22e53e2 (patch)
tree550d29ee6c512cc1e4d0ebd8cd760eaeac142101 /sys/dev
parent6ebcad9859f54d57b989bf83d11d19318b9cdaa7 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/urtwn/if_urtwn.c4
-rw-r--r--sys/dev/urtwn/if_urtwnreg.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/urtwn/if_urtwn.c b/sys/dev/urtwn/if_urtwn.c
index f5d38189a846..72f3e67e0e16 100644
--- a/sys/dev/urtwn/if_urtwn.c
+++ b/sys/dev/urtwn/if_urtwn.c
@@ -2318,6 +2318,10 @@ urtwn_key_set_cb(struct urtwn_softc *sc, union sec_param *data)
k->wk_cipher->ic_cipher, algo, k->wk_flags, k->wk_keylen,
ether_sprintf(k->wk_macaddr));
+ /* Clear high bits. */
+ urtwn_cam_write(sc, R92C_CAM_CTL6(k->wk_keyix), 0);
+ urtwn_cam_write(sc, R92C_CAM_CTL7(k->wk_keyix), 0);
+
/* Write key. */
for (i = 0; i < 4; i++) {
error = urtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i),
diff --git a/sys/dev/urtwn/if_urtwnreg.h b/sys/dev/urtwn/if_urtwnreg.h
index e80fd07fce3f..aff9b1336b45 100644
--- a/sys/dev/urtwn/if_urtwnreg.h
+++ b/sys/dev/urtwn/if_urtwnreg.h
@@ -871,6 +871,8 @@
#define R92C_CAM_CTL0(entry) ((entry) * 8 + 0)
#define R92C_CAM_CTL1(entry) ((entry) * 8 + 1)
#define R92C_CAM_KEY(entry, i) ((entry) * 8 + 2 + (i))
+#define R92C_CAM_CTL6(entry) ((entry) * 8 + 6)
+#define R92C_CAM_CTL7(entry) ((entry) * 8 + 7)
/* Bits for R92C_CAM_CTL0(i). */
#define R92C_CAM_KEYID_M 0x00000003