Skip to content

Commit 80351a1

Browse files
committed
Add a workaround for iwlwifi module crash
See QubesOS/qubes-issues#5615. To enable, add `iwlwifi.disable_rxq=1` to kernel options: opt=$(qvm-prefs --get sys-net kernelopts) qvm-prefs --set sys-net kernelopts "$opt iwlwifi.disable_rxq=1"
1 parent 11c7637 commit 80351a1

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

0014-iwlwifi-disable-rxq.patch

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
commit 3ef75019cdad54053edfa0ace8803a99388078df (HEAD -> qubes)
2+
Author: Paweł Marczewski <pawel@invisiblethingslab.com>
3+
Date: Tue Sep 22 13:24:09 2020 +0200
4+
5+
iwlwifi: add a disable_rxq switch
6+
7+
Workaround for issues with Intel wireless cards under Qubes:
8+
9+
https://github.com/QubesOS/qubes-issues/issues/5615
10+
11+
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
12+
index 04f14bfdd091..d3cd1d761ba0 100644
13+
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
14+
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
15+
@@ -1876,3 +1876,7 @@ MODULE_PARM_DESC(remove_when_gone,
16+
module_param_named(disable_11ax, iwlwifi_mod_params.disable_11ax, bool,
17+
S_IRUGO);
18+
MODULE_PARM_DESC(disable_11ax, "Disable HE capabilities (default: false)");
19+
+
20+
+module_param_named(disable_rxq, iwlwifi_mod_params.disable_rxq, bool,
21+
+ S_IRUGO);
22+
+MODULE_PARM_DESC(disable_rxq, "Disable RX queue configuration (default: false)");
23+
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h b/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h
24+
index e8ce3a300857..d48933fa173d 100644
25+
--- a/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h
26+
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h
27+
@@ -137,6 +137,7 @@ struct iwl_mod_params {
28+
bool disable_11ax;
29+
bool remove_when_gone;
30+
bool enable_ini;
31+
+ bool disable_rxq;
32+
};
33+
34+
static inline bool iwl_enable_rx_ampdu(void)
35+
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
36+
index 95a613537047..9c0dc72f7d18 100644
37+
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
38+
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
39+
@@ -1241,7 +1241,8 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
40+
}
41+
42+
/* Init RSS configuration */
43+
- if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) {
44+
+ if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000 &&
45+
+ !iwlwifi_mod_params.disable_rxq) {
46+
ret = iwl_configure_rxq(mvm);
47+
if (ret) {
48+
IWL_ERR(mvm, "Failed to configure RX queues: %d\n",

kernel.spec.in

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,9 @@ Patch9: 0010-xen-netfront-add-range-check-for-Tx-response-id.patch
132132
Patch10: 0011-xen-blkfront-make-local-copy-of-response-before-usin.patch
133133
Patch11: 0012-xen-blkfront-prepare-request-locally-only-then-put-i.patch
134134
Patch12: 0013-xen-pcifront-pciback-Update-pciif.h-with-err-and-res.patch
135-
Patch13: 0001-Create-uapi-power_supply-from-enums-and-power_supply.patch
136-
Patch14: 0002-uapi-linux-power_supply.h-add-power_supply_is_str_pr.patch
135+
Patch13: 0014-iwlwifi-disable-rxq.patch
136+
Patch14: 0001-Create-uapi-power_supply-from-enums-and-power_supply.patch
137+
Patch15: 0002-uapi-linux-power_supply.h-add-power_supply_is_str_pr.patch
137138

138139
%description
139140
Qubes Dom0 kernel.

0 commit comments

Comments
 (0)