summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2019-11-04 12:20:40 +0000
committerstsp <stsp@openbsd.org>2019-11-04 12:20:40 +0000
commita814ed52c0af4b7479e3c2b6dd1d7c68972a1b50 (patch)
tree015453fb4c5823c787f864aceece75107330b9f0
parentiwm API version -31 firmware and up will crash after load unless the driver (diff)
downloadwireguard-openbsd-a814ed52c0af4b7479e3c2b6dd1d7c68972a1b50.tar.xz
wireguard-openbsd-a814ed52c0af4b7479e3c2b6dd1d7c68972a1b50.zip
Don't send the BT coex config command to iwm 8k init firmware because newer
firmware versions will crash when we do that. Debugged together with patrick. ok patrick@
-rw-r--r--sys/dev/pci/if_iwm.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/sys/dev/pci/if_iwm.c b/sys/dev/pci/if_iwm.c
index 135daeb696f..c5267bef3ae 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.273 2019/11/04 12:16:48 stsp Exp $ */
+/* $OpenBSD: if_iwm.c,v 1.274 2019/11/04 12:20:40 stsp Exp $ */
/*
* Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
@@ -3349,6 +3349,15 @@ iwm_run_init_mvm_ucode(struct iwm_softc *sc, int justnvm)
return err;
}
+ if (sc->sc_device_family < IWM_DEVICE_FAMILY_8000) {
+ err = iwm_send_bt_init_conf(sc);
+ if (err) {
+ printf("%s: could not init bt coex (error %d)\n",
+ DEVNAME(sc), err);
+ return err;
+ }
+ }
+
if (justnvm) {
err = iwm_nvm_init(sc);
if (err) {
@@ -3363,10 +3372,6 @@ iwm_run_init_mvm_ucode(struct iwm_softc *sc, int justnvm)
return 0;
}
- err = iwm_send_bt_init_conf(sc);
- if (err)
- return err;
-
if (isset(sc->sc_enabled_capa, IWM_UCODE_TLV_CAPA_DQA_SUPPORT)) {
err = iwm_send_dqa_cmd(sc);
if (err)
@@ -6697,13 +6702,6 @@ iwm_init_hw(struct iwm_softc *sc)
if (!iwm_nic_lock(sc))
return EBUSY;
- err = iwm_send_bt_init_conf(sc);
- if (err) {
- printf("%s: could not init bt coex (error %d)\n",
- DEVNAME(sc), err);
- goto err;
- }
-
err = iwm_send_tx_ant_cfg(sc, iwm_fw_valid_tx_ant(sc));
if (err) {
printf("%s: could not init tx ant config (error %d)\n",
@@ -6725,6 +6723,13 @@ iwm_init_hw(struct iwm_softc *sc)
goto err;
}
+ err = iwm_send_bt_init_conf(sc);
+ if (err) {
+ printf("%s: could not init bt coex (error %d)\n",
+ DEVNAME(sc), err);
+ return err;
+ }
+
/* Add auxiliary station for scanning */
err = iwm_add_aux_sta(sc);
if (err) {