Merge ~vicamo/ubuntu/+source/backport-iwlwifi-dkms/+git/backport-iwlwifi-dkms:for-focal/new-upstream-release-8286 into ~canonical-hwe-team/ubuntu/+source/backport-iwlwifi-dkms/+git/backport-iwlwifi-dkms:ubuntu/focal
- Git
- lp:~vicamo/ubuntu/+source/backport-iwlwifi-dkms/+git/backport-iwlwifi-dkms
- for-focal/new-upstream-release-8286
- Merge into ubuntu/focal
Proposed by
You-Sheng Yang
Status: | Merged |
---|---|
Merged at revision: | 6cf1a2d7a8c6869a17ece6e89309644202e68ef9 |
Proposed branch: | ~vicamo/ubuntu/+source/backport-iwlwifi-dkms/+git/backport-iwlwifi-dkms:for-focal/new-upstream-release-8286 |
Merge into: | ~canonical-hwe-team/ubuntu/+source/backport-iwlwifi-dkms/+git/backport-iwlwifi-dkms:ubuntu/focal |
Diff against target: |
17546 lines (+6404/-3899) 142 files modified
.gitignore (+3/-0) Kconfig.local (+6/-0) MAINTAINERS (+1/-0) Makefile.build (+7/-0) backport-include/linux/mm.h (+8/-1) backport-include/linux/module.h (+2/-2) backport-include/linux/pci.h (+11/-0) backport-include/linux/skbuff.h (+8/-0) backport-include/net/genetlink.h (+10/-0) backport-include/net/netlink.h (+12/-0) backport-include/net/xfrm.h (+14/-0) compat/Kconfig (+10/-0) compat/Makefile (+1/-0) compat/lib-crypto-arc4.c (+74/-0) debian/backport-iwlwifi-dkms.modaliases (+242/-684) debian/changelog (+13/-0) debian/patches/0006-backport-address-interface-change-in-linux-skbuff.h-.patch (+37/-74) debian/patches/series (+0/-2) debian/tests/control (+1/-7) debian/tests/dkms-autopkgtest (+32/-5) dev/null (+0/-51) drivers/net/wireless/intel/iwlwifi/Kconfig (+1/-1) drivers/net/wireless/intel/iwlwifi/Kconfig.noupstream (+13/-0) drivers/net/wireless/intel/iwlwifi/Makefile (+8/-4) drivers/net/wireless/intel/iwlwifi/cfg/22000.c (+137/-302) drivers/net/wireless/intel/iwlwifi/cfg/7000.c (+1/-2) drivers/net/wireless/intel/iwlwifi/cfg/8000.c (+1/-2) drivers/net/wireless/intel/iwlwifi/cfg/9000.c (+40/-155) drivers/net/wireless/intel/iwlwifi/fw/acpi.c (+297/-4) drivers/net/wireless/intel/iwlwifi/fw/acpi.h (+84/-0) drivers/net/wireless/intel/iwlwifi/fw/api/commands.h (+7/-0) drivers/net/wireless/intel/iwlwifi/fw/api/d3.h (+38/-1) drivers/net/wireless/intel/iwlwifi/fw/api/location.h (+145/-5) drivers/net/wireless/intel/iwlwifi/fw/api/scan.h (+166/-65) drivers/net/wireless/intel/iwlwifi/fw/api/soc.h (+14/-10) drivers/net/wireless/intel/iwlwifi/fw/api/sta.h (+4/-6) drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h (+3/-1) drivers/net/wireless/intel/iwlwifi/fw/api/tx.h (+8/-5) drivers/net/wireless/intel/iwlwifi/fw/dbg.c (+113/-52) drivers/net/wireless/intel/iwlwifi/fw/dbg.h (+0/-11) drivers/net/wireless/intel/iwlwifi/fw/debugfs.c (+2/-29) drivers/net/wireless/intel/iwlwifi/fw/img.c (+100/-0) drivers/net/wireless/intel/iwlwifi/fw/img.h (+3/-18) drivers/net/wireless/intel/iwlwifi/fw/runtime.h (+20/-21) drivers/net/wireless/intel/iwlwifi/iwl-config.h (+89/-104) drivers/net/wireless/intel/iwlwifi/iwl-context-info.h (+10/-10) drivers/net/wireless/intel/iwlwifi/iwl-csr.h (+28/-4) drivers/net/wireless/intel/iwlwifi/iwl-dbg-cfg.c (+35/-0) drivers/net/wireless/intel/iwlwifi/iwl-dbg-cfg.h (+12/-1) drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c (+35/-47) drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.h (+0/-1) drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h (+5/-3) drivers/net/wireless/intel/iwlwifi/iwl-drv.c (+31/-9) drivers/net/wireless/intel/iwlwifi/iwl-fh.h (+2/-5) drivers/net/wireless/intel/iwlwifi/iwl-io.c (+3/-34) drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c (+68/-17) drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.h (+3/-3) drivers/net/wireless/intel/iwlwifi/iwl-prph.h (+8/-7) drivers/net/wireless/intel/iwlwifi/iwl-tm-infc.h (+4/-2) drivers/net/wireless/intel/iwlwifi/iwl-trans.c (+5/-5) drivers/net/wireless/intel/iwlwifi/iwl-trans.h (+68/-10) drivers/net/wireless/intel/iwlwifi/mvm/constants.h (+11/-0) drivers/net/wireless/intel/iwlwifi/mvm/d3.c (+29/-11) drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c (+9/-4) drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c (+321/-50) drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c (+75/-20) drivers/net/wireless/intel/iwlwifi/mvm/fw.c (+104/-341) drivers/net/wireless/intel/iwlwifi/mvm/led.c (+3/-0) drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c (+172/-24) drivers/net/wireless/intel/iwlwifi/mvm/mvm.h (+21/-32) drivers/net/wireless/intel/iwlwifi/mvm/nvm.c (+2/-2) drivers/net/wireless/intel/iwlwifi/mvm/ops.c (+11/-32) drivers/net/wireless/intel/iwlwifi/mvm/power.c (+12/-17) drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c (+6/-3) drivers/net/wireless/intel/iwlwifi/mvm/rs.c (+5/-2) drivers/net/wireless/intel/iwlwifi/mvm/rx.c (+2/-1) drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c (+3/-3) drivers/net/wireless/intel/iwlwifi/mvm/scan.c (+437/-111) drivers/net/wireless/intel/iwlwifi/mvm/sf.c (+5/-3) drivers/net/wireless/intel/iwlwifi/mvm/sta.c (+85/-60) drivers/net/wireless/intel/iwlwifi/mvm/time-event.c (+19/-1) drivers/net/wireless/intel/iwlwifi/mvm/tt.c (+30/-22) drivers/net/wireless/intel/iwlwifi/mvm/tx.c (+10/-15) drivers/net/wireless/intel/iwlwifi/mvm/utils.c (+3/-3) drivers/net/wireless/intel/iwlwifi/mvm/vendor-cmd.c (+44/-10) drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c (+26/-12) drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c (+63/-8) drivers/net/wireless/intel/iwlwifi/pcie/drv.c (+494/-539) drivers/net/wireless/intel/iwlwifi/pcie/internal.h (+36/-27) drivers/net/wireless/intel/iwlwifi/pcie/rx.c (+100/-69) drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c (+4/-5) drivers/net/wireless/intel/iwlwifi/pcie/trans.c (+206/-109) drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c (+205/-65) drivers/net/wireless/intel/iwlwifi/pcie/tx.c (+61/-37) drivers/net/wireless/intel/iwlwifi/xvt/rx.c (+1/-1) drivers/net/wireless/intel/iwlwifi/xvt/user-infc.c (+38/-18) drivers/net/wireless/intel/iwlwifi/xvt/xvt.c (+118/-3) drivers/net/wireless/intel/iwlwifi/xvt/xvt.h (+8/-1) drivers/net/wireless/mac80211_hwsim.c (+122/-25) include/crypto/arc4.h (+10/-0) include/crypto/backport-arc4.h (+23/-0) include/linux/ieee80211.h (+112/-1) include/net/cfg80211.h (+70/-3) include/net/fq.h (+8/-0) include/net/fq_impl.h (+9/-1) include/net/mac80211.h (+11/-2) include/uapi/linux/nl80211.h (+40/-0) local-symbols (+3/-0) net/mac80211/Kconfig (+1/-1) net/mac80211/agg-rx.c (+3/-2) net/mac80211/agg-tx.c (+10/-2) net/mac80211/cfg.c (+7/-4) net/mac80211/debugfs.c (+0/-116) net/mac80211/he.c (+47/-0) net/mac80211/ibss.c (+8/-0) net/mac80211/ieee80211_i.h (+13/-16) net/mac80211/iface.c (+3/-1) net/mac80211/key.h (+1/-0) net/mac80211/main.c (+10/-16) net/mac80211/mlme.c (+201/-78) net/mac80211/rx.c (+10/-1) net/mac80211/scan.c (+4/-0) net/mac80211/status.c (+2/-0) net/mac80211/tkip.c (+4/-4) net/mac80211/tkip.h (+2/-2) net/mac80211/util.c (+50/-25) net/mac80211/vht.c (+55/-3) net/mac80211/wep.c (+11/-42) net/mac80211/wep.h (+3/-4) net/mac80211/wpa.c (+2/-2) net/wireless/Kconfig (+2/-0) net/wireless/chan.c (+15/-7) net/wireless/core.c (+37/-1) net/wireless/core.h (+3/-0) net/wireless/lib80211_crypt_tkip.c (+17/-31) net/wireless/lib80211_crypt_wep.c (+13/-38) net/wireless/nl80211.c (+107/-10) net/wireless/pmsr.c (+32/-0) net/wireless/reg.c (+2/-0) net/wireless/scan.c (+434/-17) scripts/make (+4/-0) versions (+1/-1) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
You-Sheng Yang | Approve | ||
Review via email: mp+377020@code.launchpad.net |
Commit message
backport-
* New release
- upstream version 8286 commit 26271a73a63d24.
* debian/patches:
- Update 0006-backport-
- Drop 0003-backport-
- Drop 0007-backport-
* Update debian/
-- You-Sheng Yang <email address hidden> Wed, 18 Dec 2019 19:43:25 +0800
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/.gitignore b/.gitignore |
2 | index 0718a18..6a16fa2 100644 |
3 | --- a/.gitignore |
4 | +++ b/.gitignore |
5 | @@ -11,6 +11,7 @@ Kconfig.versions |
6 | *.cmd |
7 | *.tmp |
8 | *.ver |
9 | +*.mod |
10 | modules.order |
11 | backport-include/backport/autoconf.h |
12 | modules |
13 | @@ -25,3 +26,5 @@ __pycache__ |
14 | # cscope files |
15 | cscope.* |
16 | ncscope.* |
17 | +# gcc profile objects |
18 | +*.gcno |
19 | diff --git a/Kconfig.local b/Kconfig.local |
20 | index c195c4e..2ea5613 100644 |
21 | --- a/Kconfig.local |
22 | +++ b/Kconfig.local |
23 | @@ -79,6 +79,12 @@ config BACKPORTED_BPAUTO_ASN1_DECODER |
24 | config BACKPORTED_BPAUTO_PKCS7 |
25 | tristate |
26 | default BPAUTO_PKCS7 |
27 | +config BACKPORTED_BPAUTO_CRYPTO_LIB_ARC4 |
28 | + tristate |
29 | + default BPAUTO_CRYPTO_LIB_ARC4 |
30 | +config BACKPORTED_BPAUTO_BUILD_CRYPTO_LIB_ARC4 |
31 | + tristate |
32 | + default BPAUTO_BUILD_CRYPTO_LIB_ARC4 |
33 | config BACKPORTED_CFG80211 |
34 | tristate |
35 | default CFG80211 |
36 | diff --git a/MAINTAINERS b/MAINTAINERS |
37 | index 677ef41..d3b9b4a 100644 |
38 | --- a/MAINTAINERS |
39 | +++ b/MAINTAINERS |
40 | @@ -4251,6 +4251,7 @@ F: crypto/ |
41 | F: drivers/crypto/ |
42 | F: include/crypto/ |
43 | F: include/linux/crypto* |
44 | +F: lib/crypto/ |
45 | |
46 | CRYPTOGRAPHIC RANDOM NUMBER GENERATOR |
47 | M: Neil Horman <nhorman@tuxdriver.com> |
48 | diff --git a/Makefile.build b/Makefile.build |
49 | index a848b37..9c272b2 100644 |
50 | --- a/Makefile.build |
51 | +++ b/Makefile.build |
52 | @@ -1,4 +1,11 @@ |
53 | +# detect if make supports --eval |
54 | +_EVAL := $(shell make --eval "test:" -f /dev/null test >/dev/null 2>&1 && echo YES || echo NO) |
55 | +ifeq ($(_EVAL),YES) |
56 | +MAKE=$(BACKPORT_DIR)/scripts/make |
57 | +else |
58 | -include .config |
59 | +endif |
60 | + |
61 | export |
62 | |
63 | .PHONY: modules |
64 | diff --git a/backport-include/linux/mm.h b/backport-include/linux/mm.h |
65 | index 0806f4d..5253e1d 100644 |
66 | --- a/backport-include/linux/mm.h |
67 | +++ b/backport-include/linux/mm.h |
68 | @@ -103,6 +103,13 @@ static inline void *kvzalloc(size_t size, gfp_t flags) |
69 | { |
70 | return kvmalloc(size, flags | __GFP_ZERO); |
71 | } |
72 | -#endif |
73 | +#endif /* < 4.12 */ |
74 | + |
75 | +#if LINUX_VERSION_IS_LESS(4,18,0) |
76 | +static inline void *kvcalloc(size_t n, size_t size, gfp_t flags) |
77 | +{ |
78 | + return kvmalloc_array(n, size, flags | __GFP_ZERO); |
79 | +} |
80 | +#endif /* < 4.18 */ |
81 | |
82 | #endif /* __BACKPORT_MM_H */ |
83 | diff --git a/backport-include/linux/module.h b/backport-include/linux/module.h |
84 | index 1a2c82f..675d8d7 100644 |
85 | --- a/backport-include/linux/module.h |
86 | +++ b/backport-include/linux/module.h |
87 | @@ -33,7 +33,7 @@ extern void backport_dependency_symbol(void); |
88 | backport_dependency_symbol(); \ |
89 | return initfn(); \ |
90 | } \ |
91 | - int init_module(void) __attribute__((alias("__init_backport")));\ |
92 | + int init_module(void) __attribute__((cold,alias("__init_backport")));\ |
93 | BACKPORT_MOD_VERSIONS |
94 | |
95 | /* |
96 | @@ -58,7 +58,7 @@ extern void backport_dependency_symbol(void); |
97 | exitfn(); \ |
98 | rcu_barrier(); \ |
99 | } \ |
100 | - void cleanup_module(void) __attribute__((alias("__exit_compat"))); |
101 | + void cleanup_module(void) __attribute__((cold,alias("__exit_compat"))); |
102 | #endif |
103 | |
104 | #if LINUX_VERSION_IS_LESS(3,3,0) |
105 | diff --git a/backport-include/linux/pci.h b/backport-include/linux/pci.h |
106 | index 341660b..a0f79fa 100644 |
107 | --- a/backport-include/linux/pci.h |
108 | +++ b/backport-include/linux/pci.h |
109 | @@ -3,6 +3,17 @@ |
110 | #include_next <linux/pci.h> |
111 | #include <linux/version.h> |
112 | |
113 | +#if LINUX_VERSION_IS_LESS(5,4,0) |
114 | +#include <linux/pci-aspm.h> |
115 | +#endif |
116 | + |
117 | +#ifndef CONFIG_PCI |
118 | +struct msix_entry { |
119 | + u32 vector; |
120 | + u16 entry; |
121 | +}; |
122 | +#endif |
123 | + |
124 | #ifndef module_pci_driver |
125 | /** |
126 | * module_pci_driver() - Helper macro for registering a PCI driver |
127 | diff --git a/backport-include/linux/skbuff.h b/backport-include/linux/skbuff.h |
128 | index c60cbcc..f633ae3 100644 |
129 | --- a/backport-include/linux/skbuff.h |
130 | +++ b/backport-include/linux/skbuff.h |
131 | @@ -391,4 +391,12 @@ static inline struct sk_buff *__skb_peek(const struct sk_buff_head *list_) |
132 | } |
133 | #endif |
134 | |
135 | +#if LINUX_VERSION_IS_LESS(5,4,0) |
136 | +#define nf_reset_ct LINUX_BACKPORT(nf_reset_ct) |
137 | +static inline void nf_reset_ct(struct sk_buff *skb) |
138 | +{ |
139 | + nf_reset(skb); |
140 | +} |
141 | +#endif |
142 | + |
143 | #endif /* __BACKPORT_SKBUFF_H */ |
144 | diff --git a/backport-include/net/genetlink.h b/backport-include/net/genetlink.h |
145 | index f270ffa..e6b78e0 100644 |
146 | --- a/backport-include/net/genetlink.h |
147 | +++ b/backport-include/net/genetlink.h |
148 | @@ -35,6 +35,16 @@ static inline struct netlink_ext_ack *genl_info_extack(struct genl_info *info) |
149 | #endif |
150 | } |
151 | |
152 | +/* this is for patches we apply */ |
153 | +static inline struct netlink_ext_ack *genl_callback_extack(struct netlink_callback *cb) |
154 | +{ |
155 | +#if LINUX_VERSION_IS_GEQ(4,20,0) |
156 | + return cb->extack; |
157 | +#else |
158 | + return NULL; |
159 | +#endif |
160 | +} |
161 | + |
162 | /* this gets put in place of info->userhdr, since we use that above */ |
163 | static inline void *genl_info_userhdr(struct genl_info *info) |
164 | { |
165 | diff --git a/backport-include/net/netlink.h b/backport-include/net/netlink.h |
166 | index 996a4d3..9a5c270 100644 |
167 | --- a/backport-include/net/netlink.h |
168 | +++ b/backport-include/net/netlink.h |
169 | @@ -266,6 +266,18 @@ nla_validate_nested_deprecated(const struct nlattr *start, int maxtype, |
170 | } |
171 | #endif /* < 5.2 */ |
172 | |
173 | +#if LINUX_VERSION_IS_LESS(5,3,0) |
174 | +#define nl80211_validate_nested LINUX_BACKPORT(nl80211_validate_nested) |
175 | +static inline int |
176 | +nl80211_validate_nested(const struct nlattr *start, int maxtype, |
177 | + const struct nla_policy *policy, |
178 | + struct netlink_ext_ack *extack) |
179 | +{ |
180 | + return __nla_validate_nested(start, maxtype, policy, |
181 | + NL_VALIDATE_STRICT, extack); |
182 | +} |
183 | +#endif /* < 5.3 */ |
184 | + |
185 | #if LINUX_VERSION_IS_LESS(5,1,0) |
186 | #undef NLA_POLICY_NESTED |
187 | #undef NLA_POLICY_NESTED_ARRAY |
188 | diff --git a/backport-include/net/xfrm.h b/backport-include/net/xfrm.h |
189 | new file mode 100644 |
190 | index 0000000..7e55984 |
191 | --- /dev/null |
192 | +++ b/backport-include/net/xfrm.h |
193 | @@ -0,0 +1,14 @@ |
194 | +#ifndef __BACKPORT_NET_XFRM_H |
195 | +#define __BACKPORT_NET_XFRM_H |
196 | +#include_next <net/xfrm.h> |
197 | +#include <linux/version.h> |
198 | + |
199 | +#if LINUX_VERSION_IS_LESS(5,4,0) |
200 | +#define skb_ext_reset LINUX_BACKPORT(skb_ext_reset) |
201 | +static inline void skb_ext_reset(struct sk_buff *skb) |
202 | +{ |
203 | + secpath_reset(skb); |
204 | +} |
205 | +#endif |
206 | + |
207 | +#endif /* __BACKPORT_NET_XFRM_H */ |
208 | diff --git a/compat/Kconfig b/compat/Kconfig |
209 | index 297041b..b097fac 100644 |
210 | --- a/compat/Kconfig |
211 | +++ b/compat/Kconfig |
212 | @@ -170,3 +170,13 @@ config BPAUTO_ASN1_DECODER |
213 | config BPAUTO_PKCS7 |
214 | bool |
215 | #h-file crypto/pkcs7.h |
216 | + |
217 | +config BPAUTO_CRYPTO_LIB_ARC4 |
218 | + bool |
219 | + |
220 | +config BPAUTO_BUILD_CRYPTO_LIB_ARC4 |
221 | + bool |
222 | + default y if BPAUTO_CRYPTO_LIB_ARC4 |
223 | + depends on !(CRYPTO_LIB_ARC4=y || CRYPTO_LIB_ARC4=m) |
224 | + #h-file crypto/arc4.h |
225 | + #c-file lib/crypto/arc4.c |
226 | diff --git a/compat/Makefile b/compat/Makefile |
227 | index 5456858..972459f 100644 |
228 | --- a/compat/Makefile |
229 | +++ b/compat/Makefile |
230 | @@ -75,3 +75,4 @@ compat-$(CPTCFG_BPAUTO_RHASHTABLE) += lib-rhashtable.o |
231 | compat-$(CPTCFG_BPAUTO_PUBLIC_KEY) += |
232 | compat-$(CPTCFG_BPAUTO_BUCKET_LOCKS) += lib-bucket_locks.o |
233 | compat-$(CPTCFG_BPAUTO_PKCS7) += |
234 | +compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_LIB_ARC4) += lib-crypto-arc4.o |
235 | diff --git a/compat/lib-crypto-arc4.c b/compat/lib-crypto-arc4.c |
236 | new file mode 100644 |
237 | index 0000000..c2020f1 |
238 | --- /dev/null |
239 | +++ b/compat/lib-crypto-arc4.c |
240 | @@ -0,0 +1,74 @@ |
241 | +// SPDX-License-Identifier: GPL-2.0-or-later |
242 | +/* |
243 | + * Cryptographic API |
244 | + * |
245 | + * ARC4 Cipher Algorithm |
246 | + * |
247 | + * Jon Oberheide <jon@oberheide.org> |
248 | + */ |
249 | + |
250 | +#include <crypto/arc4.h> |
251 | +#include <linux/module.h> |
252 | + |
253 | +int arc4_setkey(struct arc4_ctx *ctx, const u8 *in_key, unsigned int key_len) |
254 | +{ |
255 | + int i, j = 0, k = 0; |
256 | + |
257 | + ctx->x = 1; |
258 | + ctx->y = 0; |
259 | + |
260 | + for (i = 0; i < 256; i++) |
261 | + ctx->S[i] = i; |
262 | + |
263 | + for (i = 0; i < 256; i++) { |
264 | + u32 a = ctx->S[i]; |
265 | + |
266 | + j = (j + in_key[k] + a) & 0xff; |
267 | + ctx->S[i] = ctx->S[j]; |
268 | + ctx->S[j] = a; |
269 | + if (++k >= key_len) |
270 | + k = 0; |
271 | + } |
272 | + |
273 | + return 0; |
274 | +} |
275 | +EXPORT_SYMBOL(arc4_setkey); |
276 | + |
277 | +void arc4_crypt(struct arc4_ctx *ctx, u8 *out, const u8 *in, unsigned int len) |
278 | +{ |
279 | + u32 *const S = ctx->S; |
280 | + u32 x, y, a, b; |
281 | + u32 ty, ta, tb; |
282 | + |
283 | + if (len == 0) |
284 | + return; |
285 | + |
286 | + x = ctx->x; |
287 | + y = ctx->y; |
288 | + |
289 | + a = S[x]; |
290 | + y = (y + a) & 0xff; |
291 | + b = S[y]; |
292 | + |
293 | + do { |
294 | + S[y] = a; |
295 | + a = (a + b) & 0xff; |
296 | + S[x] = b; |
297 | + x = (x + 1) & 0xff; |
298 | + ta = S[x]; |
299 | + ty = (y + ta) & 0xff; |
300 | + tb = S[ty]; |
301 | + *out++ = *in++ ^ S[a]; |
302 | + if (--len == 0) |
303 | + break; |
304 | + y = ty; |
305 | + a = ta; |
306 | + b = tb; |
307 | + } while (true); |
308 | + |
309 | + ctx->x = x; |
310 | + ctx->y = y; |
311 | +} |
312 | +EXPORT_SYMBOL(arc4_crypt); |
313 | + |
314 | +MODULE_LICENSE("GPL"); |
315 | diff --git a/debian/backport-iwlwifi-dkms.modaliases b/debian/backport-iwlwifi-dkms.modaliases |
316 | index 28dbb46..3f4e9d7 100644 |
317 | --- a/debian/backport-iwlwifi-dkms.modaliases |
318 | +++ b/debian/backport-iwlwifi-dkms.modaliases |
319 | @@ -1,701 +1,259 @@ |
320 | alias net-pf-16-proto-16-family-nl80211 cfg80211 |
321 | -alias pci:v00008086d00007AF0sv*sd00000A10bc*sc*i* iwlwifi |
322 | -alias pci:v00008086d00007AF0sv*sd00000510bc*sc*i* iwlwifi |
323 | -alias pci:v00008086d00007AF0sv*sd00000310bc*sc*i* iwlwifi |
324 | -alias pci:v00008086d00007AF0sv*sd00000090bc*sc*i* iwlwifi |
325 | -alias pci:v00008086d00007A70sv*sd00000A10bc*sc*i* iwlwifi |
326 | -alias pci:v00008086d00007A70sv*sd00000510bc*sc*i* iwlwifi |
327 | -alias pci:v00008086d00007A70sv*sd00000310bc*sc*i* iwlwifi |
328 | -alias pci:v00008086d00007A70sv*sd00000090bc*sc*i* iwlwifi |
329 | -alias pci:v00008086d00002725sv*sd000000B0bc*sc*i* iwlwifi |
330 | -alias pci:v00008086d00002725sv*sd00000A10bc*sc*i* iwlwifi |
331 | -alias pci:v00008086d00002725sv*sd00000510bc*sc*i* iwlwifi |
332 | -alias pci:v00008086d00002725sv*sd00000310bc*sc*i* iwlwifi |
333 | -alias pci:v00008086d00002725sv*sd00000020bc*sc*i* iwlwifi |
334 | -alias pci:v00008086d00002725sv*sd00000090bc*sc*i* iwlwifi |
335 | -alias pci:v00008086d00002723sv*sd00004088bc*sc*i* iwlwifi |
336 | -alias pci:v00008086d00002725sv*sd00000000bc*sc*i* iwlwifi |
337 | -alias pci:v00008086d00002723sv*sd00004080bc*sc*i* iwlwifi |
338 | -alias pci:v00008086d00002723sv*sd00002080bc*sc*i* iwlwifi |
339 | -alias pci:v00008086d00002723sv*sd00001654bc*sc*i* iwlwifi |
340 | -alias pci:v00008086d00002723sv*sd00001653bc*sc*i* iwlwifi |
341 | -alias pci:v00008086d00002723sv*sd0000008Cbc*sc*i* iwlwifi |
342 | -alias pci:v00008086d00002723sv*sd00000088bc*sc*i* iwlwifi |
343 | -alias pci:v00008086d00002723sv*sd00000084bc*sc*i* iwlwifi |
344 | -alias pci:v00008086d00002723sv*sd00000080bc*sc*i* iwlwifi |
345 | -alias pci:v00008086d00002723sv*sd00000000bc*sc*i* iwlwifi |
346 | -alias pci:v00008086d0000A0F0sv*sd00004244bc*sc*i* iwlwifi |
347 | -alias pci:v00008086d0000A0F0sv*sd00004070bc*sc*i* iwlwifi |
348 | -alias pci:v00008086d0000A0F0sv*sd00002074bc*sc*i* iwlwifi |
349 | -alias pci:v00008086d0000A0F0sv*sd00001652bc*sc*i* iwlwifi |
350 | -alias pci:v00008086d0000A0F0sv*sd00001651bc*sc*i* iwlwifi |
351 | -alias pci:v00008086d0000A0F0sv*sd00000A10bc*sc*i* iwlwifi |
352 | -alias pci:v00008086d0000A0F0sv*sd00000244bc*sc*i* iwlwifi |
353 | -alias pci:v00008086d0000A0F0sv*sd0000007Cbc*sc*i* iwlwifi |
354 | -alias pci:v00008086d0000A0F0sv*sd00000078bc*sc*i* iwlwifi |
355 | -alias pci:v00008086d0000A0F0sv*sd00000074bc*sc*i* iwlwifi |
356 | -alias pci:v00008086d0000A0F0sv*sd00000070bc*sc*i* iwlwifi |
357 | -alias pci:v00008086d0000A0F0sv*sd00000044bc*sc*i* iwlwifi |
358 | -alias pci:v00008086d000043F0sv*sd00004244bc*sc*i* iwlwifi |
359 | -alias pci:v00008086d000043F0sv*sd00004070bc*sc*i* iwlwifi |
360 | -alias pci:v00008086d000043F0sv*sd00002074bc*sc*i* iwlwifi |
361 | -alias pci:v00008086d000043F0sv*sd00001652bc*sc*i* iwlwifi |
362 | -alias pci:v00008086d000043F0sv*sd00001651bc*sc*i* iwlwifi |
363 | -alias pci:v00008086d000043F0sv*sd00000244bc*sc*i* iwlwifi |
364 | -alias pci:v00008086d000043F0sv*sd0000007Cbc*sc*i* iwlwifi |
365 | -alias pci:v00008086d000043F0sv*sd00000078bc*sc*i* iwlwifi |
366 | -alias pci:v00008086d000043F0sv*sd00000074bc*sc*i* iwlwifi |
367 | -alias pci:v00008086d000043F0sv*sd00000070bc*sc*i* iwlwifi |
368 | -alias pci:v00008086d000043F0sv*sd00000044bc*sc*i* iwlwifi |
369 | -alias pci:v00008086d000034F0sv*sd00004244bc*sc*i* iwlwifi |
370 | -alias pci:v00008086d000034F0sv*sd00004070bc*sc*i* iwlwifi |
371 | -alias pci:v00008086d000034F0sv*sd00002074bc*sc*i* iwlwifi |
372 | -alias pci:v00008086d000034F0sv*sd00001652bc*sc*i* iwlwifi |
373 | -alias pci:v00008086d000034F0sv*sd00001651bc*sc*i* iwlwifi |
374 | -alias pci:v00008086d000034F0sv*sd00000310bc*sc*i* iwlwifi |
375 | -alias pci:v00008086d000034F0sv*sd00000244bc*sc*i* iwlwifi |
376 | -alias pci:v00008086d000034F0sv*sd0000007Cbc*sc*i* iwlwifi |
377 | -alias pci:v00008086d000034F0sv*sd00000078bc*sc*i* iwlwifi |
378 | -alias pci:v00008086d000034F0sv*sd00000074bc*sc*i* iwlwifi |
379 | -alias pci:v00008086d000034F0sv*sd00000070bc*sc*i* iwlwifi |
380 | -alias pci:v00008086d000034F0sv*sd00000044bc*sc*i* iwlwifi |
381 | -alias pci:v00008086d00002720sv*sd00004244bc*sc*i* iwlwifi |
382 | -alias pci:v00008086d00002720sv*sd00004070bc*sc*i* iwlwifi |
383 | -alias pci:v00008086d00002720sv*sd00002074bc*sc*i* iwlwifi |
384 | -alias pci:v00008086d00002720sv*sd00001652bc*sc*i* iwlwifi |
385 | -alias pci:v00008086d00002720sv*sd00001651bc*sc*i* iwlwifi |
386 | -alias pci:v00008086d00002720sv*sd00001080bc*sc*i* iwlwifi |
387 | -alias pci:v00008086d00002720sv*sd00000A10bc*sc*i* iwlwifi |
388 | -alias pci:v00008086d00002720sv*sd00000310bc*sc*i* iwlwifi |
389 | -alias pci:v00008086d00002720sv*sd00000244bc*sc*i* iwlwifi |
390 | -alias pci:v00008086d00002720sv*sd00000090bc*sc*i* iwlwifi |
391 | -alias pci:v00008086d00002720sv*sd0000007Cbc*sc*i* iwlwifi |
392 | -alias pci:v00008086d00002720sv*sd00000078bc*sc*i* iwlwifi |
393 | -alias pci:v00008086d00002720sv*sd00000074bc*sc*i* iwlwifi |
394 | -alias pci:v00008086d00002720sv*sd00000070bc*sc*i* iwlwifi |
395 | -alias pci:v00008086d00002720sv*sd00000044bc*sc*i* iwlwifi |
396 | -alias pci:v00008086d00002720sv*sd00000040bc*sc*i* iwlwifi |
397 | -alias pci:v00008086d00002720sv*sd00000000bc*sc*i* iwlwifi |
398 | -alias pci:v00008086d000006F0sv*sd00004244bc*sc*i* iwlwifi |
399 | -alias pci:v00008086d000006F0sv*sd00004070bc*sc*i* iwlwifi |
400 | -alias pci:v00008086d000006F0sv*sd00002074bc*sc*i* iwlwifi |
401 | -alias pci:v00008086d000006F0sv*sd00001652bc*sc*i* iwlwifi |
402 | -alias pci:v00008086d000006F0sv*sd00001651bc*sc*i* iwlwifi |
403 | -alias pci:v00008086d000006F0sv*sd00000310bc*sc*i* iwlwifi |
404 | -alias pci:v00008086d000006F0sv*sd00000244bc*sc*i* iwlwifi |
405 | -alias pci:v00008086d000006F0sv*sd0000007Cbc*sc*i* iwlwifi |
406 | -alias pci:v00008086d000006F0sv*sd00000078bc*sc*i* iwlwifi |
407 | -alias pci:v00008086d000006F0sv*sd00000074bc*sc*i* iwlwifi |
408 | -alias pci:v00008086d000006F0sv*sd00000070bc*sc*i* iwlwifi |
409 | -alias pci:v00008086d000002F0sv*sd00004244bc*sc*i* iwlwifi |
410 | -alias pci:v00008086d000002F0sv*sd00004070bc*sc*i* iwlwifi |
411 | -alias pci:v00008086d000002F0sv*sd00002074bc*sc*i* iwlwifi |
412 | -alias pci:v00008086d000002F0sv*sd00001652bc*sc*i* iwlwifi |
413 | -alias pci:v00008086d000002F0sv*sd00001651bc*sc*i* iwlwifi |
414 | -alias pci:v00008086d000002F0sv*sd00000310bc*sc*i* iwlwifi |
415 | -alias pci:v00008086d000002F0sv*sd00000244bc*sc*i* iwlwifi |
416 | -alias pci:v00008086d000002F0sv*sd0000007Cbc*sc*i* iwlwifi |
417 | -alias pci:v00008086d000002F0sv*sd00000078bc*sc*i* iwlwifi |
418 | -alias pci:v00008086d000002F0sv*sd00000074bc*sc*i* iwlwifi |
419 | -alias pci:v00008086d000002F0sv*sd00000070bc*sc*i* iwlwifi |
420 | -alias pci:v00008086d00000000sv*sd00000000bc*sc*i* iwlwifi |
421 | -alias pci:v00008086d00002526sv*sd00000000bc*sc*i* iwlwifi |
422 | -alias pci:v00008086d00002720sv*sd00000030bc*sc*i* iwlwifi |
423 | -alias pci:v00008086d0000A370sv*sd000042A4bc*sc*i* iwlwifi |
424 | -alias pci:v00008086d0000A370sv*sd00004234bc*sc*i* iwlwifi |
425 | -alias pci:v00008086d0000A370sv*sd000040A4bc*sc*i* iwlwifi |
426 | -alias pci:v00008086d0000A370sv*sd00004034bc*sc*i* iwlwifi |
427 | -alias pci:v00008086d0000A370sv*sd00004030bc*sc*i* iwlwifi |
428 | -alias pci:v00008086d0000A370sv*sd00002034bc*sc*i* iwlwifi |
429 | -alias pci:v00008086d0000A370sv*sd00002030bc*sc*i* iwlwifi |
430 | -alias pci:v00008086d0000A370sv*sd00001552bc*sc*i* iwlwifi |
431 | -alias pci:v00008086d0000A370sv*sd00001551bc*sc*i* iwlwifi |
432 | -alias pci:v00008086d0000A370sv*sd00001210bc*sc*i* iwlwifi |
433 | -alias pci:v00008086d0000A370sv*sd00001030bc*sc*i* iwlwifi |
434 | -alias pci:v00008086d0000A370sv*sd00001010bc*sc*i* iwlwifi |
435 | -alias pci:v00008086d0000A370sv*sd000002A4bc*sc*i* iwlwifi |
436 | -alias pci:v00008086d0000A370sv*sd000002A0bc*sc*i* iwlwifi |
437 | -alias pci:v00008086d0000A370sv*sd00000264bc*sc*i* iwlwifi |
438 | -alias pci:v00008086d0000A370sv*sd00000260bc*sc*i* iwlwifi |
439 | -alias pci:v00008086d0000A370sv*sd0000023Cbc*sc*i* iwlwifi |
440 | -alias pci:v00008086d0000A370sv*sd00000238bc*sc*i* iwlwifi |
441 | -alias pci:v00008086d0000A370sv*sd00000234bc*sc*i* iwlwifi |
442 | -alias pci:v00008086d0000A370sv*sd00000230bc*sc*i* iwlwifi |
443 | -alias pci:v00008086d0000A370sv*sd000000A4bc*sc*i* iwlwifi |
444 | -alias pci:v00008086d0000A370sv*sd000000A0bc*sc*i* iwlwifi |
445 | -alias pci:v00008086d0000A370sv*sd00000064bc*sc*i* iwlwifi |
446 | -alias pci:v00008086d0000A370sv*sd00000060bc*sc*i* iwlwifi |
447 | -alias pci:v00008086d0000A370sv*sd0000003Cbc*sc*i* iwlwifi |
448 | -alias pci:v00008086d0000A370sv*sd00000038bc*sc*i* iwlwifi |
449 | -alias pci:v00008086d0000A370sv*sd00000034bc*sc*i* iwlwifi |
450 | -alias pci:v00008086d0000A370sv*sd00000030bc*sc*i* iwlwifi |
451 | -alias pci:v00008086d0000A0F0sv*sd000042A4bc*sc*i* iwlwifi |
452 | -alias pci:v00008086d0000A0F0sv*sd00004234bc*sc*i* iwlwifi |
453 | -alias pci:v00008086d0000A0F0sv*sd000040A4bc*sc*i* iwlwifi |
454 | -alias pci:v00008086d0000A0F0sv*sd00004034bc*sc*i* iwlwifi |
455 | -alias pci:v00008086d0000A0F0sv*sd00004030bc*sc*i* iwlwifi |
456 | -alias pci:v00008086d0000A0F0sv*sd00002034bc*sc*i* iwlwifi |
457 | -alias pci:v00008086d0000A0F0sv*sd00002030bc*sc*i* iwlwifi |
458 | -alias pci:v00008086d0000A0F0sv*sd00001552bc*sc*i* iwlwifi |
459 | -alias pci:v00008086d0000A0F0sv*sd00001551bc*sc*i* iwlwifi |
460 | -alias pci:v00008086d0000A0F0sv*sd00001210bc*sc*i* iwlwifi |
461 | -alias pci:v00008086d0000A0F0sv*sd00001030bc*sc*i* iwlwifi |
462 | -alias pci:v00008086d0000A0F0sv*sd00001010bc*sc*i* iwlwifi |
463 | -alias pci:v00008086d0000A0F0sv*sd000002A4bc*sc*i* iwlwifi |
464 | -alias pci:v00008086d0000A0F0sv*sd000002A0bc*sc*i* iwlwifi |
465 | -alias pci:v00008086d0000A0F0sv*sd00000264bc*sc*i* iwlwifi |
466 | -alias pci:v00008086d0000A0F0sv*sd00000260bc*sc*i* iwlwifi |
467 | -alias pci:v00008086d0000A0F0sv*sd00000244bc*sc*i* iwlwifi |
468 | -alias pci:v00008086d0000A0F0sv*sd0000023Cbc*sc*i* iwlwifi |
469 | -alias pci:v00008086d0000A0F0sv*sd00000238bc*sc*i* iwlwifi |
470 | -alias pci:v00008086d0000A0F0sv*sd00000234bc*sc*i* iwlwifi |
471 | -alias pci:v00008086d0000A0F0sv*sd00000230bc*sc*i* iwlwifi |
472 | -alias pci:v00008086d0000A0F0sv*sd000000A4bc*sc*i* iwlwifi |
473 | -alias pci:v00008086d0000A0F0sv*sd000000A0bc*sc*i* iwlwifi |
474 | -alias pci:v00008086d0000A0F0sv*sd00000064bc*sc*i* iwlwifi |
475 | -alias pci:v00008086d0000A0F0sv*sd00000060bc*sc*i* iwlwifi |
476 | -alias pci:v00008086d0000A0F0sv*sd00000044bc*sc*i* iwlwifi |
477 | -alias pci:v00008086d0000A0F0sv*sd0000003Cbc*sc*i* iwlwifi |
478 | -alias pci:v00008086d0000A0F0sv*sd00000038bc*sc*i* iwlwifi |
479 | -alias pci:v00008086d0000A0F0sv*sd00000034bc*sc*i* iwlwifi |
480 | -alias pci:v00008086d0000A0F0sv*sd00000030bc*sc*i* iwlwifi |
481 | -alias pci:v00008086d00009DF0sv*sd000042A4bc*sc*i* iwlwifi |
482 | -alias pci:v00008086d00009DF0sv*sd00004234bc*sc*i* iwlwifi |
483 | -alias pci:v00008086d00009DF0sv*sd000040A4bc*sc*i* iwlwifi |
484 | -alias pci:v00008086d00009DF0sv*sd00004034bc*sc*i* iwlwifi |
485 | -alias pci:v00008086d00009DF0sv*sd00004030bc*sc*i* iwlwifi |
486 | -alias pci:v00008086d00009DF0sv*sd00002A10bc*sc*i* iwlwifi |
487 | -alias pci:v00008086d00009DF0sv*sd00002034bc*sc*i* iwlwifi |
488 | -alias pci:v00008086d00009DF0sv*sd00002030bc*sc*i* iwlwifi |
489 | -alias pci:v00008086d00009DF0sv*sd00002010bc*sc*i* iwlwifi |
490 | -alias pci:v00008086d00009DF0sv*sd00001552bc*sc*i* iwlwifi |
491 | -alias pci:v00008086d00009DF0sv*sd00001551bc*sc*i* iwlwifi |
492 | -alias pci:v00008086d00009DF0sv*sd00001210bc*sc*i* iwlwifi |
493 | -alias pci:v00008086d00009DF0sv*sd00001030bc*sc*i* iwlwifi |
494 | -alias pci:v00008086d00009DF0sv*sd00001010bc*sc*i* iwlwifi |
495 | -alias pci:v00008086d00009DF0sv*sd00000A10bc*sc*i* iwlwifi |
496 | -alias pci:v00008086d00009DF0sv*sd00000710bc*sc*i* iwlwifi |
497 | -alias pci:v00008086d00009DF0sv*sd00000610bc*sc*i* iwlwifi |
498 | -alias pci:v00008086d00009DF0sv*sd00000510bc*sc*i* iwlwifi |
499 | -alias pci:v00008086d00009DF0sv*sd00000410bc*sc*i* iwlwifi |
500 | -alias pci:v00008086d00009DF0sv*sd00000310bc*sc*i* iwlwifi |
501 | -alias pci:v00008086d00009DF0sv*sd000002A4bc*sc*i* iwlwifi |
502 | -alias pci:v00008086d00009DF0sv*sd000002A0bc*sc*i* iwlwifi |
503 | -alias pci:v00008086d00009DF0sv*sd00000264bc*sc*i* iwlwifi |
504 | -alias pci:v00008086d00009DF0sv*sd00000260bc*sc*i* iwlwifi |
505 | -alias pci:v00008086d00009DF0sv*sd0000023Cbc*sc*i* iwlwifi |
506 | -alias pci:v00008086d00009DF0sv*sd00000238bc*sc*i* iwlwifi |
507 | -alias pci:v00008086d00009DF0sv*sd00000234bc*sc*i* iwlwifi |
508 | -alias pci:v00008086d00009DF0sv*sd00000230bc*sc*i* iwlwifi |
509 | -alias pci:v00008086d00009DF0sv*sd00000210bc*sc*i* iwlwifi |
510 | -alias pci:v00008086d00009DF0sv*sd000000A4bc*sc*i* iwlwifi |
511 | -alias pci:v00008086d00009DF0sv*sd000000A0bc*sc*i* iwlwifi |
512 | -alias pci:v00008086d00009DF0sv*sd00000064bc*sc*i* iwlwifi |
513 | -alias pci:v00008086d00009DF0sv*sd00000060bc*sc*i* iwlwifi |
514 | -alias pci:v00008086d00009DF0sv*sd0000003Cbc*sc*i* iwlwifi |
515 | -alias pci:v00008086d00009DF0sv*sd00000038bc*sc*i* iwlwifi |
516 | -alias pci:v00008086d00009DF0sv*sd00000034bc*sc*i* iwlwifi |
517 | -alias pci:v00008086d00009DF0sv*sd00000030bc*sc*i* iwlwifi |
518 | -alias pci:v00008086d00009DF0sv*sd00000010bc*sc*i* iwlwifi |
519 | -alias pci:v00008086d00009DF0sv*sd00000000bc*sc*i* iwlwifi |
520 | -alias pci:v00008086d000043F0sv*sd000042A4bc*sc*i* iwlwifi |
521 | -alias pci:v00008086d000043F0sv*sd00004234bc*sc*i* iwlwifi |
522 | -alias pci:v00008086d000043F0sv*sd000040A4bc*sc*i* iwlwifi |
523 | -alias pci:v00008086d000043F0sv*sd00004034bc*sc*i* iwlwifi |
524 | -alias pci:v00008086d000043F0sv*sd00004030bc*sc*i* iwlwifi |
525 | -alias pci:v00008086d000043F0sv*sd00002034bc*sc*i* iwlwifi |
526 | -alias pci:v00008086d000043F0sv*sd00002030bc*sc*i* iwlwifi |
527 | -alias pci:v00008086d000043F0sv*sd00001552bc*sc*i* iwlwifi |
528 | -alias pci:v00008086d000043F0sv*sd00001551bc*sc*i* iwlwifi |
529 | -alias pci:v00008086d000043F0sv*sd00001210bc*sc*i* iwlwifi |
530 | -alias pci:v00008086d000043F0sv*sd00001030bc*sc*i* iwlwifi |
531 | -alias pci:v00008086d000043F0sv*sd00001010bc*sc*i* iwlwifi |
532 | -alias pci:v00008086d000043F0sv*sd000002A4bc*sc*i* iwlwifi |
533 | -alias pci:v00008086d000043F0sv*sd000002A0bc*sc*i* iwlwifi |
534 | -alias pci:v00008086d000043F0sv*sd00000264bc*sc*i* iwlwifi |
535 | -alias pci:v00008086d000043F0sv*sd00000260bc*sc*i* iwlwifi |
536 | -alias pci:v00008086d000043F0sv*sd00000244bc*sc*i* iwlwifi |
537 | -alias pci:v00008086d000043F0sv*sd0000023Cbc*sc*i* iwlwifi |
538 | -alias pci:v00008086d000043F0sv*sd00000238bc*sc*i* iwlwifi |
539 | -alias pci:v00008086d000043F0sv*sd00000234bc*sc*i* iwlwifi |
540 | -alias pci:v00008086d000043F0sv*sd00000230bc*sc*i* iwlwifi |
541 | -alias pci:v00008086d000043F0sv*sd000000A4bc*sc*i* iwlwifi |
542 | -alias pci:v00008086d000043F0sv*sd000000A0bc*sc*i* iwlwifi |
543 | -alias pci:v00008086d000043F0sv*sd00000064bc*sc*i* iwlwifi |
544 | -alias pci:v00008086d000043F0sv*sd00000060bc*sc*i* iwlwifi |
545 | -alias pci:v00008086d000043F0sv*sd00000044bc*sc*i* iwlwifi |
546 | -alias pci:v00008086d000043F0sv*sd0000003Cbc*sc*i* iwlwifi |
547 | -alias pci:v00008086d000043F0sv*sd00000038bc*sc*i* iwlwifi |
548 | -alias pci:v00008086d000043F0sv*sd00000034bc*sc*i* iwlwifi |
549 | -alias pci:v00008086d000043F0sv*sd00000030bc*sc*i* iwlwifi |
550 | -alias pci:v00008086d00003DF0sv*sd000042A4bc*sc*i* iwlwifi |
551 | -alias pci:v00008086d00003DF0sv*sd00004234bc*sc*i* iwlwifi |
552 | -alias pci:v00008086d00003DF0sv*sd000040A4bc*sc*i* iwlwifi |
553 | -alias pci:v00008086d00003DF0sv*sd00004034bc*sc*i* iwlwifi |
554 | -alias pci:v00008086d00003DF0sv*sd00004030bc*sc*i* iwlwifi |
555 | -alias pci:v00008086d00003DF0sv*sd00002034bc*sc*i* iwlwifi |
556 | -alias pci:v00008086d00003DF0sv*sd00002030bc*sc*i* iwlwifi |
557 | -alias pci:v00008086d00003DF0sv*sd00001552bc*sc*i* iwlwifi |
558 | -alias pci:v00008086d00003DF0sv*sd00001551bc*sc*i* iwlwifi |
559 | -alias pci:v00008086d00003DF0sv*sd00001210bc*sc*i* iwlwifi |
560 | -alias pci:v00008086d00003DF0sv*sd00001030bc*sc*i* iwlwifi |
561 | -alias pci:v00008086d00003DF0sv*sd00001010bc*sc*i* iwlwifi |
562 | -alias pci:v00008086d00003DF0sv*sd000002A4bc*sc*i* iwlwifi |
563 | -alias pci:v00008086d00003DF0sv*sd000002A0bc*sc*i* iwlwifi |
564 | -alias pci:v00008086d00003DF0sv*sd00000264bc*sc*i* iwlwifi |
565 | -alias pci:v00008086d00003DF0sv*sd00000260bc*sc*i* iwlwifi |
566 | -alias pci:v00008086d00003DF0sv*sd0000023Cbc*sc*i* iwlwifi |
567 | -alias pci:v00008086d00003DF0sv*sd00000238bc*sc*i* iwlwifi |
568 | -alias pci:v00008086d00003DF0sv*sd00000234bc*sc*i* iwlwifi |
569 | -alias pci:v00008086d00003DF0sv*sd00000230bc*sc*i* iwlwifi |
570 | -alias pci:v00008086d00003DF0sv*sd000000A4bc*sc*i* iwlwifi |
571 | -alias pci:v00008086d00003DF0sv*sd000000A0bc*sc*i* iwlwifi |
572 | -alias pci:v00008086d00003DF0sv*sd00000064bc*sc*i* iwlwifi |
573 | -alias pci:v00008086d00003DF0sv*sd00000060bc*sc*i* iwlwifi |
574 | -alias pci:v00008086d00003DF0sv*sd0000003Cbc*sc*i* iwlwifi |
575 | -alias pci:v00008086d00003DF0sv*sd00000038bc*sc*i* iwlwifi |
576 | -alias pci:v00008086d00003DF0sv*sd00000034bc*sc*i* iwlwifi |
577 | -alias pci:v00008086d00003DF0sv*sd00000030bc*sc*i* iwlwifi |
578 | -alias pci:v00008086d000034F0sv*sd000042A4bc*sc*i* iwlwifi |
579 | -alias pci:v00008086d000034F0sv*sd00004234bc*sc*i* iwlwifi |
580 | -alias pci:v00008086d000034F0sv*sd000040A4bc*sc*i* iwlwifi |
581 | -alias pci:v00008086d000034F0sv*sd00004034bc*sc*i* iwlwifi |
582 | -alias pci:v00008086d000034F0sv*sd00004030bc*sc*i* iwlwifi |
583 | -alias pci:v00008086d000034F0sv*sd00002034bc*sc*i* iwlwifi |
584 | -alias pci:v00008086d000034F0sv*sd00002030bc*sc*i* iwlwifi |
585 | -alias pci:v00008086d000034F0sv*sd00001552bc*sc*i* iwlwifi |
586 | -alias pci:v00008086d000034F0sv*sd00001551bc*sc*i* iwlwifi |
587 | -alias pci:v00008086d000034F0sv*sd000002A4bc*sc*i* iwlwifi |
588 | -alias pci:v00008086d000034F0sv*sd000002A0bc*sc*i* iwlwifi |
589 | -alias pci:v00008086d000034F0sv*sd00000264bc*sc*i* iwlwifi |
590 | -alias pci:v00008086d000034F0sv*sd00000260bc*sc*i* iwlwifi |
591 | -alias pci:v00008086d000034F0sv*sd00000244bc*sc*i* iwlwifi |
592 | -alias pci:v00008086d000034F0sv*sd0000023Cbc*sc*i* iwlwifi |
593 | -alias pci:v00008086d000034F0sv*sd00000238bc*sc*i* iwlwifi |
594 | -alias pci:v00008086d000034F0sv*sd00000234bc*sc*i* iwlwifi |
595 | -alias pci:v00008086d000034F0sv*sd00000230bc*sc*i* iwlwifi |
596 | -alias pci:v00008086d000034F0sv*sd000000A4bc*sc*i* iwlwifi |
597 | -alias pci:v00008086d000034F0sv*sd000000A0bc*sc*i* iwlwifi |
598 | -alias pci:v00008086d000034F0sv*sd00000064bc*sc*i* iwlwifi |
599 | -alias pci:v00008086d000034F0sv*sd00000060bc*sc*i* iwlwifi |
600 | -alias pci:v00008086d000034F0sv*sd00000044bc*sc*i* iwlwifi |
601 | -alias pci:v00008086d000034F0sv*sd0000003Cbc*sc*i* iwlwifi |
602 | -alias pci:v00008086d000034F0sv*sd00000038bc*sc*i* iwlwifi |
603 | -alias pci:v00008086d000034F0sv*sd00000034bc*sc*i* iwlwifi |
604 | -alias pci:v00008086d000034F0sv*sd00000030bc*sc*i* iwlwifi |
605 | -alias pci:v00008086d000031DCsv*sd000042A4bc*sc*i* iwlwifi |
606 | -alias pci:v00008086d000031DCsv*sd00004234bc*sc*i* iwlwifi |
607 | -alias pci:v00008086d000031DCsv*sd000040A4bc*sc*i* iwlwifi |
608 | -alias pci:v00008086d000031DCsv*sd00004034bc*sc*i* iwlwifi |
609 | -alias pci:v00008086d000031DCsv*sd00004030bc*sc*i* iwlwifi |
610 | -alias pci:v00008086d000031DCsv*sd00002034bc*sc*i* iwlwifi |
611 | -alias pci:v00008086d000031DCsv*sd00002030bc*sc*i* iwlwifi |
612 | -alias pci:v00008086d000031DCsv*sd00001552bc*sc*i* iwlwifi |
613 | -alias pci:v00008086d000031DCsv*sd00001551bc*sc*i* iwlwifi |
614 | -alias pci:v00008086d000031DCsv*sd00001210bc*sc*i* iwlwifi |
615 | -alias pci:v00008086d000031DCsv*sd00001030bc*sc*i* iwlwifi |
616 | -alias pci:v00008086d000031DCsv*sd00001010bc*sc*i* iwlwifi |
617 | -alias pci:v00008086d000031DCsv*sd000002A4bc*sc*i* iwlwifi |
618 | -alias pci:v00008086d000031DCsv*sd000002A0bc*sc*i* iwlwifi |
619 | -alias pci:v00008086d000031DCsv*sd00000264bc*sc*i* iwlwifi |
620 | -alias pci:v00008086d000031DCsv*sd00000260bc*sc*i* iwlwifi |
621 | -alias pci:v00008086d000031DCsv*sd0000023Cbc*sc*i* iwlwifi |
622 | -alias pci:v00008086d000031DCsv*sd00000238bc*sc*i* iwlwifi |
623 | -alias pci:v00008086d000031DCsv*sd00000234bc*sc*i* iwlwifi |
624 | -alias pci:v00008086d000031DCsv*sd00000230bc*sc*i* iwlwifi |
625 | -alias pci:v00008086d000031DCsv*sd000000A4bc*sc*i* iwlwifi |
626 | -alias pci:v00008086d000031DCsv*sd000000A0bc*sc*i* iwlwifi |
627 | -alias pci:v00008086d000031DCsv*sd00000064bc*sc*i* iwlwifi |
628 | -alias pci:v00008086d000031DCsv*sd00000060bc*sc*i* iwlwifi |
629 | -alias pci:v00008086d000031DCsv*sd0000003Cbc*sc*i* iwlwifi |
630 | -alias pci:v00008086d000031DCsv*sd00000038bc*sc*i* iwlwifi |
631 | -alias pci:v00008086d000031DCsv*sd00000034bc*sc*i* iwlwifi |
632 | -alias pci:v00008086d000031DCsv*sd00000030bc*sc*i* iwlwifi |
633 | -alias pci:v00008086d000030DCsv*sd000042A4bc*sc*i* iwlwifi |
634 | -alias pci:v00008086d000030DCsv*sd00004234bc*sc*i* iwlwifi |
635 | -alias pci:v00008086d000030DCsv*sd000040A4bc*sc*i* iwlwifi |
636 | -alias pci:v00008086d000030DCsv*sd00004034bc*sc*i* iwlwifi |
637 | -alias pci:v00008086d000030DCsv*sd00004030bc*sc*i* iwlwifi |
638 | -alias pci:v00008086d000030DCsv*sd00002034bc*sc*i* iwlwifi |
639 | -alias pci:v00008086d000030DCsv*sd00002030bc*sc*i* iwlwifi |
640 | -alias pci:v00008086d000030DCsv*sd00001552bc*sc*i* iwlwifi |
641 | -alias pci:v00008086d000030DCsv*sd00001551bc*sc*i* iwlwifi |
642 | -alias pci:v00008086d000030DCsv*sd00001210bc*sc*i* iwlwifi |
643 | -alias pci:v00008086d000030DCsv*sd00001030bc*sc*i* iwlwifi |
644 | -alias pci:v00008086d000030DCsv*sd00001010bc*sc*i* iwlwifi |
645 | -alias pci:v00008086d000030DCsv*sd000002A4bc*sc*i* iwlwifi |
646 | -alias pci:v00008086d000030DCsv*sd000002A0bc*sc*i* iwlwifi |
647 | -alias pci:v00008086d000030DCsv*sd00000264bc*sc*i* iwlwifi |
648 | -alias pci:v00008086d000030DCsv*sd00000260bc*sc*i* iwlwifi |
649 | -alias pci:v00008086d000030DCsv*sd0000023Cbc*sc*i* iwlwifi |
650 | -alias pci:v00008086d000030DCsv*sd00000238bc*sc*i* iwlwifi |
651 | -alias pci:v00008086d000030DCsv*sd00000234bc*sc*i* iwlwifi |
652 | -alias pci:v00008086d000030DCsv*sd00000230bc*sc*i* iwlwifi |
653 | -alias pci:v00008086d000030DCsv*sd000000A4bc*sc*i* iwlwifi |
654 | -alias pci:v00008086d000030DCsv*sd000000A0bc*sc*i* iwlwifi |
655 | -alias pci:v00008086d000030DCsv*sd00000064bc*sc*i* iwlwifi |
656 | -alias pci:v00008086d000030DCsv*sd00000060bc*sc*i* iwlwifi |
657 | -alias pci:v00008086d000030DCsv*sd0000003Cbc*sc*i* iwlwifi |
658 | -alias pci:v00008086d000030DCsv*sd00000038bc*sc*i* iwlwifi |
659 | -alias pci:v00008086d000030DCsv*sd00000034bc*sc*i* iwlwifi |
660 | -alias pci:v00008086d000030DCsv*sd00000030bc*sc*i* iwlwifi |
661 | -alias pci:v00008086d00002720sv*sd000042A4bc*sc*i* iwlwifi |
662 | -alias pci:v00008086d00002720sv*sd00004234bc*sc*i* iwlwifi |
663 | -alias pci:v00008086d00002720sv*sd000040A4bc*sc*i* iwlwifi |
664 | -alias pci:v00008086d00002720sv*sd00004034bc*sc*i* iwlwifi |
665 | -alias pci:v00008086d00002720sv*sd00004030bc*sc*i* iwlwifi |
666 | -alias pci:v00008086d00002720sv*sd00002034bc*sc*i* iwlwifi |
667 | -alias pci:v00008086d00002720sv*sd00002030bc*sc*i* iwlwifi |
668 | -alias pci:v00008086d00002720sv*sd00001552bc*sc*i* iwlwifi |
669 | -alias pci:v00008086d00002720sv*sd00001551bc*sc*i* iwlwifi |
670 | -alias pci:v00008086d00002720sv*sd00001210bc*sc*i* iwlwifi |
671 | -alias pci:v00008086d00002720sv*sd00001030bc*sc*i* iwlwifi |
672 | -alias pci:v00008086d00002720sv*sd00001010bc*sc*i* iwlwifi |
673 | -alias pci:v00008086d00002720sv*sd000002A4bc*sc*i* iwlwifi |
674 | -alias pci:v00008086d00002720sv*sd000002A0bc*sc*i* iwlwifi |
675 | -alias pci:v00008086d00002720sv*sd00000264bc*sc*i* iwlwifi |
676 | -alias pci:v00008086d00002720sv*sd00000260bc*sc*i* iwlwifi |
677 | -alias pci:v00008086d00002720sv*sd00000244bc*sc*i* iwlwifi |
678 | -alias pci:v00008086d00002720sv*sd0000023Cbc*sc*i* iwlwifi |
679 | -alias pci:v00008086d00002720sv*sd00000238bc*sc*i* iwlwifi |
680 | -alias pci:v00008086d00002720sv*sd00000234bc*sc*i* iwlwifi |
681 | -alias pci:v00008086d00002720sv*sd00000230bc*sc*i* iwlwifi |
682 | -alias pci:v00008086d00002720sv*sd000000A4bc*sc*i* iwlwifi |
683 | -alias pci:v00008086d00002720sv*sd000000A0bc*sc*i* iwlwifi |
684 | -alias pci:v00008086d00002720sv*sd00000064bc*sc*i* iwlwifi |
685 | -alias pci:v00008086d00002720sv*sd00000060bc*sc*i* iwlwifi |
686 | -alias pci:v00008086d00002720sv*sd00000044bc*sc*i* iwlwifi |
687 | -alias pci:v00008086d00002720sv*sd0000003Cbc*sc*i* iwlwifi |
688 | -alias pci:v00008086d00002720sv*sd00000038bc*sc*i* iwlwifi |
689 | -alias pci:v00008086d00002720sv*sd00000034bc*sc*i* iwlwifi |
690 | -alias pci:v00008086d0000271Csv*sd00000214bc*sc*i* iwlwifi |
691 | -alias pci:v00008086d0000271Bsv*sd00000214bc*sc*i* iwlwifi |
692 | -alias pci:v00008086d0000271Bsv*sd00000210bc*sc*i* iwlwifi |
693 | -alias pci:v00008086d0000271Bsv*sd00000014bc*sc*i* iwlwifi |
694 | -alias pci:v00008086d0000271Bsv*sd00000010bc*sc*i* iwlwifi |
695 | -alias pci:v00008086d00002526sv*sd0000E014bc*sc*i* iwlwifi |
696 | -alias pci:v00008086d00002526sv*sd0000E010bc*sc*i* iwlwifi |
697 | -alias pci:v00008086d00002526sv*sd0000A014bc*sc*i* iwlwifi |
698 | -alias pci:v00008086d00002526sv*sd00008010bc*sc*i* iwlwifi |
699 | -alias pci:v00008086d00002526sv*sd00008014bc*sc*i* iwlwifi |
700 | -alias pci:v00008086d00002526sv*sd00006014bc*sc*i* iwlwifi |
701 | -alias pci:v00008086d00002526sv*sd00006010bc*sc*i* iwlwifi |
702 | -alias pci:v00008086d00002526sv*sd000042A4bc*sc*i* iwlwifi |
703 | -alias pci:v00008086d00002526sv*sd00004234bc*sc*i* iwlwifi |
704 | -alias pci:v00008086d00002526sv*sd000040A4bc*sc*i* iwlwifi |
705 | -alias pci:v00008086d00002526sv*sd00004034bc*sc*i* iwlwifi |
706 | -alias pci:v00008086d00002526sv*sd00004030bc*sc*i* iwlwifi |
707 | -alias pci:v00008086d00002526sv*sd0000401Cbc*sc*i* iwlwifi |
708 | -alias pci:v00008086d00002526sv*sd00004018bc*sc*i* iwlwifi |
709 | -alias pci:v00008086d00002526sv*sd00004010bc*sc*i* iwlwifi |
710 | -alias pci:v00008086d00002526sv*sd00002034bc*sc*i* iwlwifi |
711 | -alias pci:v00008086d00002526sv*sd00002030bc*sc*i* iwlwifi |
712 | -alias pci:v00008086d00002526sv*sd00001610bc*sc*i* iwlwifi |
713 | -alias pci:v00008086d00002526sv*sd00001552bc*sc*i* iwlwifi |
714 | -alias pci:v00008086d00002526sv*sd00001551bc*sc*i* iwlwifi |
715 | -alias pci:v00008086d00002526sv*sd00001550bc*sc*i* iwlwifi |
716 | -alias pci:v00008086d00002526sv*sd00001420bc*sc*i* iwlwifi |
717 | -alias pci:v00008086d00002526sv*sd00001410bc*sc*i* iwlwifi |
718 | -alias pci:v00008086d00002526sv*sd00001210bc*sc*i* iwlwifi |
719 | -alias pci:v00008086d00002526sv*sd00001030bc*sc*i* iwlwifi |
720 | -alias pci:v00008086d00002526sv*sd00001010bc*sc*i* iwlwifi |
721 | -alias pci:v00008086d00002526sv*sd000002A4bc*sc*i* iwlwifi |
722 | -alias pci:v00008086d00002526sv*sd000002A0bc*sc*i* iwlwifi |
723 | -alias pci:v00008086d00002526sv*sd00000264bc*sc*i* iwlwifi |
724 | -alias pci:v00008086d00002526sv*sd00000260bc*sc*i* iwlwifi |
725 | -alias pci:v00008086d00002526sv*sd0000023Cbc*sc*i* iwlwifi |
726 | -alias pci:v00008086d00002526sv*sd00000238bc*sc*i* iwlwifi |
727 | -alias pci:v00008086d00002526sv*sd00000234bc*sc*i* iwlwifi |
728 | -alias pci:v00008086d00002526sv*sd00000230bc*sc*i* iwlwifi |
729 | -alias pci:v00008086d00002526sv*sd00000214bc*sc*i* iwlwifi |
730 | -alias pci:v00008086d00002526sv*sd00000210bc*sc*i* iwlwifi |
731 | -alias pci:v00008086d00002526sv*sd000000A4bc*sc*i* iwlwifi |
732 | -alias pci:v00008086d00002526sv*sd000000A0bc*sc*i* iwlwifi |
733 | -alias pci:v00008086d00002526sv*sd00000064bc*sc*i* iwlwifi |
734 | -alias pci:v00008086d00002526sv*sd00000060bc*sc*i* iwlwifi |
735 | -alias pci:v00008086d00002526sv*sd0000003Cbc*sc*i* iwlwifi |
736 | -alias pci:v00008086d00002526sv*sd00000038bc*sc*i* iwlwifi |
737 | -alias pci:v00008086d00002526sv*sd00000034bc*sc*i* iwlwifi |
738 | -alias pci:v00008086d00002526sv*sd00000030bc*sc*i* iwlwifi |
739 | -alias pci:v00008086d00002526sv*sd0000001Cbc*sc*i* iwlwifi |
740 | -alias pci:v00008086d00002526sv*sd00000018bc*sc*i* iwlwifi |
741 | -alias pci:v00008086d00002526sv*sd00000014bc*sc*i* iwlwifi |
742 | -alias pci:v00008086d00002526sv*sd00000010bc*sc*i* iwlwifi |
743 | -alias pci:v00008086d000006F0sv*sd000042A4bc*sc*i* iwlwifi |
744 | -alias pci:v00008086d000006F0sv*sd00004234bc*sc*i* iwlwifi |
745 | -alias pci:v00008086d000006F0sv*sd000040A4bc*sc*i* iwlwifi |
746 | -alias pci:v00008086d000006F0sv*sd00004034bc*sc*i* iwlwifi |
747 | -alias pci:v00008086d000006F0sv*sd00004030bc*sc*i* iwlwifi |
748 | -alias pci:v00008086d000006F0sv*sd00002034bc*sc*i* iwlwifi |
749 | -alias pci:v00008086d000006F0sv*sd00002030bc*sc*i* iwlwifi |
750 | -alias pci:v00008086d000006F0sv*sd00001552bc*sc*i* iwlwifi |
751 | -alias pci:v00008086d000006F0sv*sd00001551bc*sc*i* iwlwifi |
752 | -alias pci:v00008086d000006F0sv*sd000002A4bc*sc*i* iwlwifi |
753 | -alias pci:v00008086d000006F0sv*sd000002A0bc*sc*i* iwlwifi |
754 | -alias pci:v00008086d000006F0sv*sd00000264bc*sc*i* iwlwifi |
755 | -alias pci:v00008086d000006F0sv*sd00000260bc*sc*i* iwlwifi |
756 | -alias pci:v00008086d000006F0sv*sd0000023Cbc*sc*i* iwlwifi |
757 | -alias pci:v00008086d000006F0sv*sd00000238bc*sc*i* iwlwifi |
758 | -alias pci:v00008086d000006F0sv*sd00000234bc*sc*i* iwlwifi |
759 | -alias pci:v00008086d000006F0sv*sd00000230bc*sc*i* iwlwifi |
760 | -alias pci:v00008086d000006F0sv*sd000000A4bc*sc*i* iwlwifi |
761 | -alias pci:v00008086d000006F0sv*sd000000A0bc*sc*i* iwlwifi |
762 | -alias pci:v00008086d000006F0sv*sd00000064bc*sc*i* iwlwifi |
763 | -alias pci:v00008086d000006F0sv*sd00000060bc*sc*i* iwlwifi |
764 | -alias pci:v00008086d000006F0sv*sd0000003Cbc*sc*i* iwlwifi |
765 | -alias pci:v00008086d000006F0sv*sd00000038bc*sc*i* iwlwifi |
766 | -alias pci:v00008086d000006F0sv*sd00000034bc*sc*i* iwlwifi |
767 | -alias pci:v00008086d000006F0sv*sd00000030bc*sc*i* iwlwifi |
768 | -alias pci:v00008086d000002F0sv*sd000042A4bc*sc*i* iwlwifi |
769 | -alias pci:v00008086d000002F0sv*sd00004234bc*sc*i* iwlwifi |
770 | -alias pci:v00008086d000002F0sv*sd000040A4bc*sc*i* iwlwifi |
771 | -alias pci:v00008086d000002F0sv*sd00004034bc*sc*i* iwlwifi |
772 | -alias pci:v00008086d000002F0sv*sd00004030bc*sc*i* iwlwifi |
773 | -alias pci:v00008086d000002F0sv*sd00002034bc*sc*i* iwlwifi |
774 | -alias pci:v00008086d000002F0sv*sd00002030bc*sc*i* iwlwifi |
775 | -alias pci:v00008086d000002F0sv*sd00001552bc*sc*i* iwlwifi |
776 | -alias pci:v00008086d000002F0sv*sd00001551bc*sc*i* iwlwifi |
777 | -alias pci:v00008086d000002F0sv*sd000002A4bc*sc*i* iwlwifi |
778 | -alias pci:v00008086d000002F0sv*sd000002A0bc*sc*i* iwlwifi |
779 | -alias pci:v00008086d000002F0sv*sd00000264bc*sc*i* iwlwifi |
780 | -alias pci:v00008086d000002F0sv*sd00000260bc*sc*i* iwlwifi |
781 | -alias pci:v00008086d000002F0sv*sd0000023Cbc*sc*i* iwlwifi |
782 | -alias pci:v00008086d000002F0sv*sd00000238bc*sc*i* iwlwifi |
783 | -alias pci:v00008086d000002F0sv*sd00000234bc*sc*i* iwlwifi |
784 | -alias pci:v00008086d000002F0sv*sd00000230bc*sc*i* iwlwifi |
785 | -alias pci:v00008086d000002F0sv*sd000000A4bc*sc*i* iwlwifi |
786 | -alias pci:v00008086d000002F0sv*sd000000A0bc*sc*i* iwlwifi |
787 | -alias pci:v00008086d000002F0sv*sd00000064bc*sc*i* iwlwifi |
788 | -alias pci:v00008086d000002F0sv*sd00000060bc*sc*i* iwlwifi |
789 | -alias pci:v00008086d000002F0sv*sd0000003Cbc*sc*i* iwlwifi |
790 | -alias pci:v00008086d000002F0sv*sd00000038bc*sc*i* iwlwifi |
791 | -alias pci:v00008086d000002F0sv*sd00000034bc*sc*i* iwlwifi |
792 | -alias pci:v00008086d000002F0sv*sd00000030bc*sc*i* iwlwifi |
793 | -alias pci:v00008086d000024FDsv*sd00009074bc*sc*i* iwlwifi |
794 | -alias pci:v00008086d000024FDsv*sd00000014bc*sc*i* iwlwifi |
795 | -alias pci:v00008086d000024FDsv*sd00000012bc*sc*i* iwlwifi |
796 | -alias pci:v00008086d000024FDsv*sd00001012bc*sc*i* iwlwifi |
797 | -alias pci:v00008086d000024FDsv*sd00003E01bc*sc*i* iwlwifi |
798 | -alias pci:v00008086d000024FDsv*sd00003E02bc*sc*i* iwlwifi |
799 | -alias pci:v00008086d000024FDsv*sd00001014bc*sc*i* iwlwifi |
800 | -alias pci:v00008086d000024FDsv*sd00000850bc*sc*i* iwlwifi |
801 | -alias pci:v00008086d000024FDsv*sd00000950bc*sc*i* iwlwifi |
802 | -alias pci:v00008086d000024FDsv*sd00000930bc*sc*i* iwlwifi |
803 | -alias pci:v00008086d000024FDsv*sd00000910bc*sc*i* iwlwifi |
804 | -alias pci:v00008086d000024FDsv*sd00008130bc*sc*i* iwlwifi |
805 | -alias pci:v00008086d000024FDsv*sd00009110bc*sc*i* iwlwifi |
806 | -alias pci:v00008086d000024FDsv*sd00000810bc*sc*i* iwlwifi |
807 | -alias pci:v00008086d000024FDsv*sd00008010bc*sc*i* iwlwifi |
808 | -alias pci:v00008086d000024FDsv*sd00008050bc*sc*i* iwlwifi |
809 | -alias pci:v00008086d000024FDsv*sd00008110bc*sc*i* iwlwifi |
810 | -alias pci:v00008086d000024FDsv*sd00009010bc*sc*i* iwlwifi |
811 | -alias pci:v00008086d000024FDsv*sd00000150bc*sc*i* iwlwifi |
812 | -alias pci:v00008086d000024FDsv*sd00000050bc*sc*i* iwlwifi |
813 | -alias pci:v00008086d000024FDsv*sd000010D0bc*sc*i* iwlwifi |
814 | -alias pci:v00008086d000024FDsv*sd00001010bc*sc*i* iwlwifi |
815 | -alias pci:v00008086d000024FDsv*sd00000130bc*sc*i* iwlwifi |
816 | -alias pci:v00008086d000024FDsv*sd00001130bc*sc*i* iwlwifi |
817 | -alias pci:v00008086d000024FDsv*sd00001110bc*sc*i* iwlwifi |
818 | -alias pci:v00008086d000024FDsv*sd00000110bc*sc*i* iwlwifi |
819 | -alias pci:v00008086d000024FDsv*sd00000010bc*sc*i* iwlwifi |
820 | -alias pci:v00008086d000024F3sv*sd00004010bc*sc*i* iwlwifi |
821 | +alias pci:v00008086d000002F0sv*sd*bc*sc*i* iwlwifi |
822 | +alias pci:v00008086d000006F0sv*sd*bc*sc*i* iwlwifi |
823 | +alias pci:v00008086d000008B1sv*sd00004020bc*sc*i* iwlwifi |
824 | +alias pci:v00008086d000008B1sv*sd0000402Abc*sc*i* iwlwifi |
825 | +alias pci:v00008086d000008B1sv*sd00004060bc*sc*i* iwlwifi |
826 | +alias pci:v00008086d000008B1sv*sd00004062bc*sc*i* iwlwifi |
827 | +alias pci:v00008086d000008B1sv*sd0000406Abc*sc*i* iwlwifi |
828 | +alias pci:v00008086d000008B1sv*sd00004070bc*sc*i* iwlwifi |
829 | +alias pci:v00008086d000008B1sv*sd00004072bc*sc*i* iwlwifi |
830 | +alias pci:v00008086d000008B1sv*sd00004160bc*sc*i* iwlwifi |
831 | +alias pci:v00008086d000008B1sv*sd00004162bc*sc*i* iwlwifi |
832 | +alias pci:v00008086d000008B1sv*sd00004170bc*sc*i* iwlwifi |
833 | +alias pci:v00008086d000008B1sv*sd00004420bc*sc*i* iwlwifi |
834 | +alias pci:v00008086d000008B1sv*sd00004460bc*sc*i* iwlwifi |
835 | +alias pci:v00008086d000008B1sv*sd00004462bc*sc*i* iwlwifi |
836 | +alias pci:v00008086d000008B1sv*sd0000446Abc*sc*i* iwlwifi |
837 | +alias pci:v00008086d000008B1sv*sd00004470bc*sc*i* iwlwifi |
838 | +alias pci:v00008086d000008B1sv*sd00004472bc*sc*i* iwlwifi |
839 | +alias pci:v00008086d000008B1sv*sd00004560bc*sc*i* iwlwifi |
840 | +alias pci:v00008086d000008B1sv*sd00004570bc*sc*i* iwlwifi |
841 | +alias pci:v00008086d000008B1sv*sd0000486Ebc*sc*i* iwlwifi |
842 | +alias pci:v00008086d000008B1sv*sd00004870bc*sc*i* iwlwifi |
843 | +alias pci:v00008086d000008B1sv*sd00004A6Cbc*sc*i* iwlwifi |
844 | +alias pci:v00008086d000008B1sv*sd00004A6Ebc*sc*i* iwlwifi |
845 | +alias pci:v00008086d000008B1sv*sd00004A70bc*sc*i* iwlwifi |
846 | +alias pci:v00008086d000008B1sv*sd00004C60bc*sc*i* iwlwifi |
847 | +alias pci:v00008086d000008B1sv*sd00004C70bc*sc*i* iwlwifi |
848 | +alias pci:v00008086d000008B1sv*sd00005070bc*sc*i* iwlwifi |
849 | +alias pci:v00008086d000008B1sv*sd00005072bc*sc*i* iwlwifi |
850 | +alias pci:v00008086d000008B1sv*sd00005170bc*sc*i* iwlwifi |
851 | +alias pci:v00008086d000008B1sv*sd00005770bc*sc*i* iwlwifi |
852 | +alias pci:v00008086d000008B1sv*sd0000C020bc*sc*i* iwlwifi |
853 | +alias pci:v00008086d000008B1sv*sd0000C02Abc*sc*i* iwlwifi |
854 | +alias pci:v00008086d000008B1sv*sd0000C060bc*sc*i* iwlwifi |
855 | +alias pci:v00008086d000008B1sv*sd0000C062bc*sc*i* iwlwifi |
856 | +alias pci:v00008086d000008B1sv*sd0000C06Abc*sc*i* iwlwifi |
857 | +alias pci:v00008086d000008B1sv*sd0000C070bc*sc*i* iwlwifi |
858 | +alias pci:v00008086d000008B1sv*sd0000C072bc*sc*i* iwlwifi |
859 | +alias pci:v00008086d000008B1sv*sd0000C160bc*sc*i* iwlwifi |
860 | +alias pci:v00008086d000008B1sv*sd0000C162bc*sc*i* iwlwifi |
861 | +alias pci:v00008086d000008B1sv*sd0000C170bc*sc*i* iwlwifi |
862 | +alias pci:v00008086d000008B1sv*sd0000C360bc*sc*i* iwlwifi |
863 | +alias pci:v00008086d000008B1sv*sd0000C420bc*sc*i* iwlwifi |
864 | +alias pci:v00008086d000008B1sv*sd0000C460bc*sc*i* iwlwifi |
865 | +alias pci:v00008086d000008B1sv*sd0000C462bc*sc*i* iwlwifi |
866 | +alias pci:v00008086d000008B1sv*sd0000C470bc*sc*i* iwlwifi |
867 | +alias pci:v00008086d000008B1sv*sd0000C472bc*sc*i* iwlwifi |
868 | +alias pci:v00008086d000008B1sv*sd0000C560bc*sc*i* iwlwifi |
869 | +alias pci:v00008086d000008B1sv*sd0000C570bc*sc*i* iwlwifi |
870 | +alias pci:v00008086d000008B1sv*sd0000C760bc*sc*i* iwlwifi |
871 | +alias pci:v00008086d000008B1sv*sd0000C770bc*sc*i* iwlwifi |
872 | +alias pci:v00008086d000008B1sv*sd0000CC60bc*sc*i* iwlwifi |
873 | +alias pci:v00008086d000008B1sv*sd0000CC70bc*sc*i* iwlwifi |
874 | +alias pci:v00008086d000008B2sv*sd00004220bc*sc*i* iwlwifi |
875 | +alias pci:v00008086d000008B2sv*sd00004260bc*sc*i* iwlwifi |
876 | +alias pci:v00008086d000008B2sv*sd00004262bc*sc*i* iwlwifi |
877 | +alias pci:v00008086d000008B2sv*sd0000426Abc*sc*i* iwlwifi |
878 | +alias pci:v00008086d000008B2sv*sd00004270bc*sc*i* iwlwifi |
879 | +alias pci:v00008086d000008B2sv*sd00004272bc*sc*i* iwlwifi |
880 | +alias pci:v00008086d000008B2sv*sd00004360bc*sc*i* iwlwifi |
881 | +alias pci:v00008086d000008B2sv*sd00004370bc*sc*i* iwlwifi |
882 | +alias pci:v00008086d000008B2sv*sd0000C220bc*sc*i* iwlwifi |
883 | +alias pci:v00008086d000008B2sv*sd0000C260bc*sc*i* iwlwifi |
884 | +alias pci:v00008086d000008B2sv*sd0000C262bc*sc*i* iwlwifi |
885 | +alias pci:v00008086d000008B2sv*sd0000C26Abc*sc*i* iwlwifi |
886 | +alias pci:v00008086d000008B2sv*sd0000C270bc*sc*i* iwlwifi |
887 | +alias pci:v00008086d000008B2sv*sd0000C272bc*sc*i* iwlwifi |
888 | +alias pci:v00008086d000008B2sv*sd0000C370bc*sc*i* iwlwifi |
889 | +alias pci:v00008086d000008B3sv*sd00000060bc*sc*i* iwlwifi |
890 | +alias pci:v00008086d000008B3sv*sd00000062bc*sc*i* iwlwifi |
891 | +alias pci:v00008086d000008B3sv*sd00000070bc*sc*i* iwlwifi |
892 | +alias pci:v00008086d000008B3sv*sd00000072bc*sc*i* iwlwifi |
893 | +alias pci:v00008086d000008B3sv*sd00000170bc*sc*i* iwlwifi |
894 | +alias pci:v00008086d000008B3sv*sd00000172bc*sc*i* iwlwifi |
895 | +alias pci:v00008086d000008B3sv*sd00000470bc*sc*i* iwlwifi |
896 | +alias pci:v00008086d000008B3sv*sd00000472bc*sc*i* iwlwifi |
897 | +alias pci:v00008086d000008B3sv*sd00001070bc*sc*i* iwlwifi |
898 | +alias pci:v00008086d000008B3sv*sd00001170bc*sc*i* iwlwifi |
899 | +alias pci:v00008086d000008B3sv*sd00008060bc*sc*i* iwlwifi |
900 | +alias pci:v00008086d000008B3sv*sd00008062bc*sc*i* iwlwifi |
901 | +alias pci:v00008086d000008B3sv*sd00008070bc*sc*i* iwlwifi |
902 | +alias pci:v00008086d000008B3sv*sd00008072bc*sc*i* iwlwifi |
903 | +alias pci:v00008086d000008B3sv*sd00008170bc*sc*i* iwlwifi |
904 | +alias pci:v00008086d000008B3sv*sd00008172bc*sc*i* iwlwifi |
905 | +alias pci:v00008086d000008B3sv*sd00008470bc*sc*i* iwlwifi |
906 | +alias pci:v00008086d000008B3sv*sd00008570bc*sc*i* iwlwifi |
907 | +alias pci:v00008086d000008B4sv*sd00000270bc*sc*i* iwlwifi |
908 | +alias pci:v00008086d000008B4sv*sd00000272bc*sc*i* iwlwifi |
909 | +alias pci:v00008086d000008B4sv*sd00000370bc*sc*i* iwlwifi |
910 | +alias pci:v00008086d000008B4sv*sd00008270bc*sc*i* iwlwifi |
911 | +alias pci:v00008086d000008B4sv*sd00008272bc*sc*i* iwlwifi |
912 | +alias pci:v00008086d000008B4sv*sd00008370bc*sc*i* iwlwifi |
913 | +alias pci:v00008086d0000095Asv*sd00001010bc*sc*i* iwlwifi |
914 | +alias pci:v00008086d0000095Asv*sd00005000bc*sc*i* iwlwifi |
915 | +alias pci:v00008086d0000095Asv*sd00005002bc*sc*i* iwlwifi |
916 | +alias pci:v00008086d0000095Asv*sd0000500Abc*sc*i* iwlwifi |
917 | +alias pci:v00008086d0000095Asv*sd00005010bc*sc*i* iwlwifi |
918 | +alias pci:v00008086d0000095Asv*sd00005012bc*sc*i* iwlwifi |
919 | +alias pci:v00008086d0000095Asv*sd00005020bc*sc*i* iwlwifi |
920 | +alias pci:v00008086d0000095Asv*sd0000502Abc*sc*i* iwlwifi |
921 | +alias pci:v00008086d0000095Asv*sd00005090bc*sc*i* iwlwifi |
922 | +alias pci:v00008086d0000095Asv*sd00005100bc*sc*i* iwlwifi |
923 | +alias pci:v00008086d0000095Asv*sd00005102bc*sc*i* iwlwifi |
924 | +alias pci:v00008086d0000095Asv*sd00005110bc*sc*i* iwlwifi |
925 | +alias pci:v00008086d0000095Asv*sd00005190bc*sc*i* iwlwifi |
926 | +alias pci:v00008086d0000095Asv*sd00005400bc*sc*i* iwlwifi |
927 | +alias pci:v00008086d0000095Asv*sd00005410bc*sc*i* iwlwifi |
928 | +alias pci:v00008086d0000095Asv*sd00005412bc*sc*i* iwlwifi |
929 | +alias pci:v00008086d0000095Asv*sd00005420bc*sc*i* iwlwifi |
930 | +alias pci:v00008086d0000095Asv*sd00005490bc*sc*i* iwlwifi |
931 | +alias pci:v00008086d0000095Asv*sd00005510bc*sc*i* iwlwifi |
932 | +alias pci:v00008086d0000095Asv*sd00005590bc*sc*i* iwlwifi |
933 | +alias pci:v00008086d0000095Asv*sd00005C10bc*sc*i* iwlwifi |
934 | +alias pci:v00008086d0000095Asv*sd00005F10bc*sc*i* iwlwifi |
935 | +alias pci:v00008086d0000095Asv*sd00009000bc*sc*i* iwlwifi |
936 | +alias pci:v00008086d0000095Asv*sd0000900Abc*sc*i* iwlwifi |
937 | +alias pci:v00008086d0000095Asv*sd00009010bc*sc*i* iwlwifi |
938 | +alias pci:v00008086d0000095Asv*sd00009012bc*sc*i* iwlwifi |
939 | +alias pci:v00008086d0000095Asv*sd00009110bc*sc*i* iwlwifi |
940 | +alias pci:v00008086d0000095Asv*sd00009112bc*sc*i* iwlwifi |
941 | +alias pci:v00008086d0000095Asv*sd00009400bc*sc*i* iwlwifi |
942 | +alias pci:v00008086d0000095Asv*sd00009410bc*sc*i* iwlwifi |
943 | +alias pci:v00008086d0000095Asv*sd00009510bc*sc*i* iwlwifi |
944 | +alias pci:v00008086d0000095Asv*sd00009E10bc*sc*i* iwlwifi |
945 | +alias pci:v00008086d0000095Bsv*sd00005200bc*sc*i* iwlwifi |
946 | +alias pci:v00008086d0000095Bsv*sd00005202bc*sc*i* iwlwifi |
947 | +alias pci:v00008086d0000095Bsv*sd0000520Abc*sc*i* iwlwifi |
948 | +alias pci:v00008086d0000095Bsv*sd00005210bc*sc*i* iwlwifi |
949 | +alias pci:v00008086d0000095Bsv*sd00005212bc*sc*i* iwlwifi |
950 | +alias pci:v00008086d0000095Bsv*sd00005290bc*sc*i* iwlwifi |
951 | +alias pci:v00008086d0000095Bsv*sd00005302bc*sc*i* iwlwifi |
952 | +alias pci:v00008086d0000095Bsv*sd00005310bc*sc*i* iwlwifi |
953 | +alias pci:v00008086d0000095Bsv*sd00009200bc*sc*i* iwlwifi |
954 | +alias pci:v00008086d0000095Bsv*sd00009210bc*sc*i* iwlwifi |
955 | +alias pci:v00008086d0000095Bsv*sd00009310bc*sc*i* iwlwifi |
956 | alias pci:v00008086d000024F3sv*sd00000000bc*sc*i* iwlwifi |
957 | -alias pci:v00008086d000024F3sv*sd00000930bc*sc*i* iwlwifi |
958 | -alias pci:v00008086d000024F3sv*sd00000950bc*sc*i* iwlwifi |
959 | +alias pci:v00008086d000024F3sv*sd00000004bc*sc*i* iwlwifi |
960 | +alias pci:v00008086d000024F3sv*sd00000010bc*sc*i* iwlwifi |
961 | +alias pci:v00008086d000024F3sv*sd00000012bc*sc*i* iwlwifi |
962 | +alias pci:v00008086d000024F3sv*sd00000044bc*sc*i* iwlwifi |
963 | +alias pci:v00008086d000024F3sv*sd00000050bc*sc*i* iwlwifi |
964 | +alias pci:v00008086d000024F3sv*sd00000110bc*sc*i* iwlwifi |
965 | +alias pci:v00008086d000024F3sv*sd00000130bc*sc*i* iwlwifi |
966 | +alias pci:v00008086d000024F3sv*sd00000132bc*sc*i* iwlwifi |
967 | +alias pci:v00008086d000024F3sv*sd00000150bc*sc*i* iwlwifi |
968 | +alias pci:v00008086d000024F3sv*sd000001F0bc*sc*i* iwlwifi |
969 | +alias pci:v00008086d000024F3sv*sd00000250bc*sc*i* iwlwifi |
970 | +alias pci:v00008086d000024F3sv*sd00000810bc*sc*i* iwlwifi |
971 | alias pci:v00008086d000024F3sv*sd00000850bc*sc*i* iwlwifi |
972 | alias pci:v00008086d000024F3sv*sd00000910bc*sc*i* iwlwifi |
973 | -alias pci:v00008086d000024F3sv*sd00000810bc*sc*i* iwlwifi |
974 | -alias pci:v00008086d000024F6sv*sd00000030bc*sc*i* iwlwifi |
975 | -alias pci:v00008086d000024F5sv*sd00000010bc*sc*i* iwlwifi |
976 | -alias pci:v00008086d000024F3sv*sd00000044bc*sc*i* iwlwifi |
977 | -alias pci:v00008086d000024F3sv*sd00000004bc*sc*i* iwlwifi |
978 | -alias pci:v00008086d000024F3sv*sd00009150bc*sc*i* iwlwifi |
979 | -alias pci:v00008086d000024F3sv*sd00009050bc*sc*i* iwlwifi |
980 | -alias pci:v00008086d000024F3sv*sd00008150bc*sc*i* iwlwifi |
981 | +alias pci:v00008086d000024F3sv*sd00000930bc*sc*i* iwlwifi |
982 | +alias pci:v00008086d000024F3sv*sd00000950bc*sc*i* iwlwifi |
983 | +alias pci:v00008086d000024F3sv*sd00001010bc*sc*i* iwlwifi |
984 | +alias pci:v00008086d000024F3sv*sd00001012bc*sc*i* iwlwifi |
985 | +alias pci:v00008086d000024F3sv*sd00001050bc*sc*i* iwlwifi |
986 | +alias pci:v00008086d000024F3sv*sd000010B0bc*sc*i* iwlwifi |
987 | +alias pci:v00008086d000024F3sv*sd00001110bc*sc*i* iwlwifi |
988 | +alias pci:v00008086d000024F3sv*sd00001130bc*sc*i* iwlwifi |
989 | +alias pci:v00008086d000024F3sv*sd00001132bc*sc*i* iwlwifi |
990 | +alias pci:v00008086d000024F3sv*sd00001150bc*sc*i* iwlwifi |
991 | +alias pci:v00008086d000024F3sv*sd00004010bc*sc*i* iwlwifi |
992 | +alias pci:v00008086d000024F3sv*sd00008010bc*sc*i* iwlwifi |
993 | alias pci:v00008086d000024F3sv*sd00008050bc*sc*i* iwlwifi |
994 | -alias pci:v00008086d000024F3sv*sd00009132bc*sc*i* iwlwifi |
995 | -alias pci:v00008086d000024F3sv*sd00008132bc*sc*i* iwlwifi |
996 | -alias pci:v00008086d000024F3sv*sd00009130bc*sc*i* iwlwifi |
997 | +alias pci:v00008086d000024F3sv*sd00008110bc*sc*i* iwlwifi |
998 | alias pci:v00008086d000024F3sv*sd00008130bc*sc*i* iwlwifi |
999 | -alias pci:v00008086d000024F4sv*sd0000D030bc*sc*i* iwlwifi |
1000 | -alias pci:v00008086d000024F4sv*sd0000C030bc*sc*i* iwlwifi |
1001 | -alias pci:v00008086d000024F4sv*sd00009030bc*sc*i* iwlwifi |
1002 | -alias pci:v00008086d000024F4sv*sd00008030bc*sc*i* iwlwifi |
1003 | -alias pci:v00008086d000024F3sv*sd00009110bc*sc*i* iwlwifi |
1004 | +alias pci:v00008086d000024F3sv*sd00008132bc*sc*i* iwlwifi |
1005 | +alias pci:v00008086d000024F3sv*sd00008150bc*sc*i* iwlwifi |
1006 | alias pci:v00008086d000024F3sv*sd00009010bc*sc*i* iwlwifi |
1007 | -alias pci:v00008086d000024F3sv*sd00008110bc*sc*i* iwlwifi |
1008 | -alias pci:v00008086d000024F3sv*sd00008010bc*sc*i* iwlwifi |
1009 | +alias pci:v00008086d000024F3sv*sd00009050bc*sc*i* iwlwifi |
1010 | +alias pci:v00008086d000024F3sv*sd00009110bc*sc*i* iwlwifi |
1011 | +alias pci:v00008086d000024F3sv*sd00009130bc*sc*i* iwlwifi |
1012 | +alias pci:v00008086d000024F3sv*sd00009132bc*sc*i* iwlwifi |
1013 | +alias pci:v00008086d000024F3sv*sd00009150bc*sc*i* iwlwifi |
1014 | alias pci:v00008086d000024F3sv*sd0000B0B0bc*sc*i* iwlwifi |
1015 | -alias pci:v00008086d000024F3sv*sd0000D0B0bc*sc*i* iwlwifi |
1016 | -alias pci:v00008086d000024F3sv*sd0000D050bc*sc*i* iwlwifi |
1017 | +alias pci:v00008086d000024F3sv*sd0000C010bc*sc*i* iwlwifi |
1018 | alias pci:v00008086d000024F3sv*sd0000C050bc*sc*i* iwlwifi |
1019 | -alias pci:v00008086d000024F3sv*sd0000D010bc*sc*i* iwlwifi |
1020 | alias pci:v00008086d000024F3sv*sd0000C110bc*sc*i* iwlwifi |
1021 | -alias pci:v00008086d000024F3sv*sd0000C010bc*sc*i* iwlwifi |
1022 | -alias pci:v00008086d000024F4sv*sd00001030bc*sc*i* iwlwifi |
1023 | +alias pci:v00008086d000024F3sv*sd0000D010bc*sc*i* iwlwifi |
1024 | +alias pci:v00008086d000024F3sv*sd0000D050bc*sc*i* iwlwifi |
1025 | +alias pci:v00008086d000024F3sv*sd0000D0B0bc*sc*i* iwlwifi |
1026 | alias pci:v00008086d000024F4sv*sd00000030bc*sc*i* iwlwifi |
1027 | -alias pci:v00008086d000024F3sv*sd00001150bc*sc*i* iwlwifi |
1028 | -alias pci:v00008086d000024F3sv*sd00000150bc*sc*i* iwlwifi |
1029 | -alias pci:v00008086d000024F3sv*sd00001050bc*sc*i* iwlwifi |
1030 | -alias pci:v00008086d000024F3sv*sd00000250bc*sc*i* iwlwifi |
1031 | -alias pci:v00008086d000024F3sv*sd00000050bc*sc*i* iwlwifi |
1032 | -alias pci:v00008086d000024F3sv*sd00001110bc*sc*i* iwlwifi |
1033 | -alias pci:v00008086d000024F3sv*sd00001012bc*sc*i* iwlwifi |
1034 | -alias pci:v00008086d000024F3sv*sd00000012bc*sc*i* iwlwifi |
1035 | -alias pci:v00008086d000024F3sv*sd000001F0bc*sc*i* iwlwifi |
1036 | -alias pci:v00008086d000024F3sv*sd00000110bc*sc*i* iwlwifi |
1037 | -alias pci:v00008086d000024F3sv*sd00001132bc*sc*i* iwlwifi |
1038 | -alias pci:v00008086d000024F3sv*sd00000132bc*sc*i* iwlwifi |
1039 | -alias pci:v00008086d000024F3sv*sd00001130bc*sc*i* iwlwifi |
1040 | -alias pci:v00008086d000024F3sv*sd00000130bc*sc*i* iwlwifi |
1041 | -alias pci:v00008086d000024F3sv*sd000010B0bc*sc*i* iwlwifi |
1042 | -alias pci:v00008086d000024F3sv*sd00001010bc*sc*i* iwlwifi |
1043 | -alias pci:v00008086d000024F3sv*sd00000010bc*sc*i* iwlwifi |
1044 | -alias pci:v00008086d0000095Asv*sd00009E10bc*sc*i* iwlwifi |
1045 | -alias pci:v00008086d0000095Asv*sd00009400bc*sc*i* iwlwifi |
1046 | -alias pci:v00008086d0000095Asv*sd00009000bc*sc*i* iwlwifi |
1047 | -alias pci:v00008086d0000095Bsv*sd0000520Abc*sc*i* iwlwifi |
1048 | -alias pci:v00008086d0000095Bsv*sd00005212bc*sc*i* iwlwifi |
1049 | -alias pci:v00008086d0000095Asv*sd00005F10bc*sc*i* iwlwifi |
1050 | -alias pci:v00008086d0000095Asv*sd00005490bc*sc*i* iwlwifi |
1051 | -alias pci:v00008086d0000095Bsv*sd00005290bc*sc*i* iwlwifi |
1052 | -alias pci:v00008086d0000095Asv*sd00005590bc*sc*i* iwlwifi |
1053 | -alias pci:v00008086d0000095Asv*sd00005190bc*sc*i* iwlwifi |
1054 | -alias pci:v00008086d0000095Asv*sd00005090bc*sc*i* iwlwifi |
1055 | -alias pci:v00008086d0000095Asv*sd00005420bc*sc*i* iwlwifi |
1056 | -alias pci:v00008086d0000095Asv*sd0000502Abc*sc*i* iwlwifi |
1057 | -alias pci:v00008086d0000095Asv*sd00005020bc*sc*i* iwlwifi |
1058 | -alias pci:v00008086d0000095Asv*sd00009410bc*sc*i* iwlwifi |
1059 | -alias pci:v00008086d0000095Bsv*sd00009310bc*sc*i* iwlwifi |
1060 | -alias pci:v00008086d0000095Asv*sd00009510bc*sc*i* iwlwifi |
1061 | -alias pci:v00008086d0000095Bsv*sd00009200bc*sc*i* iwlwifi |
1062 | -alias pci:v00008086d0000095Bsv*sd00009210bc*sc*i* iwlwifi |
1063 | -alias pci:v00008086d0000095Asv*sd00009112bc*sc*i* iwlwifi |
1064 | -alias pci:v00008086d0000095Asv*sd00009110bc*sc*i* iwlwifi |
1065 | -alias pci:v00008086d0000095Asv*sd0000900Abc*sc*i* iwlwifi |
1066 | -alias pci:v00008086d0000095Asv*sd00009012bc*sc*i* iwlwifi |
1067 | -alias pci:v00008086d0000095Asv*sd00009010bc*sc*i* iwlwifi |
1068 | -alias pci:v00008086d0000095Bsv*sd00005202bc*sc*i* iwlwifi |
1069 | -alias pci:v00008086d0000095Asv*sd00005102bc*sc*i* iwlwifi |
1070 | -alias pci:v00008086d0000095Asv*sd00005002bc*sc*i* iwlwifi |
1071 | -alias pci:v00008086d0000095Bsv*sd00005200bc*sc*i* iwlwifi |
1072 | -alias pci:v00008086d0000095Asv*sd0000500Abc*sc*i* iwlwifi |
1073 | -alias pci:v00008086d0000095Asv*sd00005000bc*sc*i* iwlwifi |
1074 | -alias pci:v00008086d0000095Asv*sd00001010bc*sc*i* iwlwifi |
1075 | -alias pci:v00008086d0000095Asv*sd00005400bc*sc*i* iwlwifi |
1076 | -alias pci:v00008086d0000095Asv*sd00005510bc*sc*i* iwlwifi |
1077 | -alias pci:v00008086d0000095Asv*sd00005410bc*sc*i* iwlwifi |
1078 | -alias pci:v00008086d0000095Asv*sd00005412bc*sc*i* iwlwifi |
1079 | -alias pci:v00008086d0000095Asv*sd00005012bc*sc*i* iwlwifi |
1080 | -alias pci:v00008086d0000095Asv*sd00005C10bc*sc*i* iwlwifi |
1081 | -alias pci:v00008086d0000095Bsv*sd00005210bc*sc*i* iwlwifi |
1082 | -alias pci:v00008086d0000095Bsv*sd00005302bc*sc*i* iwlwifi |
1083 | -alias pci:v00008086d0000095Bsv*sd00005310bc*sc*i* iwlwifi |
1084 | -alias pci:v00008086d0000095Asv*sd00005100bc*sc*i* iwlwifi |
1085 | -alias pci:v00008086d0000095Asv*sd00005110bc*sc*i* iwlwifi |
1086 | -alias pci:v00008086d0000095Asv*sd00005010bc*sc*i* iwlwifi |
1087 | +alias pci:v00008086d000024F4sv*sd00001030bc*sc*i* iwlwifi |
1088 | +alias pci:v00008086d000024F4sv*sd00008030bc*sc*i* iwlwifi |
1089 | +alias pci:v00008086d000024F4sv*sd00009030bc*sc*i* iwlwifi |
1090 | +alias pci:v00008086d000024F4sv*sd0000C030bc*sc*i* iwlwifi |
1091 | +alias pci:v00008086d000024F4sv*sd0000D030bc*sc*i* iwlwifi |
1092 | +alias pci:v00008086d000024F5sv*sd00000010bc*sc*i* iwlwifi |
1093 | +alias pci:v00008086d000024F6sv*sd00000030bc*sc*i* iwlwifi |
1094 | alias pci:v00008086d000024FBsv*sd00000000bc*sc*i* iwlwifi |
1095 | -alias pci:v00008086d000024FBsv*sd00002150bc*sc*i* iwlwifi |
1096 | +alias pci:v00008086d000024FBsv*sd00002010bc*sc*i* iwlwifi |
1097 | alias pci:v00008086d000024FBsv*sd00002050bc*sc*i* iwlwifi |
1098 | alias pci:v00008086d000024FBsv*sd00002110bc*sc*i* iwlwifi |
1099 | -alias pci:v00008086d000024FBsv*sd00002010bc*sc*i* iwlwifi |
1100 | -alias pci:v00008086d00003165sv*sd00008110bc*sc*i* iwlwifi |
1101 | -alias pci:v00008086d00003165sv*sd00008010bc*sc*i* iwlwifi |
1102 | -alias pci:v00008086d00003166sv*sd00004210bc*sc*i* iwlwifi |
1103 | -alias pci:v00008086d00003166sv*sd00004310bc*sc*i* iwlwifi |
1104 | +alias pci:v00008086d000024FBsv*sd00002150bc*sc*i* iwlwifi |
1105 | +alias pci:v00008086d000024FDsv*sd00000010bc*sc*i* iwlwifi |
1106 | +alias pci:v00008086d000024FDsv*sd00000012bc*sc*i* iwlwifi |
1107 | +alias pci:v00008086d000024FDsv*sd00000014bc*sc*i* iwlwifi |
1108 | +alias pci:v00008086d000024FDsv*sd00000050bc*sc*i* iwlwifi |
1109 | +alias pci:v00008086d000024FDsv*sd00000110bc*sc*i* iwlwifi |
1110 | +alias pci:v00008086d000024FDsv*sd00000130bc*sc*i* iwlwifi |
1111 | +alias pci:v00008086d000024FDsv*sd00000150bc*sc*i* iwlwifi |
1112 | +alias pci:v00008086d000024FDsv*sd00000810bc*sc*i* iwlwifi |
1113 | +alias pci:v00008086d000024FDsv*sd00000850bc*sc*i* iwlwifi |
1114 | +alias pci:v00008086d000024FDsv*sd00000910bc*sc*i* iwlwifi |
1115 | +alias pci:v00008086d000024FDsv*sd00000930bc*sc*i* iwlwifi |
1116 | +alias pci:v00008086d000024FDsv*sd00000950bc*sc*i* iwlwifi |
1117 | +alias pci:v00008086d000024FDsv*sd00001010bc*sc*i* iwlwifi |
1118 | +alias pci:v00008086d000024FDsv*sd00001012bc*sc*i* iwlwifi |
1119 | +alias pci:v00008086d000024FDsv*sd00001014bc*sc*i* iwlwifi |
1120 | +alias pci:v00008086d000024FDsv*sd000010D0bc*sc*i* iwlwifi |
1121 | +alias pci:v00008086d000024FDsv*sd00001110bc*sc*i* iwlwifi |
1122 | +alias pci:v00008086d000024FDsv*sd00001130bc*sc*i* iwlwifi |
1123 | +alias pci:v00008086d000024FDsv*sd00003E01bc*sc*i* iwlwifi |
1124 | +alias pci:v00008086d000024FDsv*sd00003E02bc*sc*i* iwlwifi |
1125 | +alias pci:v00008086d000024FDsv*sd00008010bc*sc*i* iwlwifi |
1126 | +alias pci:v00008086d000024FDsv*sd00008050bc*sc*i* iwlwifi |
1127 | +alias pci:v00008086d000024FDsv*sd00008110bc*sc*i* iwlwifi |
1128 | +alias pci:v00008086d000024FDsv*sd00008130bc*sc*i* iwlwifi |
1129 | +alias pci:v00008086d000024FDsv*sd00009010bc*sc*i* iwlwifi |
1130 | +alias pci:v00008086d000024FDsv*sd00009074bc*sc*i* iwlwifi |
1131 | +alias pci:v00008086d000024FDsv*sd00009110bc*sc*i* iwlwifi |
1132 | +alias pci:v00008086d00002526sv*sd*bc*sc*i* iwlwifi |
1133 | +alias pci:v00008086d0000271Bsv*sd*bc*sc*i* iwlwifi |
1134 | +alias pci:v00008086d0000271Csv*sd*bc*sc*i* iwlwifi |
1135 | +alias pci:v00008086d00002720sv*sd*bc*sc*i* iwlwifi |
1136 | +alias pci:v00008086d00002723sv*sd*bc*sc*i* iwlwifi |
1137 | +alias pci:v00008086d00002725sv*sd00000000bc*sc*i* iwlwifi |
1138 | +alias pci:v00008086d00002725sv*sd00000020bc*sc*i* iwlwifi |
1139 | +alias pci:v00008086d00002725sv*sd00000090bc*sc*i* iwlwifi |
1140 | +alias pci:v00008086d00002725sv*sd000000B0bc*sc*i* iwlwifi |
1141 | +alias pci:v00008086d00002725sv*sd00000310bc*sc*i* iwlwifi |
1142 | +alias pci:v00008086d00002725sv*sd00000510bc*sc*i* iwlwifi |
1143 | +alias pci:v00008086d00002725sv*sd00000A10bc*sc*i* iwlwifi |
1144 | +alias pci:v00008086d000030DCsv*sd*bc*sc*i* iwlwifi |
1145 | +alias pci:v00008086d00003165sv*sd00004010bc*sc*i* iwlwifi |
1146 | +alias pci:v00008086d00003165sv*sd00004012bc*sc*i* iwlwifi |
1147 | alias pci:v00008086d00003165sv*sd00004110bc*sc*i* iwlwifi |
1148 | -alias pci:v00008086d00003165sv*sd00004510bc*sc*i* iwlwifi |
1149 | alias pci:v00008086d00003165sv*sd00004410bc*sc*i* iwlwifi |
1150 | +alias pci:v00008086d00003165sv*sd00004510bc*sc*i* iwlwifi |
1151 | +alias pci:v00008086d00003165sv*sd00008010bc*sc*i* iwlwifi |
1152 | +alias pci:v00008086d00003165sv*sd00008110bc*sc*i* iwlwifi |
1153 | +alias pci:v00008086d00003166sv*sd00004210bc*sc*i* iwlwifi |
1154 | alias pci:v00008086d00003166sv*sd00004212bc*sc*i* iwlwifi |
1155 | -alias pci:v00008086d00003165sv*sd00004012bc*sc*i* iwlwifi |
1156 | -alias pci:v00008086d00003165sv*sd00004010bc*sc*i* iwlwifi |
1157 | -alias pci:v00008086d000008B3sv*sd00001170bc*sc*i* iwlwifi |
1158 | -alias pci:v00008086d000008B3sv*sd00001070bc*sc*i* iwlwifi |
1159 | -alias pci:v00008086d000008B3sv*sd00008570bc*sc*i* iwlwifi |
1160 | -alias pci:v00008086d000008B3sv*sd00008470bc*sc*i* iwlwifi |
1161 | -alias pci:v00008086d000008B4sv*sd00008272bc*sc*i* iwlwifi |
1162 | -alias pci:v00008086d000008B4sv*sd00008370bc*sc*i* iwlwifi |
1163 | -alias pci:v00008086d000008B4sv*sd00008270bc*sc*i* iwlwifi |
1164 | -alias pci:v00008086d000008B3sv*sd00008062bc*sc*i* iwlwifi |
1165 | -alias pci:v00008086d000008B3sv*sd00008060bc*sc*i* iwlwifi |
1166 | -alias pci:v00008086d000008B3sv*sd00008172bc*sc*i* iwlwifi |
1167 | -alias pci:v00008086d000008B3sv*sd00008170bc*sc*i* iwlwifi |
1168 | -alias pci:v00008086d000008B3sv*sd00008072bc*sc*i* iwlwifi |
1169 | -alias pci:v00008086d000008B3sv*sd00008070bc*sc*i* iwlwifi |
1170 | -alias pci:v00008086d000008B4sv*sd00000370bc*sc*i* iwlwifi |
1171 | -alias pci:v00008086d000008B3sv*sd00000472bc*sc*i* iwlwifi |
1172 | -alias pci:v00008086d000008B3sv*sd00000470bc*sc*i* iwlwifi |
1173 | -alias pci:v00008086d000008B4sv*sd00000272bc*sc*i* iwlwifi |
1174 | -alias pci:v00008086d000008B4sv*sd00000270bc*sc*i* iwlwifi |
1175 | -alias pci:v00008086d000008B3sv*sd00000062bc*sc*i* iwlwifi |
1176 | -alias pci:v00008086d000008B3sv*sd00000060bc*sc*i* iwlwifi |
1177 | -alias pci:v00008086d000008B3sv*sd00000172bc*sc*i* iwlwifi |
1178 | -alias pci:v00008086d000008B3sv*sd00000170bc*sc*i* iwlwifi |
1179 | -alias pci:v00008086d000008B3sv*sd00000072bc*sc*i* iwlwifi |
1180 | -alias pci:v00008086d000008B3sv*sd00000070bc*sc*i* iwlwifi |
1181 | -alias pci:v00008086d000008B1sv*sd0000C420bc*sc*i* iwlwifi |
1182 | -alias pci:v00008086d000008B2sv*sd0000C220bc*sc*i* iwlwifi |
1183 | -alias pci:v00008086d000008B1sv*sd0000C02Abc*sc*i* iwlwifi |
1184 | -alias pci:v00008086d000008B1sv*sd0000C020bc*sc*i* iwlwifi |
1185 | -alias pci:v00008086d000008B1sv*sd0000C360bc*sc*i* iwlwifi |
1186 | -alias pci:v00008086d000008B2sv*sd0000C370bc*sc*i* iwlwifi |
1187 | -alias pci:v00008086d000008B1sv*sd0000C560bc*sc*i* iwlwifi |
1188 | -alias pci:v00008086d000008B1sv*sd0000C570bc*sc*i* iwlwifi |
1189 | -alias pci:v00008086d000008B1sv*sd0000C462bc*sc*i* iwlwifi |
1190 | -alias pci:v00008086d000008B1sv*sd0000C460bc*sc*i* iwlwifi |
1191 | -alias pci:v00008086d000008B1sv*sd0000C472bc*sc*i* iwlwifi |
1192 | -alias pci:v00008086d000008B1sv*sd0000C470bc*sc*i* iwlwifi |
1193 | -alias pci:v00008086d000008B2sv*sd0000C262bc*sc*i* iwlwifi |
1194 | -alias pci:v00008086d000008B2sv*sd0000C26Abc*sc*i* iwlwifi |
1195 | -alias pci:v00008086d000008B2sv*sd0000C260bc*sc*i* iwlwifi |
1196 | -alias pci:v00008086d000008B2sv*sd0000C272bc*sc*i* iwlwifi |
1197 | -alias pci:v00008086d000008B1sv*sd0000CC60bc*sc*i* iwlwifi |
1198 | -alias pci:v00008086d000008B1sv*sd0000CC70bc*sc*i* iwlwifi |
1199 | -alias pci:v00008086d000008B2sv*sd0000C270bc*sc*i* iwlwifi |
1200 | -alias pci:v00008086d000008B1sv*sd0000C760bc*sc*i* iwlwifi |
1201 | -alias pci:v00008086d000008B1sv*sd0000C770bc*sc*i* iwlwifi |
1202 | -alias pci:v00008086d000008B1sv*sd0000C162bc*sc*i* iwlwifi |
1203 | -alias pci:v00008086d000008B1sv*sd0000C062bc*sc*i* iwlwifi |
1204 | -alias pci:v00008086d000008B1sv*sd0000C160bc*sc*i* iwlwifi |
1205 | -alias pci:v00008086d000008B1sv*sd0000C06Abc*sc*i* iwlwifi |
1206 | -alias pci:v00008086d000008B1sv*sd0000C060bc*sc*i* iwlwifi |
1207 | -alias pci:v00008086d000008B1sv*sd0000C170bc*sc*i* iwlwifi |
1208 | -alias pci:v00008086d000008B1sv*sd0000C072bc*sc*i* iwlwifi |
1209 | -alias pci:v00008086d000008B1sv*sd0000C070bc*sc*i* iwlwifi |
1210 | -alias pci:v00008086d000008B1sv*sd00004420bc*sc*i* iwlwifi |
1211 | -alias pci:v00008086d000008B2sv*sd00004220bc*sc*i* iwlwifi |
1212 | -alias pci:v00008086d000008B1sv*sd0000402Abc*sc*i* iwlwifi |
1213 | -alias pci:v00008086d000008B1sv*sd00004020bc*sc*i* iwlwifi |
1214 | -alias pci:v00008086d000008B1sv*sd00005770bc*sc*i* iwlwifi |
1215 | -alias pci:v00008086d000008B1sv*sd00005170bc*sc*i* iwlwifi |
1216 | -alias pci:v00008086d000008B1sv*sd00005072bc*sc*i* iwlwifi |
1217 | -alias pci:v00008086d000008B1sv*sd00005070bc*sc*i* iwlwifi |
1218 | -alias pci:v00008086d000008B2sv*sd00004360bc*sc*i* iwlwifi |
1219 | -alias pci:v00008086d000008B2sv*sd00004370bc*sc*i* iwlwifi |
1220 | -alias pci:v00008086d000008B1sv*sd00004560bc*sc*i* iwlwifi |
1221 | -alias pci:v00008086d000008B1sv*sd00004570bc*sc*i* iwlwifi |
1222 | -alias pci:v00008086d000008B1sv*sd00004A6Cbc*sc*i* iwlwifi |
1223 | -alias pci:v00008086d000008B1sv*sd00004A6Ebc*sc*i* iwlwifi |
1224 | -alias pci:v00008086d000008B1sv*sd00004A70bc*sc*i* iwlwifi |
1225 | -alias pci:v00008086d000008B1sv*sd0000486Ebc*sc*i* iwlwifi |
1226 | -alias pci:v00008086d000008B1sv*sd00004870bc*sc*i* iwlwifi |
1227 | -alias pci:v00008086d000008B1sv*sd00004462bc*sc*i* iwlwifi |
1228 | -alias pci:v00008086d000008B1sv*sd0000446Abc*sc*i* iwlwifi |
1229 | -alias pci:v00008086d000008B1sv*sd00004460bc*sc*i* iwlwifi |
1230 | -alias pci:v00008086d000008B1sv*sd00004472bc*sc*i* iwlwifi |
1231 | -alias pci:v00008086d000008B1sv*sd00004470bc*sc*i* iwlwifi |
1232 | -alias pci:v00008086d000008B2sv*sd00004262bc*sc*i* iwlwifi |
1233 | -alias pci:v00008086d000008B2sv*sd0000426Abc*sc*i* iwlwifi |
1234 | -alias pci:v00008086d000008B2sv*sd00004260bc*sc*i* iwlwifi |
1235 | -alias pci:v00008086d000008B2sv*sd00004272bc*sc*i* iwlwifi |
1236 | -alias pci:v00008086d000008B2sv*sd00004270bc*sc*i* iwlwifi |
1237 | -alias pci:v00008086d000008B1sv*sd00004162bc*sc*i* iwlwifi |
1238 | -alias pci:v00008086d000008B1sv*sd00004062bc*sc*i* iwlwifi |
1239 | -alias pci:v00008086d000008B1sv*sd00004160bc*sc*i* iwlwifi |
1240 | -alias pci:v00008086d000008B1sv*sd0000406Abc*sc*i* iwlwifi |
1241 | -alias pci:v00008086d000008B1sv*sd00004060bc*sc*i* iwlwifi |
1242 | -alias pci:v00008086d000008B1sv*sd00004C70bc*sc*i* iwlwifi |
1243 | -alias pci:v00008086d000008B1sv*sd00004C60bc*sc*i* iwlwifi |
1244 | -alias pci:v00008086d000008B1sv*sd00004170bc*sc*i* iwlwifi |
1245 | -alias pci:v00008086d000008B1sv*sd00004072bc*sc*i* iwlwifi |
1246 | -alias pci:v00008086d000008B1sv*sd00004070bc*sc*i* iwlwifi |
1247 | +alias pci:v00008086d00003166sv*sd00004310bc*sc*i* iwlwifi |
1248 | +alias pci:v00008086d000031DCsv*sd*bc*sc*i* iwlwifi |
1249 | +alias pci:v00008086d000034F0sv*sd*bc*sc*i* iwlwifi |
1250 | +alias pci:v00008086d00003DF0sv*sd*bc*sc*i* iwlwifi |
1251 | +alias pci:v00008086d000043F0sv*sd*bc*sc*i* iwlwifi |
1252 | +alias pci:v00008086d00007A70sv*sd00000090bc*sc*i* iwlwifi |
1253 | +alias pci:v00008086d00007A70sv*sd00000310bc*sc*i* iwlwifi |
1254 | +alias pci:v00008086d00007A70sv*sd00000510bc*sc*i* iwlwifi |
1255 | +alias pci:v00008086d00007A70sv*sd00000A10bc*sc*i* iwlwifi |
1256 | +alias pci:v00008086d00007AF0sv*sd00000090bc*sc*i* iwlwifi |
1257 | +alias pci:v00008086d00007AF0sv*sd00000310bc*sc*i* iwlwifi |
1258 | +alias pci:v00008086d00007AF0sv*sd00000510bc*sc*i* iwlwifi |
1259 | +alias pci:v00008086d00007AF0sv*sd00000A10bc*sc*i* iwlwifi |
1260 | +alias pci:v00008086d00009DF0sv*sd*bc*sc*i* iwlwifi |
1261 | +alias pci:v00008086d0000A0F0sv*sd*bc*sc*i* iwlwifi |
1262 | +alias pci:v00008086d0000A370sv*sd*bc*sc*i* iwlwifi |
1263 | diff --git a/debian/changelog b/debian/changelog |
1264 | index d4fd01b..e6f67b1 100644 |
1265 | --- a/debian/changelog |
1266 | +++ b/debian/changelog |
1267 | @@ -1,3 +1,16 @@ |
1268 | +backport-iwlwifi-dkms (8286-0ubuntu1) focal; urgency=low |
1269 | + |
1270 | + * New release |
1271 | + - upstream version 8286 commit 26271a73a63d24. |
1272 | + |
1273 | + * debian/patches: |
1274 | + - Update 0006-backport-address-interface-change-in-linux-skbuff.h-.patch |
1275 | + - Drop 0003-backport-apply-__copy-to-init_module-cleanup_module.patch |
1276 | + - Drop 0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch |
1277 | + * Update debian/backport-iwlwifi-dkms.modaliases |
1278 | + |
1279 | + -- You-Sheng Yang <vicamo@gmail.com> Wed, 18 Dec 2019 19:43:25 +0800 |
1280 | + |
1281 | backport-iwlwifi-dkms (8042-0ubuntu3) focal; urgency=medium |
1282 | |
1283 | * debian/patches/0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch |
1284 | diff --git a/debian/patches/0003-backport-apply-__copy-to-init_module-cleanup_module.patch b/debian/patches/0003-backport-apply-__copy-to-init_module-cleanup_module.patch |
1285 | deleted file mode 100644 |
1286 | index d7c145c..0000000 |
1287 | --- a/debian/patches/0003-backport-apply-__copy-to-init_module-cleanup_module.patch |
1288 | +++ /dev/null |
1289 | @@ -1,44 +0,0 @@ |
1290 | -From: You-Sheng Yang <vicamo@gmail.com> |
1291 | -Date: Mon, 15 Jul 2019 18:56:31 +0800 |
1292 | -Subject: backport: apply __copy to init_module/cleanup_module |
1293 | - |
1294 | ---- |
1295 | - backport-include/linux/compiler.h | 4 ++++ |
1296 | - backport-include/linux/module.h | 4 ++-- |
1297 | - 2 files changed, 6 insertions(+), 2 deletions(-) |
1298 | - |
1299 | -diff --git a/backport-include/linux/compiler.h b/backport-include/linux/compiler.h |
1300 | -index 53c069d..adc5a24 100644 |
1301 | ---- a/backport-include/linux/compiler.h |
1302 | -+++ b/backport-include/linux/compiler.h |
1303 | -@@ -92,4 +92,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s |
1304 | - #define OPTIMIZER_HIDE_VAR(var) barrier() |
1305 | - #endif |
1306 | - |
1307 | -+#ifndef __copy |
1308 | -+#define __copy(x) |
1309 | -+#endif |
1310 | -+ |
1311 | - #endif /* __BACKPORT_LINUX_COMPILER_H */ |
1312 | -diff --git a/backport-include/linux/module.h b/backport-include/linux/module.h |
1313 | -index 1a2c82f..877491e 100644 |
1314 | ---- a/backport-include/linux/module.h |
1315 | -+++ b/backport-include/linux/module.h |
1316 | -@@ -33,7 +33,7 @@ extern void backport_dependency_symbol(void); |
1317 | - backport_dependency_symbol(); \ |
1318 | - return initfn(); \ |
1319 | - } \ |
1320 | -- int init_module(void) __attribute__((alias("__init_backport")));\ |
1321 | -+ int init_module(void) __copy(__init_backport) __attribute__((alias("__init_backport")));\ |
1322 | - BACKPORT_MOD_VERSIONS |
1323 | - |
1324 | - /* |
1325 | -@@ -58,7 +58,7 @@ extern void backport_dependency_symbol(void); |
1326 | - exitfn(); \ |
1327 | - rcu_barrier(); \ |
1328 | - } \ |
1329 | -- void cleanup_module(void) __attribute__((alias("__exit_compat"))); |
1330 | -+ void cleanup_module(void) __copy(__exit_compat) __attribute__((alias("__exit_compat"))); |
1331 | - #endif |
1332 | - |
1333 | - #if LINUX_VERSION_IS_LESS(3,3,0) |
1334 | diff --git a/debian/patches/0006-backport-address-interface-change-in-linux-skbuff.h-.patch b/debian/patches/0006-backport-address-interface-change-in-linux-skbuff.h-.patch |
1335 | index 6151f1e..6ce71cd 100644 |
1336 | --- a/debian/patches/0006-backport-address-interface-change-in-linux-skbuff.h-.patch |
1337 | +++ b/debian/patches/0006-backport-address-interface-change-in-linux-skbuff.h-.patch |
1338 | @@ -1,6 +1,6 @@ |
1339 | -From 0ed9684f769f127c466599292fd750b07a9b36de Mon Sep 17 00:00:00 2001 |
1340 | +From 436871ec96c59dd238d7a603b1e140e90a232b88 Mon Sep 17 00:00:00 2001 |
1341 | From: You-Sheng Yang <vicamo.yang@canonical.com> |
1342 | -Date: Tue, 10 Dec 2019 17:35:29 +0800 |
1343 | +Date: Wed, 18 Dec 2019 22:28:08 +0800 |
1344 | Subject: [PATCH] backport: address interface change in linux/skbuff.h since |
1345 | 5.3.10 |
1346 | |
1347 | @@ -17,87 +17,50 @@ compatibility to previous releases. |
1348 | Closes: vicamo/backport-iwlwifi-dkms#7 |
1349 | Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com> |
1350 | --- |
1351 | - include/net/fq.h | 15 +++++++++++++++ |
1352 | - include/net/fq_impl.h | 30 ++++++++++++++++++++++++++++++ |
1353 | - 2 files changed, 45 insertions(+) |
1354 | + include/net/fq.h | 9 ++++++++- |
1355 | + include/net/fq_impl.h | 9 ++++++++- |
1356 | + 2 files changed, 16 insertions(+), 2 deletions(-) |
1357 | |
1358 | diff --git a/include/net/fq.h b/include/net/fq.h |
1359 | -index d126b5d20..e0de891d6 100644 |
1360 | +index f142ee96b..ec04ae9bc 100644 |
1361 | --- a/include/net/fq.h |
1362 | +++ b/include/net/fq.h |
1363 | -@@ -69,7 +69,22 @@ struct fq { |
1364 | - struct list_head backlogs; |
1365 | - spinlock_t lock; |
1366 | - u32 flows_cnt; |
1367 | -+#if LINUX_VERSION_IS_GEQ(5,3,10) || \ |
1368 | -+ LINUX_VERSION_IN_RANGE(4,19,83,5,0,0) || \ |
1369 | -+ LINUX_VERSION_IN_RANGE(4,14,153,4,15,0) || \ |
1370 | -+ LINUX_VERSION_IN_RANGE(4,9,200,4,10,0) || \ |
1371 | -+ LINUX_VERSION_IN_RANGE(4,4,200,4,5,0) || \ |
1372 | -+ (UTS_UBUNTU_RELEASE_ABI && \ |
1373 | -+ (((LINUX_VERSION_CODE == KERNEL_VERSION(5,0,21)) && \ |
1374 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 38) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1375 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1032))) || \ |
1376 | -+ ((LINUX_VERSION_CODE == KERNEL_VERSION(4,15,18)) && \ |
1377 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 73) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1378 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1066))))) |
1379 | -+ siphash_key_t perturbation; |
1380 | -+#else |
1381 | +@@ -73,7 +73,14 @@ struct fq { |
1382 | + LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \ |
1383 | + LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \ |
1384 | + LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \ |
1385 | +- LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0) |
1386 | ++ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0) || \ |
1387 | ++ (UTS_UBUNTU_RELEASE_ABI && \ |
1388 | ++ (((LINUX_VERSION_CODE == KERNEL_VERSION(5,0,21)) && \ |
1389 | ++ (((UTS_UBUNTU_RELEASE_ABI >= 38) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1390 | ++ (UTS_UBUNTU_RELEASE_ABI >= 1032))) || \ |
1391 | ++ ((LINUX_VERSION_CODE == KERNEL_VERSION(4,15,18)) && \ |
1392 | ++ (((UTS_UBUNTU_RELEASE_ABI >= 73) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1393 | ++ (UTS_UBUNTU_RELEASE_ABI >= 1066))))) |
1394 | + siphash_key_t perturbation; |
1395 | + #else |
1396 | u32 perturbation; |
1397 | -+#endif |
1398 | - u32 limit; |
1399 | - u32 memory_limit; |
1400 | - u32 memory_usage; |
1401 | diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h |
1402 | -index be40a4b32..57effd687 100644 |
1403 | +index 86d5c56b2..20a1d271b 100644 |
1404 | --- a/include/net/fq_impl.h |
1405 | +++ b/include/net/fq_impl.h |
1406 | -@@ -108,7 +108,22 @@ begin: |
1407 | - |
1408 | - static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb) |
1409 | - { |
1410 | -+#if LINUX_VERSION_IS_GEQ(5,3,10) || \ |
1411 | -+ LINUX_VERSION_IN_RANGE(4,19,83,5,0,0) || \ |
1412 | -+ LINUX_VERSION_IN_RANGE(4,14,153,4,15,0) || \ |
1413 | -+ LINUX_VERSION_IN_RANGE(4,9,200,4,10,0) || \ |
1414 | -+ LINUX_VERSION_IN_RANGE(4,4,200,4,5,0) || \ |
1415 | -+ (UTS_UBUNTU_RELEASE_ABI && \ |
1416 | -+ (((LINUX_VERSION_CODE == KERNEL_VERSION(5,0,21)) && \ |
1417 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 38) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1418 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1032))) || \ |
1419 | -+ ((LINUX_VERSION_CODE == KERNEL_VERSION(4,15,18)) && \ |
1420 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 73) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1421 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1066))))) |
1422 | -+ u32 hash = skb_get_hash_perturb(skb, &fq->perturbation); |
1423 | -+#else |
1424 | +@@ -112,7 +112,14 @@ static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb) |
1425 | + LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \ |
1426 | + LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \ |
1427 | + LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \ |
1428 | +- LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0) |
1429 | ++ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0) || \ |
1430 | ++ (UTS_UBUNTU_RELEASE_ABI && \ |
1431 | ++ (((LINUX_VERSION_CODE == KERNEL_VERSION(5,0,21)) && \ |
1432 | ++ (((UTS_UBUNTU_RELEASE_ABI >= 38) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1433 | ++ (UTS_UBUNTU_RELEASE_ABI >= 1032))) || \ |
1434 | ++ ((LINUX_VERSION_CODE == KERNEL_VERSION(4,15,18)) && \ |
1435 | ++ (((UTS_UBUNTU_RELEASE_ABI >= 73) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1436 | ++ (UTS_UBUNTU_RELEASE_ABI >= 1066))))) |
1437 | + u32 hash = skb_get_hash_perturb(skb, &fq->perturbation); |
1438 | + #else |
1439 | u32 hash = skb_get_hash_perturb(skb, fq->perturbation); |
1440 | -+#endif |
1441 | - |
1442 | - return reciprocal_scale(hash, fq->flows_cnt); |
1443 | - } |
1444 | -@@ -308,7 +323,22 @@ static int fq_init(struct fq *fq, int flows_cnt) |
1445 | - INIT_LIST_HEAD(&fq->backlogs); |
1446 | - spin_lock_init(&fq->lock); |
1447 | - fq->flows_cnt = max_t(u32, flows_cnt, 1); |
1448 | -+#if LINUX_VERSION_IS_GEQ(5,3,10) || \ |
1449 | -+ LINUX_VERSION_IN_RANGE(4,19,83,5,0,0) || \ |
1450 | -+ LINUX_VERSION_IN_RANGE(4,14,153,4,15,0) || \ |
1451 | -+ LINUX_VERSION_IN_RANGE(4,9,200,4,10,0) || \ |
1452 | -+ LINUX_VERSION_IN_RANGE(4,4,200,4,5,0) || \ |
1453 | -+ (UTS_UBUNTU_RELEASE_ABI && \ |
1454 | -+ (((LINUX_VERSION_CODE == KERNEL_VERSION(5,0,21)) && \ |
1455 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 38) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1456 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1032))) || \ |
1457 | -+ ((LINUX_VERSION_CODE == KERNEL_VERSION(4,15,18)) && \ |
1458 | -+ (((UTS_UBUNTU_RELEASE_ABI >= 73) && (UTS_UBUNTU_RELEASE_ABI < 1000)) || \ |
1459 | -+ (UTS_UBUNTU_RELEASE_ABI >= 1066))))) |
1460 | -+ get_random_bytes(&fq->perturbation, sizeof(fq->perturbation)); |
1461 | -+#else |
1462 | - fq->perturbation = prandom_u32(); |
1463 | -+#endif |
1464 | - fq->quantum = 300; |
1465 | - fq->limit = 8192; |
1466 | - fq->memory_limit = 16 << 20; /* 16 MBytes */ |
1467 | -- |
1468 | 2.24.0 |
1469 | |
1470 | diff --git a/debian/patches/0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch b/debian/patches/0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch |
1471 | deleted file mode 100644 |
1472 | index ac6959a..0000000 |
1473 | --- a/debian/patches/0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch |
1474 | +++ /dev/null |
1475 | @@ -1,32 +0,0 @@ |
1476 | -From 7295f5fb6cc8394104a8ec39de1217048ed7a6e6 Mon Sep 17 00:00:00 2001 |
1477 | -From: You-Sheng Yang <vicamo.yang@canonical.com> |
1478 | -Date: Fri, 13 Dec 2019 08:54:42 +0000 |
1479 | -Subject: [PATCH] backport: don't include linux/pci-aspm.h on kernel >= v5.4-rc1 |
1480 | - |
1481 | -linux/pci-aspm.h has been merged into linux/pci.h in commit 7ce2e76a0420 |
1482 | -("PCI: Move ASPM declarations to linux/pci.h"), and mainline iwlwifi |
1483 | -removed such inclusion in commit 2b2654b8922a ("iwlwifi: Remove |
1484 | -unnecessary include of <linux/pci-aspm.h>"). |
1485 | - |
1486 | -Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com> |
1487 | ---- |
1488 | - drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 2 ++ |
1489 | - 1 file changed, 2 insertions(+) |
1490 | - |
1491 | -diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c |
1492 | -index 495ff9418..0fa34a93a 100644 |
1493 | ---- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c |
1494 | -+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c |
1495 | -@@ -62,7 +62,9 @@ |
1496 | - * |
1497 | - *****************************************************************************/ |
1498 | - #include <linux/pci.h> |
1499 | -+#if LINUX_VERSION_IS_LESS(5,4,0) |
1500 | - #include <linux/pci-aspm.h> |
1501 | -+#endif |
1502 | - #include <linux/interrupt.h> |
1503 | - #include <linux/debugfs.h> |
1504 | - #include <linux/sched.h> |
1505 | --- |
1506 | -2.24.0 |
1507 | - |
1508 | diff --git a/debian/patches/series b/debian/patches/series |
1509 | index 9c971ba..f4462c8 100644 |
1510 | --- a/debian/patches/series |
1511 | +++ b/debian/patches/series |
1512 | @@ -1,6 +1,4 @@ |
1513 | 0001-keep-zconf-in-make-clean.patch |
1514 | 0002-fix-format-overflow-compile-error-in-kconf-confdata..patch |
1515 | -0003-backport-apply-__copy-to-init_module-cleanup_module.patch |
1516 | 0005-Makefile.kernel-pass-fno-stack-clash-protection-and-.patch |
1517 | 0006-backport-address-interface-change-in-linux-skbuff.h-.patch |
1518 | -0007-backport-don-t-include-linux-pci-aspm.h-on-kernel-v5..patch |
1519 | diff --git a/debian/tests/check-modaliases b/debian/tests/check-modaliases |
1520 | deleted file mode 100755 |
1521 | index 351f5c0..0000000 |
1522 | --- a/debian/tests/check-modaliases |
1523 | +++ /dev/null |
1524 | @@ -1,51 +0,0 @@ |
1525 | -#!/bin/sh |
1526 | -# Generate and check module aliases. |
1527 | -# Author: You-Sheng Yang <vicamo.yang@canonical.com> |
1528 | -# Copyright: (C) 2019 Canonical Ltd. |
1529 | - |
1530 | -set -eu |
1531 | - |
1532 | -run_pkg() { |
1533 | - pkg="$1" |
1534 | - |
1535 | - echo "I: Testing binary package $pkg" |
1536 | - |
1537 | - if ! dkms_conf=$(dpkg -L $pkg | grep 'dkms.conf$'); then |
1538 | - echo "I: Package $pkg has no dkms.conf, skipping" |
1539 | - return |
1540 | - fi |
1541 | - |
1542 | - modaliases=$(dpkg-query --show -f '${Modaliases}' $pkg) |
1543 | - if test -z "$modaliases"; then |
1544 | - echo "I: Package $pkg has no modaliases, skipping" |
1545 | - return |
1546 | - fi |
1547 | - |
1548 | - expected=$(mktemp --suffix=.expected) |
1549 | - echo "$modaliases" | \ |
1550 | - sed -e 's/\([^(]\+\)(\([^)]\+\))\(, \)\?/\1 \2\n/g' | \ |
1551 | - sed -e '/,/bx' -e 's/\([^ ]\+\) \([^ ]\+\)/alias \2 \1/' -e 'bend' -e ':x' -e 's/\([^ ]\+\) \([^ ]\+\), \(.*\)/alias \2 \1\n\1 \3/' -e 'P;D' -e ':end' | \ |
1552 | - grep -v '^$' | sort > $expected |
1553 | - |
1554 | - name=$(bash -c ". $dkms_conf; echo \$PACKAGE_NAME" 2>/dev/null) |
1555 | - version=$(bash -c ". $dkms_conf; echo \$PACKAGE_VERSION" 2>/dev/null) |
1556 | - for build in $(find /var/lib/dkms/$name/$version -mindepth 3 -maxdepth 3 -type d -name module); do |
1557 | - tmpfile=$(mktemp --suffix=.generated) |
1558 | - for module in $(find $build -type f -name \*.ko | sort); do |
1559 | - /sbin/modinfo ${module} | perl -nae "print \"alias \$1 $(basename --suffix=.ko ${module})\\n\" if /^alias:\\s+(.*)\$/"; |
1560 | - done | sort > $tmpfile; |
1561 | - diff -Nu "$expected" "$tmpfile"; |
1562 | - rm -f $tmpfile |
1563 | - done |
1564 | - |
1565 | - rm -f $expected |
1566 | -} |
1567 | - |
1568 | -for pkg in $(awk '/^Package:/ { print $2 }' debian/control); do |
1569 | - # package might be arch: restriction or udeb etc. |
1570 | - if ! apt-cache show $pkg >/dev/null 2>&1; then |
1571 | - echo "I: Skipping unavailable package $pkg" |
1572 | - continue |
1573 | - fi |
1574 | - run_pkg $pkg |
1575 | -done |
1576 | diff --git a/debian/tests/control b/debian/tests/control |
1577 | index 1dd23c0..a88cf5e 100644 |
1578 | --- a/debian/tests/control |
1579 | +++ b/debian/tests/control |
1580 | @@ -3,11 +3,5 @@ Restrictions: |
1581 | needs-root, |
1582 | allow-stderr, |
1583 | Depends: |
1584 | - backport-iwlwifi-dkms, |
1585 | - linux-headers-686-pae | linux-headers-amd64 | linux-headers-generic | linux-headers, |
1586 | - |
1587 | -Tests: check-modaliases |
1588 | -Depends: |
1589 | - backport-iwlwifi-dkms, |
1590 | - kmod, |
1591 | + gcc, |
1592 | linux-headers-686-pae | linux-headers-amd64 | linux-headers-generic | linux-headers, |
1593 | diff --git a/debian/tests/dkms-autopkgtest b/debian/tests/dkms-autopkgtest |
1594 | index c6b702b..f766e18 100755 |
1595 | --- a/debian/tests/dkms-autopkgtest |
1596 | +++ b/debian/tests/dkms-autopkgtest |
1597 | @@ -10,11 +10,11 @@ run_pkg() { |
1598 | echo "I: Installing binary package $pkg" |
1599 | export DEBIAN_FRONTEND=noninteractive |
1600 | RC=0 |
1601 | - apt-get install -yq $pkg </dev/null || RC=$? |
1602 | + (set +e; apt-get install -yq $pkg </dev/null) || RC=$? |
1603 | |
1604 | # collect build logs as artifacts |
1605 | if [ -d /var/lib/dkms ]; then |
1606 | - (cd /var/lib/dkms; find -name "make.log" -print0 | xargs -0 tar c) > "$ADT_ARTIFACTS/$pkg-make-logs.tar" |
1607 | + (cd /var/lib/dkms; find -name "make.log" -print0 | xargs -0 tar c) > "$AUTOPKGTEST_ARTIFACTS/$pkg-make-logs.tar" |
1608 | fi |
1609 | |
1610 | if [ "$RC" -ne 0 ]; then |
1611 | @@ -29,6 +29,7 @@ run_pkg() { |
1612 | return |
1613 | fi |
1614 | dkms_pkg=$(bash -c ". $dkms_conf; echo \$PACKAGE_NAME" 2>/dev/null) |
1615 | + dkms_version=$(bash -c ". $dkms_conf; echo \$PACKAGE_VERSION" 2>/dev/null) |
1616 | |
1617 | echo "I: Testing if $dkms_pkg modules are correctly installed" |
1618 | dkmsstatus="$(dkms status $dkms_pkg)" |
1619 | @@ -43,6 +44,32 @@ run_pkg() { |
1620 | exit 1 |
1621 | fi |
1622 | |
1623 | + modaliases=$(dpkg-query --show -f '${Modaliases}' $pkg) |
1624 | + if test -n "$modaliases"; then |
1625 | + echo "I: Checking modaliases in debian/control ..." |
1626 | + |
1627 | + modaliases_dpkg=$AUTOPKGTEST_ARTIFACTS/$pkg.modaliases.dpkg |
1628 | + echo "$modaliases" | \ |
1629 | + sed -e 's/\([^(]\+\)(\([^)]\+\))\(, \)\?/\1 \2\n/g' | \ |
1630 | + sed -e '/,/bx' -e 's/\([^ ]\+\) \([^ ]\+\)/alias \2 \1/' \ |
1631 | + -e 'bend' -e ':x' -e 's/\([^ ]\+\) \([^ ]\+\), \(.*\)/alias \2 \1\n\1 \3/' -e 'P;D' -e ':end' | \ |
1632 | + grep -v '^$' | \ |
1633 | + sort > "$modaliases_dpkg" |
1634 | + |
1635 | + diff -Nu debian/$pkg.modaliases "$modaliases_dpkg"; |
1636 | + fi |
1637 | + |
1638 | + modaliases_modinfo=$AUTOPKGTEST_ARTIFACTS/$pkg.modaliases.modinfo |
1639 | + for build in $(find /var/lib/dkms/$dkms_pkg/$dkms_version -mindepth 3 -maxdepth 3 -type d -name module); do |
1640 | + echo "I: Checking modaliases for $build ..." |
1641 | + |
1642 | + for module in $(find $build -type f -name \*.ko | sort); do |
1643 | + /sbin/modinfo ${module} | perl -nae "print \"alias \$1 $(basename --suffix=.ko ${module})\\n\" if /^alias:\\s+(.*)\$/"; |
1644 | + done | sort > "$modaliases_modinfo"; |
1645 | + |
1646 | + diff -Nu debian/$pkg.modaliases "$modaliases_modinfo"; |
1647 | + done |
1648 | + |
1649 | # skip modprobing for now; this fails too often (needs particular |
1650 | # hardware/firmware/etc) |
1651 | # for mod in $(awk -F '"' '/^BUILT_MODULE_NAME/ {print $2}' $dkms_conf); do |
1652 | @@ -56,9 +83,6 @@ run_pkg() { |
1653 | # done |
1654 | } |
1655 | |
1656 | -# Try and remove dkms to spot packages which miss a dkms dependency |
1657 | -dpkg --remove dkms || true |
1658 | - |
1659 | for pkg in $(awk '/^Package:/ { print $2 }' debian/control); do |
1660 | # package might be arch: restriction or udeb etc. |
1661 | if ! apt-cache show $pkg >/dev/null 2>&1; then |
1662 | @@ -67,3 +91,6 @@ for pkg in $(awk '/^Package:/ { print $2 }' debian/control); do |
1663 | fi |
1664 | run_pkg $pkg |
1665 | done |
1666 | + |
1667 | +# Try and remove dkms to spot packages which miss a dkms dependency |
1668 | +dpkg --remove dkms || true |
1669 | diff --git a/drivers/net/wireless/intel/iwlwifi/Kconfig b/drivers/net/wireless/intel/iwlwifi/Kconfig |
1670 | index 102a67a..ebf51fe 100644 |
1671 | --- a/drivers/net/wireless/intel/iwlwifi/Kconfig |
1672 | +++ b/drivers/net/wireless/intel/iwlwifi/Kconfig |
1673 | @@ -2,7 +2,7 @@ |
1674 | config IWLWIFI |
1675 | tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) " |
1676 | depends on m |
1677 | - depends on PCI && HAS_IOMEM && CFG80211 |
1678 | + depends on ((PCI && HAS_IOMEM) || VIRTIO) && CFG80211 |
1679 | depends on FW_LOADER |
1680 | ---help--- |
1681 | Select to build the driver supporting the: |
1682 | diff --git a/drivers/net/wireless/intel/iwlwifi/Kconfig.noupstream b/drivers/net/wireless/intel/iwlwifi/Kconfig.noupstream |
1683 | index 434c115..5413dbf 100644 |
1684 | --- a/drivers/net/wireless/intel/iwlwifi/Kconfig.noupstream |
1685 | +++ b/drivers/net/wireless/intel/iwlwifi/Kconfig.noupstream |
1686 | @@ -74,6 +74,19 @@ config IWLMVM_VENDOR_CMDS |
1687 | This option mostly exists for non-upstream tagging, so best |
1688 | leave it set to Y. |
1689 | |
1690 | +config IWLMVM_VENDOR_TCM_EVENTS |
1691 | + bool "enable TCM vendor events" |
1692 | + depends on IWLMVM_VENDOR_CMDS |
1693 | + default y |
1694 | + help |
1695 | + This option enables vendor TCM events to userspace that can |
1696 | + be used to adjust certain parameters depending on the |
1697 | + traffic conditions. These events can become rather noisy |
1698 | + with standard wpa_supplicant, since it prints out 3 debug |
1699 | + messages every time the event is received (as an unknown |
1700 | + event). When used with standard wpa_supplicant, it is |
1701 | + recommended to disable this option. |
1702 | + |
1703 | config IWLMVM_TDLS_PEER_CACHE |
1704 | bool "enable TDLS peer caching and traffic monitoring" |
1705 | depends on IWLMVM_VENDOR_CMDS |
1706 | diff --git a/drivers/net/wireless/intel/iwlwifi/Makefile b/drivers/net/wireless/intel/iwlwifi/Makefile |
1707 | index 5d56d23..d92641c 100644 |
1708 | --- a/drivers/net/wireless/intel/iwlwifi/Makefile |
1709 | +++ b/drivers/net/wireless/intel/iwlwifi/Makefile |
1710 | @@ -9,22 +9,26 @@ iwlwifi-objs += iwl-phy-db.o iwl-nvm-parse.o |
1711 | iwlwifi-objs += iwl-dbg-tlv.o |
1712 | iwlwifi-objs += iwl-trans.o |
1713 | |
1714 | -iwlwifi-objs += fw/notif-wait.o |
1715 | -iwlwifi-$(CPTCFG_IWLMVM) += fw/paging.o fw/smem.o fw/init.o fw/dbg.o |
1716 | +iwlwifi-objs += fw/img.o fw/notif-wait.o |
1717 | +iwlwifi-objs += fw/dbg.o |
1718 | +iwlwifi-$(CPTCFG_IWLMVM) += fw/paging.o fw/smem.o fw/init.o |
1719 | iwlwifi-$(CPTCFG_IWLXVT) += fw/init.o |
1720 | iwlwifi-$(CPTCFG_IWLWIFI_DEBUGFS) += fw/debugfs.o |
1721 | |
1722 | iwlwifi-$(CONFIG_ACPI) += fw/acpi.o |
1723 | |
1724 | # Bus |
1725 | -iwlwifi-objs += pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o |
1726 | -iwlwifi-objs += pcie/ctxt-info.o pcie/ctxt-info-gen3.o pcie/trans-gen2.o pcie/tx-gen2.o |
1727 | +iwlwifi-$(CONFIG_PCI) += pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o |
1728 | +iwlwifi-$(CONFIG_PCI) += pcie/ctxt-info.o pcie/ctxt-info-gen3.o pcie/trans-gen2.o pcie/tx-gen2.o |
1729 | + |
1730 | iwlwifi-$(CPTCFG_IWLMVM) += cfg/7000.o cfg/8000.o |
1731 | iwlwifi-$(CPTCFG_IWLMVM) += cfg/9000.o cfg/22000.o |
1732 | |
1733 | iwlwifi-$(CPTCFG_IWLWIFI_SUPPORT_DEBUG_OVERRIDES) += iwl-dbg-cfg.o |
1734 | |
1735 | + |
1736 | iwlwifi-objs += $(iwlwifi-m) |
1737 | +iwlwifi-objs += $(iwlwifi-y) |
1738 | |
1739 | iwlwifi-$(CPTCFG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o |
1740 | iwlwifi-$(CPTCFG_IWLWIFI_DEVICE_TESTMODE) += iwl-tm-gnl.o iwl-dnt-cfg.o iwl-dnt-dispatch.o |
1741 | diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c |
1742 | index 74e0429..3790c0e 100644 |
1743 | --- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c |
1744 | +++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c |
1745 | @@ -57,7 +57,7 @@ |
1746 | #include "iwl-prph.h" |
1747 | |
1748 | /* Highest firmware API version supported */ |
1749 | -#define IWL_22000_UCODE_API_MAX 52 |
1750 | +#define IWL_22000_UCODE_API_MAX 54 |
1751 | |
1752 | /* Lowest firmware API version supported */ |
1753 | #define IWL_22000_UCODE_API_MIN 39 |
1754 | @@ -76,10 +76,8 @@ |
1755 | #define IWL_22000_JF_FW_PRE "iwlwifi-Qu-a0-jf-b0-" |
1756 | #define IWL_22000_HR_FW_PRE "iwlwifi-Qu-a0-hr-a0-" |
1757 | #define IWL_22000_HR_CDB_FW_PRE "iwlwifi-QuIcp-z0-hrcdb-a0-" |
1758 | -#define IWL_22000_HR_A_F0_FW_PRE "iwlwifi-QuQnj-f0-hr-a0-" |
1759 | #define IWL_22000_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0-" |
1760 | #define IWL_22000_HR_B_FW_PRE "iwlwifi-QuQnj-b0-hr-b0-" |
1761 | -#define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-" |
1762 | #define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0-" |
1763 | #define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-" |
1764 | #define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0-" |
1765 | @@ -93,19 +91,16 @@ |
1766 | #define IWL_22000_SO_A_GF_A_FW_PRE "iwlwifi-so-a0-gf-a0-" |
1767 | #define IWL_22000_TY_A_GF_A_FW_PRE "iwlwifi-ty-a0-gf-a0-" |
1768 | #define IWL_22000_SO_A_GF4_A_FW_PRE "iwlwifi-so-a0-gf4-a0-" |
1769 | +#define IWL_22000_SOSNJ_A_GF4_A_FW_PRE "iwlwifi-SoSnj-a0-gf4-a0-" |
1770 | |
1771 | #define IWL_22000_HR_MODULE_FIRMWARE(api) \ |
1772 | IWL_22000_HR_FW_PRE __stringify(api) ".ucode" |
1773 | #define IWL_22000_JF_MODULE_FIRMWARE(api) \ |
1774 | IWL_22000_JF_FW_PRE __stringify(api) ".ucode" |
1775 | -#define IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(api) \ |
1776 | - IWL_22000_HR_A_F0_FW_PRE __stringify(api) ".ucode" |
1777 | #define IWL_22000_QU_B_HR_B_MODULE_FIRMWARE(api) \ |
1778 | IWL_22000_QU_B_HR_B_FW_PRE __stringify(api) ".ucode" |
1779 | #define IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(api) \ |
1780 | IWL_22000_HR_B_FW_PRE __stringify(api) ".ucode" |
1781 | -#define IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(api) \ |
1782 | - IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode" |
1783 | #define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \ |
1784 | IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode" |
1785 | #define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \ |
1786 | @@ -139,7 +134,7 @@ static const struct iwl_base_params iwl_22000_base_params = { |
1787 | .pcie_l1_allowed = true, |
1788 | }; |
1789 | |
1790 | -static const struct iwl_base_params iwl_22560_base_params = { |
1791 | +static const struct iwl_base_params iwl_ax210_base_params = { |
1792 | .eeprom_size = OTP_LOW_IMAGE_SIZE_32K, |
1793 | .num_of_queues = 512, |
1794 | .max_tfd_queue_size = 65536, |
1795 | @@ -200,7 +195,6 @@ static const struct iwl_ht_params iwl_22000_ht_params = { |
1796 | IWL_DEVICE_22000_COMMON, \ |
1797 | .trans.device_family = IWL_DEVICE_FAMILY_22000, \ |
1798 | .trans.base_params = &iwl_22000_base_params, \ |
1799 | - .trans.csr = &iwl_csr_v1, \ |
1800 | .gp2_reg_addr = 0xa02c68, \ |
1801 | .mon_dram_regs = { \ |
1802 | .write_ptr = { \ |
1803 | @@ -213,28 +207,11 @@ static const struct iwl_ht_params iwl_22000_ht_params = { |
1804 | }, \ |
1805 | } |
1806 | |
1807 | -#define IWL_DEVICE_22560 \ |
1808 | - IWL_DEVICE_22000_COMMON, \ |
1809 | - .trans.device_family = IWL_DEVICE_FAMILY_22560, \ |
1810 | - .trans.base_params = &iwl_22560_base_params, \ |
1811 | - .trans.csr = &iwl_csr_v2, \ |
1812 | - .mon_dram_regs = { \ |
1813 | - .write_ptr = { \ |
1814 | - .addr = MON_BUFF_WRPTR_VER2, \ |
1815 | - .mask = 0xffffffff, \ |
1816 | - }, \ |
1817 | - .cycle_cnt = { \ |
1818 | - .addr = MON_BUFF_CYCLE_CNT_VER2, \ |
1819 | - .mask = 0xffffffff, \ |
1820 | - }, \ |
1821 | - } |
1822 | - |
1823 | #define IWL_DEVICE_AX210 \ |
1824 | IWL_DEVICE_22000_COMMON, \ |
1825 | .trans.umac_prph_offset = 0x300000, \ |
1826 | .trans.device_family = IWL_DEVICE_FAMILY_AX210, \ |
1827 | - .trans.base_params = &iwl_22560_base_params, \ |
1828 | - .trans.csr = &iwl_csr_v1, \ |
1829 | + .trans.base_params = &iwl_ax210_base_params, \ |
1830 | .min_txq_size = 128, \ |
1831 | .gp2_reg_addr = 0xd02c68, \ |
1832 | .min_256_ba_txq_size = 512, \ |
1833 | @@ -253,65 +230,68 @@ static const struct iwl_ht_params iwl_22000_ht_params = { |
1834 | }, \ |
1835 | } |
1836 | |
1837 | -const struct iwl_cfg iwl22000_2ac_cfg_hr = { |
1838 | - .name = "Intel(R) Dual Band Wireless AC 22000", |
1839 | - .fw_name_pre = IWL_22000_HR_FW_PRE, |
1840 | - IWL_DEVICE_22500, |
1841 | +const struct iwl_cfg_trans_params iwl_qu_trans_cfg = { |
1842 | + .mq_rx_supported = true, |
1843 | + .use_tfh = true, |
1844 | + .rf_id = true, |
1845 | + .gen2 = true, |
1846 | + .device_family = IWL_DEVICE_FAMILY_22000, |
1847 | + .base_params = &iwl_22000_base_params, |
1848 | + .integrated = true, |
1849 | + .xtal_latency = 5000, |
1850 | }; |
1851 | |
1852 | -const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb = { |
1853 | - .name = "Intel(R) Dual Band Wireless AC 22000", |
1854 | - .fw_name_pre = IWL_22000_HR_CDB_FW_PRE, |
1855 | - IWL_DEVICE_22500, |
1856 | - .cdb = true, |
1857 | +const struct iwl_cfg_trans_params iwl_qnj_trans_cfg = { |
1858 | + .mq_rx_supported = true, |
1859 | + .use_tfh = true, |
1860 | + .rf_id = true, |
1861 | + .gen2 = true, |
1862 | + .device_family = IWL_DEVICE_FAMILY_22000, |
1863 | + .base_params = &iwl_22000_base_params, |
1864 | }; |
1865 | |
1866 | -const struct iwl_cfg iwl22000_2ac_cfg_jf = { |
1867 | - .name = "Intel(R) Dual Band Wireless AC 22000", |
1868 | - .fw_name_pre = IWL_22000_JF_FW_PRE, |
1869 | - IWL_DEVICE_22500, |
1870 | +const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg = { |
1871 | + .mq_rx_supported = true, |
1872 | + .use_tfh = true, |
1873 | + .rf_id = true, |
1874 | + .gen2 = true, |
1875 | + .device_family = IWL_DEVICE_FAMILY_22000, |
1876 | + .base_params = &iwl_22000_base_params, |
1877 | + .integrated = true, |
1878 | + .xtal_latency = 12000, |
1879 | + .low_latency_xtal = true, |
1880 | }; |
1881 | |
1882 | -const struct iwl_cfg iwl_ax101_cfg_qu_hr = { |
1883 | - .name = "Intel(R) Wi-Fi 6 AX101", |
1884 | - .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, |
1885 | - IWL_DEVICE_22500, |
1886 | - /* |
1887 | - * This device doesn't support receiving BlockAck with a large bitmap |
1888 | - * so we need to restrict the size of transmitted aggregation to the |
1889 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1890 | - */ |
1891 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1892 | - .tx_with_siso_diversity = true, |
1893 | -}; |
1894 | +/* |
1895 | + * If the device doesn't support HE, no need to have that many buffers. |
1896 | + * 22000 devices can split multiple frames into a single RB, so fewer are |
1897 | + * needed; AX210 cannot (but use smaller RBs by default) - these sizes |
1898 | + * were picked according to 8 MSDUs inside 256 A-MSDUs in an A-MPDU, with |
1899 | + * additional overhead to account for processing time. |
1900 | + */ |
1901 | +#define IWL_NUM_RBDS_NON_HE 512 |
1902 | +#define IWL_NUM_RBDS_22000_HE 2048 |
1903 | +#define IWL_NUM_RBDS_AX210_HE 4096 |
1904 | |
1905 | -const struct iwl_cfg iwl_ax201_cfg_qu_hr = { |
1906 | - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
1907 | - .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, |
1908 | +/* |
1909 | + * All JF radio modules are part of the 9000 series, but the MAC part |
1910 | + * looks more like 22000. That's why this device is here, but called |
1911 | + * 9560 nevertheless. |
1912 | + */ |
1913 | +const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg = { |
1914 | + .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
1915 | IWL_DEVICE_22500, |
1916 | - /* |
1917 | - * This device doesn't support receiving BlockAck with a large bitmap |
1918 | - * so we need to restrict the size of transmitted aggregation to the |
1919 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1920 | - */ |
1921 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1922 | + .num_rbds = IWL_NUM_RBDS_NON_HE, |
1923 | }; |
1924 | |
1925 | -const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0 = { |
1926 | - .name = "Intel(R) Wi-Fi 6 AX101", |
1927 | - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, |
1928 | +const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg = { |
1929 | + .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, |
1930 | IWL_DEVICE_22500, |
1931 | - /* |
1932 | - * This device doesn't support receiving BlockAck with a large bitmap |
1933 | - * so we need to restrict the size of transmitted aggregation to the |
1934 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1935 | - */ |
1936 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1937 | + .num_rbds = IWL_NUM_RBDS_NON_HE, |
1938 | }; |
1939 | |
1940 | -const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { |
1941 | - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
1942 | - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, |
1943 | +const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = { |
1944 | + .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
1945 | IWL_DEVICE_22500, |
1946 | /* |
1947 | * This device doesn't support receiving BlockAck with a large bitmap |
1948 | @@ -319,11 +299,11 @@ const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { |
1949 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1950 | */ |
1951 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1952 | + .num_rbds = IWL_NUM_RBDS_NON_HE, |
1953 | }; |
1954 | |
1955 | -const struct iwl_cfg iwl_ax101_cfg_quz_hr = { |
1956 | - .name = "Intel(R) Wi-Fi 6 AX101", |
1957 | - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
1958 | +const struct iwl_cfg iwl9560_qnj_b0_jf_b0_cfg = { |
1959 | + .fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE, |
1960 | IWL_DEVICE_22500, |
1961 | /* |
1962 | * This device doesn't support receiving BlockAck with a large bitmap |
1963 | @@ -331,60 +311,29 @@ const struct iwl_cfg iwl_ax101_cfg_quz_hr = { |
1964 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1965 | */ |
1966 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1967 | + .num_rbds = IWL_NUM_RBDS_NON_HE, |
1968 | }; |
1969 | |
1970 | -const struct iwl_cfg iwl_ax201_cfg_quz_hr = { |
1971 | - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
1972 | - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
1973 | - IWL_DEVICE_22500, |
1974 | - /* |
1975 | - * This device doesn't support receiving BlockAck with a large bitmap |
1976 | - * so we need to restrict the size of transmitted aggregation to the |
1977 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1978 | - */ |
1979 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
1980 | +const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = { |
1981 | + .device_family = IWL_DEVICE_FAMILY_22000, |
1982 | + .base_params = &iwl_22000_base_params, |
1983 | + .mq_rx_supported = true, |
1984 | + .use_tfh = true, |
1985 | + .rf_id = true, |
1986 | + .gen2 = true, |
1987 | + .bisr_workaround = 1, |
1988 | }; |
1989 | |
1990 | -const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = { |
1991 | - .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", |
1992 | - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
1993 | - IWL_DEVICE_22500, |
1994 | - /* |
1995 | - * This device doesn't support receiving BlockAck with a large bitmap |
1996 | - * so we need to restrict the size of transmitted aggregation to the |
1997 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
1998 | - */ |
1999 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2000 | -}; |
2001 | +const char iwl_ax200_name[] = "Intel(R) Wi-Fi 6 AX200 160MHz"; |
2002 | |
2003 | -const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = { |
2004 | - .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", |
2005 | - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
2006 | - IWL_DEVICE_22500, |
2007 | - /* |
2008 | - * This device doesn't support receiving BlockAck with a large bitmap |
2009 | - * so we need to restrict the size of transmitted aggregation to the |
2010 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2011 | - */ |
2012 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2013 | -}; |
2014 | +const char iwl_ax200_killer_1650w_name[] = |
2015 | + "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)"; |
2016 | +const char iwl_ax200_killer_1650x_name[] = |
2017 | + "Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)"; |
2018 | |
2019 | -const struct iwl_cfg iwl_ax200_cfg_cc = { |
2020 | - .name = "Intel(R) Wi-Fi 6 AX200 160MHz", |
2021 | - .fw_name_pre = IWL_CC_A_FW_PRE, |
2022 | - IWL_DEVICE_22500, |
2023 | - /* |
2024 | - * This device doesn't support receiving BlockAck with a large bitmap |
2025 | - * so we need to restrict the size of transmitted aggregation to the |
2026 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2027 | - */ |
2028 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2029 | - .trans.bisr_workaround = 1, |
2030 | -}; |
2031 | - |
2032 | -const struct iwl_cfg killer1650x_2ax_cfg = { |
2033 | - .name = "Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)", |
2034 | - .fw_name_pre = IWL_CC_A_FW_PRE, |
2035 | +const struct iwl_cfg iwl_ax101_cfg_qu_hr = { |
2036 | + .name = "Intel(R) Wi-Fi 6 AX101", |
2037 | + .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, |
2038 | IWL_DEVICE_22500, |
2039 | /* |
2040 | * This device doesn't support receiving BlockAck with a large bitmap |
2041 | @@ -392,12 +341,13 @@ const struct iwl_cfg killer1650x_2ax_cfg = { |
2042 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2043 | */ |
2044 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2045 | - .trans.bisr_workaround = 1, |
2046 | + .tx_with_siso_diversity = true, |
2047 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2048 | }; |
2049 | |
2050 | -const struct iwl_cfg killer1650w_2ax_cfg = { |
2051 | - .name = "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)", |
2052 | - .fw_name_pre = IWL_CC_A_FW_PRE, |
2053 | +const struct iwl_cfg iwl_ax201_cfg_qu_hr = { |
2054 | + .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
2055 | + .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, |
2056 | IWL_DEVICE_22500, |
2057 | /* |
2058 | * This device doesn't support receiving BlockAck with a large bitmap |
2059 | @@ -405,65 +355,12 @@ const struct iwl_cfg killer1650w_2ax_cfg = { |
2060 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2061 | */ |
2062 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2063 | - .trans.bisr_workaround = 1, |
2064 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2065 | }; |
2066 | |
2067 | -/* |
2068 | - * All JF radio modules are part of the 9000 series, but the MAC part |
2069 | - * looks more like 22000. That's why this device is here, but called |
2070 | - * 9560 nevertheless. |
2071 | - */ |
2072 | -const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0 = { |
2073 | - .name = "Intel(R) Wireless-AC 9461", |
2074 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2075 | - IWL_DEVICE_22500, |
2076 | -}; |
2077 | - |
2078 | -const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0 = { |
2079 | - .name = "Intel(R) Wireless-AC 9462", |
2080 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2081 | - IWL_DEVICE_22500, |
2082 | -}; |
2083 | - |
2084 | -const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0 = { |
2085 | - .name = "Intel(R) Wireless-AC 9560", |
2086 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2087 | - IWL_DEVICE_22500, |
2088 | -}; |
2089 | - |
2090 | -const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0 = { |
2091 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2092 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2093 | - IWL_DEVICE_22500, |
2094 | -}; |
2095 | - |
2096 | -const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0 = { |
2097 | - .name = "Intel(R) Wireless-AC 9461", |
2098 | - .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, |
2099 | - IWL_DEVICE_22500, |
2100 | -}; |
2101 | - |
2102 | -const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0 = { |
2103 | - .name = "Intel(R) Wireless-AC 9462", |
2104 | - .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, |
2105 | - IWL_DEVICE_22500, |
2106 | -}; |
2107 | - |
2108 | -const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0 = { |
2109 | - .name = "Intel(R) Wireless-AC 9560", |
2110 | - .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, |
2111 | - IWL_DEVICE_22500, |
2112 | -}; |
2113 | - |
2114 | -const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0 = { |
2115 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2116 | - .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, |
2117 | - IWL_DEVICE_22500, |
2118 | -}; |
2119 | - |
2120 | -const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = { |
2121 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2122 | - .fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE, |
2123 | +const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0 = { |
2124 | + .name = "Intel(R) Wi-Fi 6 AX101", |
2125 | + .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, |
2126 | IWL_DEVICE_22500, |
2127 | /* |
2128 | * This device doesn't support receiving BlockAck with a large bitmap |
2129 | @@ -471,11 +368,12 @@ const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = { |
2130 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2131 | */ |
2132 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2133 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2134 | }; |
2135 | |
2136 | -const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc = { |
2137 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2138 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2139 | +const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { |
2140 | + .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
2141 | + .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, |
2142 | IWL_DEVICE_22500, |
2143 | /* |
2144 | * This device doesn't support receiving BlockAck with a large bitmap |
2145 | @@ -483,13 +381,12 @@ const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc = { |
2146 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2147 | */ |
2148 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2149 | - .integrated = true, |
2150 | - .soc_latency = 5000, |
2151 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2152 | }; |
2153 | |
2154 | -const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc = { |
2155 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2156 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2157 | +const struct iwl_cfg iwl_ax101_cfg_quz_hr = { |
2158 | + .name = "Intel(R) Wi-Fi 6 AX101", |
2159 | + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
2160 | IWL_DEVICE_22500, |
2161 | /* |
2162 | * This device doesn't support receiving BlockAck with a large bitmap |
2163 | @@ -497,55 +394,50 @@ const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc = { |
2164 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2165 | */ |
2166 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2167 | - .integrated = true, |
2168 | - .soc_latency = 5000, |
2169 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2170 | }; |
2171 | |
2172 | -const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc = { |
2173 | - .name = "Intel(R) Dual Band Wireless AC 9461", |
2174 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2175 | +const struct iwl_cfg iwl_ax201_cfg_quz_hr = { |
2176 | + .name = "Intel(R) Wi-Fi 6 AX201 160MHz", |
2177 | + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
2178 | IWL_DEVICE_22500, |
2179 | /* |
2180 | - * This device doesn't support receiving BlockAck with a large bitmap |
2181 | - * so we need to restrict the size of transmitted aggregation to the |
2182 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2183 | - */ |
2184 | + * This device doesn't support receiving BlockAck with a large bitmap |
2185 | + * so we need to restrict the size of transmitted aggregation to the |
2186 | + * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2187 | + */ |
2188 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2189 | - .integrated = true, |
2190 | - .soc_latency = 5000, |
2191 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2192 | }; |
2193 | |
2194 | -const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc = { |
2195 | - .name = "Intel(R) Dual Band Wireless AC 9462", |
2196 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2197 | +const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = { |
2198 | + .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", |
2199 | + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
2200 | IWL_DEVICE_22500, |
2201 | /* |
2202 | - * This device doesn't support receiving BlockAck with a large bitmap |
2203 | - * so we need to restrict the size of transmitted aggregation to the |
2204 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2205 | - */ |
2206 | + * This device doesn't support receiving BlockAck with a large bitmap |
2207 | + * so we need to restrict the size of transmitted aggregation to the |
2208 | + * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2209 | + */ |
2210 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2211 | - .integrated = true, |
2212 | - .soc_latency = 5000, |
2213 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2214 | }; |
2215 | |
2216 | -const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc = { |
2217 | - .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)", |
2218 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2219 | +const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = { |
2220 | + .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", |
2221 | + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, |
2222 | IWL_DEVICE_22500, |
2223 | /* |
2224 | - * This device doesn't support receiving BlockAck with a large bitmap |
2225 | - * so we need to restrict the size of transmitted aggregation to the |
2226 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2227 | - */ |
2228 | + * This device doesn't support receiving BlockAck with a large bitmap |
2229 | + * so we need to restrict the size of transmitted aggregation to the |
2230 | + * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2231 | + */ |
2232 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2233 | - .integrated = true, |
2234 | - .soc_latency = 5000, |
2235 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2236 | }; |
2237 | |
2238 | -const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc = { |
2239 | - .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", |
2240 | - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, |
2241 | +const struct iwl_cfg iwl_ax200_cfg_cc = { |
2242 | + .fw_name_pre = IWL_CC_A_FW_PRE, |
2243 | IWL_DEVICE_22500, |
2244 | /* |
2245 | * This device doesn't support receiving BlockAck with a large bitmap |
2246 | @@ -553,20 +445,7 @@ const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc = { |
2247 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2248 | */ |
2249 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2250 | - .integrated = true, |
2251 | - .soc_latency = 5000, |
2252 | -}; |
2253 | - |
2254 | -const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0 = { |
2255 | - .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", |
2256 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2257 | - IWL_DEVICE_22500, |
2258 | -}; |
2259 | - |
2260 | -const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0 = { |
2261 | - .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)", |
2262 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2263 | - IWL_DEVICE_22500, |
2264 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2265 | }; |
2266 | |
2267 | const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = { |
2268 | @@ -579,6 +458,7 @@ const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = { |
2269 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2270 | */ |
2271 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2272 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2273 | }; |
2274 | |
2275 | const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = { |
2276 | @@ -591,6 +471,7 @@ const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = { |
2277 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2278 | */ |
2279 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2280 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2281 | }; |
2282 | |
2283 | const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = { |
2284 | @@ -603,6 +484,7 @@ const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = { |
2285 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2286 | */ |
2287 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2288 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2289 | }; |
2290 | |
2291 | const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = { |
2292 | @@ -615,42 +497,7 @@ const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = { |
2293 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2294 | */ |
2295 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2296 | -}; |
2297 | - |
2298 | -const struct iwl_cfg iwl22000_2ax_cfg_jf = { |
2299 | - .name = "Intel(R) Dual Band Wireless AX 22000", |
2300 | - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, |
2301 | - IWL_DEVICE_22500, |
2302 | - /* |
2303 | - * This device doesn't support receiving BlockAck with a large bitmap |
2304 | - * so we need to restrict the size of transmitted aggregation to the |
2305 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2306 | - */ |
2307 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2308 | -}; |
2309 | - |
2310 | -const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0_f0 = { |
2311 | - .name = "Intel(R) Dual Band Wireless AX 22000", |
2312 | - .fw_name_pre = IWL_22000_HR_A_F0_FW_PRE, |
2313 | - IWL_DEVICE_22500, |
2314 | - /* |
2315 | - * This device doesn't support receiving BlockAck with a large bitmap |
2316 | - * so we need to restrict the size of transmitted aggregation to the |
2317 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2318 | - */ |
2319 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2320 | -}; |
2321 | - |
2322 | -const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0_f0 = { |
2323 | - .name = "Intel(R) Dual Band Wireless AX 22000", |
2324 | - .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, |
2325 | - IWL_DEVICE_22500, |
2326 | - /* |
2327 | - * This device doesn't support receiving BlockAck with a large bitmap |
2328 | - * so we need to restrict the size of transmitted aggregation to the |
2329 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2330 | - */ |
2331 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2332 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2333 | }; |
2334 | |
2335 | const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0 = { |
2336 | @@ -663,43 +510,21 @@ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0 = { |
2337 | * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2338 | */ |
2339 | .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2340 | -}; |
2341 | - |
2342 | -const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0 = { |
2343 | - .name = "Intel(R) Dual Band Wireless AX 22000", |
2344 | - .fw_name_pre = IWL_22000_HR_A0_FW_PRE, |
2345 | - IWL_DEVICE_22500, |
2346 | - /* |
2347 | - * This device doesn't support receiving BlockAck with a large bitmap |
2348 | - * so we need to restrict the size of transmitted aggregation to the |
2349 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2350 | - */ |
2351 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2352 | -}; |
2353 | - |
2354 | -const struct iwl_cfg iwl_ax201_cfg_qnj_b0_gftc_a0 = { |
2355 | - .name = "Intel(R) Wi-fi 6 AX201 GF TC", |
2356 | - .fw_name_pre = IWL_QNJ_B_GFTC_A_FW_PRE, |
2357 | - IWL_DEVICE_22500, |
2358 | - /* |
2359 | - * This device doesn't support receiving BlockAck with a large bitmap |
2360 | - * so we need to restrict the size of transmitted aggregation to the |
2361 | - * HT size; mac80211 would otherwise pick the HE max (256) by default. |
2362 | - */ |
2363 | - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, |
2364 | - .uhb_supported = true |
2365 | + .num_rbds = IWL_NUM_RBDS_22000_HE, |
2366 | }; |
2367 | |
2368 | const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0 = { |
2369 | .name = "Intel(R) Wireless-AC 9560 160MHz", |
2370 | .fw_name_pre = IWL_22000_SO_A_JF_B_FW_PRE, |
2371 | IWL_DEVICE_AX210, |
2372 | + .num_rbds = IWL_NUM_RBDS_NON_HE, |
2373 | }; |
2374 | |
2375 | const struct iwl_cfg iwlax210_2ax_cfg_so_hr_a0 = { |
2376 | .name = "Intel(R) Wi-Fi 7 AX210 160MHz", |
2377 | .fw_name_pre = IWL_22000_SO_A_HR_B_FW_PRE, |
2378 | IWL_DEVICE_AX210, |
2379 | + .num_rbds = IWL_NUM_RBDS_AX210_HE, |
2380 | }; |
2381 | |
2382 | const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { |
2383 | @@ -707,6 +532,7 @@ const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { |
2384 | .fw_name_pre = IWL_22000_SO_A_GF_A_FW_PRE, |
2385 | .uhb_supported = true, |
2386 | IWL_DEVICE_AX210, |
2387 | + .num_rbds = IWL_NUM_RBDS_AX210_HE, |
2388 | }; |
2389 | |
2390 | const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { |
2391 | @@ -714,19 +540,28 @@ const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { |
2392 | .fw_name_pre = IWL_22000_TY_A_GF_A_FW_PRE, |
2393 | .uhb_supported = true, |
2394 | IWL_DEVICE_AX210, |
2395 | + .num_rbds = IWL_NUM_RBDS_AX210_HE, |
2396 | }; |
2397 | |
2398 | const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0 = { |
2399 | .name = "Intel(R) Wi-Fi 7 AX411 160MHz", |
2400 | .fw_name_pre = IWL_22000_SO_A_GF4_A_FW_PRE, |
2401 | + .uhb_supported = true, |
2402 | + IWL_DEVICE_AX210, |
2403 | + .num_rbds = IWL_NUM_RBDS_AX210_HE, |
2404 | +}; |
2405 | + |
2406 | +const struct iwl_cfg iwlax411_2ax_cfg_sosnj_gf4_a0 = { |
2407 | + .name = "Intel(R) Wi-Fi 7 AX411 160MHz", |
2408 | + .fw_name_pre = IWL_22000_SOSNJ_A_GF4_A_FW_PRE, |
2409 | + .uhb_supported = true, |
2410 | IWL_DEVICE_AX210, |
2411 | + .num_rbds = IWL_NUM_RBDS_AX210_HE, |
2412 | }; |
2413 | |
2414 | MODULE_FIRMWARE(IWL_22000_HR_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2415 | MODULE_FIRMWARE(IWL_22000_JF_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2416 | -MODULE_FIRMWARE(IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2417 | MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2418 | -MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2419 | MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2420 | MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2421 | MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); |
2422 | diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c |
2423 | index deb520a..b72993e 100644 |
2424 | --- a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c |
2425 | +++ b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c |
2426 | @@ -154,8 +154,7 @@ static const struct iwl_ht_params iwl7000_ht_params = { |
2427 | .nvm_hw_section_num = 0, \ |
2428 | .non_shared_ant = ANT_A, \ |
2429 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, \ |
2430 | - .dccm_offset = IWL7000_DCCM_OFFSET, \ |
2431 | - .trans.csr = &iwl_csr_v1 |
2432 | + .dccm_offset = IWL7000_DCCM_OFFSET |
2433 | |
2434 | #define IWL_DEVICE_7000 \ |
2435 | IWL_DEVICE_7000_COMMON, \ |
2436 | diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c |
2437 | index b3cc477..280d84f 100644 |
2438 | --- a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c |
2439 | +++ b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c |
2440 | @@ -151,8 +151,7 @@ static const struct iwl_tt_params iwl8000_tt_params = { |
2441 | .apmg_not_supported = true, \ |
2442 | .nvm_type = IWL_NVM_EXT, \ |
2443 | .dbgc_supported = true, \ |
2444 | - .min_umac_error_event_table = 0x800000, \ |
2445 | - .trans.csr = &iwl_csr_v1 |
2446 | + .min_umac_error_event_table = 0x800000 |
2447 | |
2448 | #define IWL_DEVICE_8000 \ |
2449 | IWL_DEVICE_8000_COMMON, \ |
2450 | diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c |
2451 | index e9155b9..f84b8e5 100644 |
2452 | --- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c |
2453 | +++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c |
2454 | @@ -123,8 +123,6 @@ static const struct iwl_tt_params iwl9000_tt_params = { |
2455 | #define IWL_DEVICE_9000 \ |
2456 | .ucode_api_max = IWL9000_UCODE_API_MAX, \ |
2457 | .ucode_api_min = IWL9000_UCODE_API_MIN, \ |
2458 | - .trans.device_family = IWL_DEVICE_FAMILY_9000, \ |
2459 | - .trans.base_params = &iwl9000_base_params, \ |
2460 | .led_mode = IWL_LED_RF_STATE, \ |
2461 | .nvm_hw_section_num = 10, \ |
2462 | .non_shared_ant = ANT_B, \ |
2463 | @@ -137,14 +135,12 @@ static const struct iwl_tt_params iwl9000_tt_params = { |
2464 | .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ |
2465 | .thermal_params = &iwl9000_tt_params, \ |
2466 | .apmg_not_supported = true, \ |
2467 | - .trans.mq_rx_supported = true, \ |
2468 | + .num_rbds = 512, \ |
2469 | .vht_mu_mimo_supported = true, \ |
2470 | .mac_addr_from_csr = true, \ |
2471 | - .trans.rf_id = true, \ |
2472 | .nvm_type = IWL_NVM_EXT, \ |
2473 | .dbgc_supported = true, \ |
2474 | .min_umac_error_event_table = 0x800000, \ |
2475 | - .trans.csr = &iwl_csr_v1, \ |
2476 | .d3_debug_data_base_addr = 0x401000, \ |
2477 | .d3_debug_data_length = 92 * 1024, \ |
2478 | .ht_params = &iwl9000_ht_params, \ |
2479 | @@ -171,172 +167,61 @@ static const struct iwl_tt_params iwl9000_tt_params = { |
2480 | }, \ |
2481 | } |
2482 | |
2483 | - |
2484 | -const struct iwl_cfg iwl9160_2ac_cfg = { |
2485 | - .name = "Intel(R) Dual Band Wireless AC 9160", |
2486 | - .fw_name_pre = IWL9260_FW_PRE, |
2487 | - IWL_DEVICE_9000, |
2488 | -}; |
2489 | - |
2490 | -const struct iwl_cfg iwl9260_2ac_cfg = { |
2491 | - .name = "Intel(R) Dual Band Wireless AC 9260", |
2492 | - .fw_name_pre = IWL9260_FW_PRE, |
2493 | - IWL_DEVICE_9000, |
2494 | -}; |
2495 | - |
2496 | -const struct iwl_cfg iwl9260_2ac_160_cfg = { |
2497 | - .name = "Intel(R) Wireless-AC 9260 160MHz", |
2498 | - .fw_name_pre = IWL9260_FW_PRE, |
2499 | - IWL_DEVICE_9000, |
2500 | -}; |
2501 | - |
2502 | -const struct iwl_cfg iwl9260_killer_2ac_cfg = { |
2503 | - .name = "Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW)", |
2504 | - .fw_name_pre = IWL9260_FW_PRE, |
2505 | - IWL_DEVICE_9000, |
2506 | -}; |
2507 | - |
2508 | -const struct iwl_cfg iwl9270_2ac_cfg = { |
2509 | - .name = "Intel(R) Dual Band Wireless AC 9270", |
2510 | - .fw_name_pre = IWL9260_FW_PRE, |
2511 | - IWL_DEVICE_9000, |
2512 | -}; |
2513 | - |
2514 | -const struct iwl_cfg iwl9460_2ac_cfg = { |
2515 | - .name = "Intel(R) Dual Band Wireless AC 9460", |
2516 | - .fw_name_pre = IWL9260_FW_PRE, |
2517 | - IWL_DEVICE_9000, |
2518 | +const struct iwl_cfg_trans_params iwl9000_trans_cfg = { |
2519 | + .device_family = IWL_DEVICE_FAMILY_9000, |
2520 | + .base_params = &iwl9000_base_params, |
2521 | + .mq_rx_supported = true, |
2522 | + .rf_id = true, |
2523 | }; |
2524 | |
2525 | -const struct iwl_cfg iwl9460_2ac_cfg_soc = { |
2526 | - .name = "Intel(R) Dual Band Wireless AC 9460", |
2527 | - .fw_name_pre = IWL9000_FW_PRE, |
2528 | - IWL_DEVICE_9000, |
2529 | - .integrated = true, |
2530 | - .soc_latency = 5000, |
2531 | -}; |
2532 | - |
2533 | -const struct iwl_cfg iwl9461_2ac_cfg_soc = { |
2534 | - .name = "Intel(R) Dual Band Wireless AC 9461", |
2535 | - .fw_name_pre = IWL9000_FW_PRE, |
2536 | - IWL_DEVICE_9000, |
2537 | +const struct iwl_cfg_trans_params iwl9560_trans_cfg = { |
2538 | + .device_family = IWL_DEVICE_FAMILY_9000, |
2539 | + .base_params = &iwl9000_base_params, |
2540 | + .mq_rx_supported = true, |
2541 | + .rf_id = true, |
2542 | .integrated = true, |
2543 | - .soc_latency = 5000, |
2544 | + .xtal_latency = 5000, |
2545 | }; |
2546 | |
2547 | -const struct iwl_cfg iwl9462_2ac_cfg_soc = { |
2548 | - .name = "Intel(R) Dual Band Wireless AC 9462", |
2549 | - .fw_name_pre = IWL9000_FW_PRE, |
2550 | - IWL_DEVICE_9000, |
2551 | +const struct iwl_cfg_trans_params iwl9560_shared_clk_trans_cfg = { |
2552 | + .device_family = IWL_DEVICE_FAMILY_9000, |
2553 | + .base_params = &iwl9000_base_params, |
2554 | + .mq_rx_supported = true, |
2555 | + .rf_id = true, |
2556 | .integrated = true, |
2557 | - .soc_latency = 5000, |
2558 | + .xtal_latency = 5000, |
2559 | + .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2560 | }; |
2561 | |
2562 | -const struct iwl_cfg iwl9560_2ac_cfg = { |
2563 | - .name = "Intel(R) Dual Band Wireless AC 9560", |
2564 | - .fw_name_pre = IWL9260_FW_PRE, |
2565 | - IWL_DEVICE_9000, |
2566 | -}; |
2567 | +const char iwl9162_name[] = "Intel(R) Wireless-AC 9162"; |
2568 | +const char iwl9260_name[] = "Intel(R) Wireless-AC 9260"; |
2569 | +const char iwl9260_1_name[] = "Intel(R) Wireless-AC 9260-1"; |
2570 | +const char iwl9270_name[] = "Intel(R) Wireless-AC 9270"; |
2571 | +const char iwl9461_name[] = "Intel(R) Wireless-AC 9461"; |
2572 | +const char iwl9462_name[] = "Intel(R) Wireless-AC 9462"; |
2573 | +const char iwl9560_name[] = "Intel(R) Wireless-AC 9560"; |
2574 | +const char iwl9162_160_name[] = "Intel(R) Wireless-AC 9162 160MHz"; |
2575 | +const char iwl9260_160_name[] = "Intel(R) Wireless-AC 9260 160MHz"; |
2576 | +const char iwl9270_160_name[] = "Intel(R) Wireless-AC 9270 160MHz"; |
2577 | +const char iwl9461_160_name[] = "Intel(R) Wireless-AC 9461 160MHz"; |
2578 | +const char iwl9462_160_name[] = "Intel(R) Wireless-AC 9462 160MHz"; |
2579 | +const char iwl9560_160_name[] = "Intel(R) Wireless-AC 9560 160MHz"; |
2580 | + |
2581 | +const char iwl9260_killer_1550_name[] = |
2582 | + "Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW)"; |
2583 | +const char iwl9560_killer_1550i_name[] = |
2584 | + "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)"; |
2585 | +const char iwl9560_killer_1550s_name[] = |
2586 | + "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)"; |
2587 | |
2588 | -const struct iwl_cfg iwl9560_2ac_160_cfg = { |
2589 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2590 | +const struct iwl_cfg iwl9260_2ac_cfg = { |
2591 | .fw_name_pre = IWL9260_FW_PRE, |
2592 | IWL_DEVICE_9000, |
2593 | }; |
2594 | |
2595 | const struct iwl_cfg iwl9560_2ac_cfg_soc = { |
2596 | - .name = "Intel(R) Dual Band Wireless AC 9560", |
2597 | - .fw_name_pre = IWL9000_FW_PRE, |
2598 | - IWL_DEVICE_9000, |
2599 | - .integrated = true, |
2600 | - .soc_latency = 5000, |
2601 | -}; |
2602 | - |
2603 | -const struct iwl_cfg iwl9560_2ac_160_cfg_soc = { |
2604 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2605 | - .fw_name_pre = IWL9000_FW_PRE, |
2606 | - IWL_DEVICE_9000, |
2607 | - .integrated = true, |
2608 | - .soc_latency = 5000, |
2609 | -}; |
2610 | - |
2611 | -const struct iwl_cfg iwl9560_killer_2ac_cfg_soc = { |
2612 | - .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", |
2613 | .fw_name_pre = IWL9000_FW_PRE, |
2614 | IWL_DEVICE_9000, |
2615 | - .integrated = true, |
2616 | - .soc_latency = 5000, |
2617 | -}; |
2618 | - |
2619 | -const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc = { |
2620 | - .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)", |
2621 | - .fw_name_pre = IWL9000_FW_PRE, |
2622 | - IWL_DEVICE_9000, |
2623 | - .integrated = true, |
2624 | - .soc_latency = 5000, |
2625 | -}; |
2626 | - |
2627 | -const struct iwl_cfg iwl9460_2ac_cfg_shared_clk = { |
2628 | - .name = "Intel(R) Dual Band Wireless AC 9460", |
2629 | - .fw_name_pre = IWL9000_FW_PRE, |
2630 | - IWL_DEVICE_9000, |
2631 | - .integrated = true, |
2632 | - .soc_latency = 5000, |
2633 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2634 | -}; |
2635 | - |
2636 | -const struct iwl_cfg iwl9461_2ac_cfg_shared_clk = { |
2637 | - .name = "Intel(R) Dual Band Wireless AC 9461", |
2638 | - .fw_name_pre = IWL9000_FW_PRE, |
2639 | - IWL_DEVICE_9000, |
2640 | - .integrated = true, |
2641 | - .soc_latency = 5000, |
2642 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2643 | -}; |
2644 | - |
2645 | -const struct iwl_cfg iwl9462_2ac_cfg_shared_clk = { |
2646 | - .name = "Intel(R) Dual Band Wireless AC 9462", |
2647 | - .fw_name_pre = IWL9000_FW_PRE, |
2648 | - IWL_DEVICE_9000, |
2649 | - .integrated = true, |
2650 | - .soc_latency = 5000, |
2651 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2652 | -}; |
2653 | - |
2654 | -const struct iwl_cfg iwl9560_2ac_cfg_shared_clk = { |
2655 | - .name = "Intel(R) Dual Band Wireless AC 9560", |
2656 | - .fw_name_pre = IWL9000_FW_PRE, |
2657 | - IWL_DEVICE_9000, |
2658 | - .integrated = true, |
2659 | - .soc_latency = 5000, |
2660 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2661 | -}; |
2662 | - |
2663 | -const struct iwl_cfg iwl9560_2ac_160_cfg_shared_clk = { |
2664 | - .name = "Intel(R) Wireless-AC 9560 160MHz", |
2665 | - .fw_name_pre = IWL9000_FW_PRE, |
2666 | - IWL_DEVICE_9000, |
2667 | - .integrated = true, |
2668 | - .soc_latency = 5000, |
2669 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2670 | -}; |
2671 | - |
2672 | -const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk = { |
2673 | - .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", |
2674 | - .fw_name_pre = IWL9000_FW_PRE, |
2675 | - IWL_DEVICE_9000, |
2676 | - .integrated = true, |
2677 | - .soc_latency = 5000, |
2678 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2679 | -}; |
2680 | - |
2681 | -const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk = { |
2682 | - .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)", |
2683 | - .fw_name_pre = IWL9000_FW_PRE, |
2684 | - IWL_DEVICE_9000, |
2685 | - .integrated = true, |
2686 | - .soc_latency = 5000, |
2687 | - .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK |
2688 | }; |
2689 | |
2690 | MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); |
2691 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c |
2692 | index 7573af2..bdc382a 100644 |
2693 | --- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c |
2694 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c |
2695 | @@ -61,6 +61,7 @@ |
2696 | #include "iwl-drv.h" |
2697 | #include "iwl-debug.h" |
2698 | #include "acpi.h" |
2699 | +#include "fw/runtime.h" |
2700 | |
2701 | void *iwl_acpi_get_object(struct device *dev, acpi_string method) |
2702 | { |
2703 | @@ -162,12 +163,13 @@ int iwl_acpi_get_mcc(struct device *dev, char *mcc) |
2704 | |
2705 | wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE, |
2706 | &tbl_rev); |
2707 | - if (IS_ERR(wifi_pkg) || tbl_rev != 0) { |
2708 | + if (IS_ERR(wifi_pkg)) { |
2709 | ret = PTR_ERR(wifi_pkg); |
2710 | goto out_free; |
2711 | } |
2712 | |
2713 | - if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER) { |
2714 | + if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER || |
2715 | + tbl_rev != 0) { |
2716 | ret = -EINVAL; |
2717 | goto out_free; |
2718 | } |
2719 | @@ -224,12 +226,13 @@ int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk) |
2720 | |
2721 | wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_ECKV_WIFI_DATA_SIZE, |
2722 | &tbl_rev); |
2723 | - if (IS_ERR(wifi_pkg) || tbl_rev != 0) { |
2724 | + if (IS_ERR(wifi_pkg)) { |
2725 | ret = PTR_ERR(wifi_pkg); |
2726 | goto out_free; |
2727 | } |
2728 | |
2729 | - if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER) { |
2730 | + if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER || |
2731 | + tbl_rev != 0) { |
2732 | ret = -EINVAL; |
2733 | goto out_free; |
2734 | } |
2735 | @@ -243,3 +246,293 @@ out_free: |
2736 | return ret; |
2737 | } |
2738 | IWL_EXPORT_SYMBOL(iwl_acpi_get_eckv); |
2739 | + |
2740 | +int iwl_sar_set_profile(union acpi_object *table, |
2741 | + struct iwl_sar_profile *profile, |
2742 | + bool enabled) |
2743 | +{ |
2744 | + int i; |
2745 | + |
2746 | + profile->enabled = enabled; |
2747 | + |
2748 | + for (i = 0; i < ACPI_SAR_TABLE_SIZE; i++) { |
2749 | + if (table[i].type != ACPI_TYPE_INTEGER || |
2750 | + table[i].integer.value > U8_MAX) |
2751 | + return -EINVAL; |
2752 | + |
2753 | + profile->table[i] = table[i].integer.value; |
2754 | + } |
2755 | + |
2756 | + return 0; |
2757 | +} |
2758 | +IWL_EXPORT_SYMBOL(iwl_sar_set_profile); |
2759 | + |
2760 | +int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt, |
2761 | + __le16 per_chain_restriction[][IWL_NUM_SUB_BANDS], |
2762 | + int prof_a, int prof_b) |
2763 | +{ |
2764 | + int i, j, idx; |
2765 | + int profs[ACPI_SAR_NUM_CHAIN_LIMITS] = { prof_a, prof_b }; |
2766 | + |
2767 | + BUILD_BUG_ON(ACPI_SAR_NUM_CHAIN_LIMITS < 2); |
2768 | + BUILD_BUG_ON(ACPI_SAR_NUM_CHAIN_LIMITS * ACPI_SAR_NUM_SUB_BANDS != |
2769 | + ACPI_SAR_TABLE_SIZE); |
2770 | + |
2771 | + for (i = 0; i < ACPI_SAR_NUM_CHAIN_LIMITS; i++) { |
2772 | + struct iwl_sar_profile *prof; |
2773 | + |
2774 | + /* don't allow SAR to be disabled (profile 0 means disable) */ |
2775 | + if (profs[i] == 0) |
2776 | + return -EPERM; |
2777 | + |
2778 | + /* we are off by one, so allow up to ACPI_SAR_PROFILE_NUM */ |
2779 | + if (profs[i] > ACPI_SAR_PROFILE_NUM) |
2780 | + return -EINVAL; |
2781 | + |
2782 | + /* profiles go from 1 to 4, so decrement to access the array */ |
2783 | + prof = &fwrt->sar_profiles[profs[i] - 1]; |
2784 | + |
2785 | + /* if the profile is disabled, do nothing */ |
2786 | + if (!prof->enabled) { |
2787 | + IWL_DEBUG_RADIO(fwrt, "SAR profile %d is disabled.\n", |
2788 | + profs[i]); |
2789 | + /* if one of the profiles is disabled, we fail all */ |
2790 | + return -ENOENT; |
2791 | + } |
2792 | + IWL_DEBUG_INFO(fwrt, |
2793 | + "SAR EWRD: chain %d profile index %d\n", |
2794 | + i, profs[i]); |
2795 | + IWL_DEBUG_RADIO(fwrt, " Chain[%d]:\n", i); |
2796 | + for (j = 0; j < ACPI_SAR_NUM_SUB_BANDS; j++) { |
2797 | + idx = (i * ACPI_SAR_NUM_SUB_BANDS) + j; |
2798 | + per_chain_restriction[i][j] = |
2799 | + cpu_to_le16(prof->table[idx]); |
2800 | + IWL_DEBUG_RADIO(fwrt, " Band[%d] = %d * .125dBm\n", |
2801 | + j, prof->table[idx]); |
2802 | + } |
2803 | + } |
2804 | + |
2805 | +#ifdef CPTCFG_IWLMVM_VENDOR_CMDS |
2806 | + fwrt->sar_chain_a_profile = prof_a; |
2807 | + fwrt->sar_chain_b_profile = prof_b; |
2808 | +#endif |
2809 | + return 0; |
2810 | +} |
2811 | +IWL_EXPORT_SYMBOL(iwl_sar_select_profile); |
2812 | + |
2813 | +int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) |
2814 | +{ |
2815 | + union acpi_object *wifi_pkg, *table, *data; |
2816 | + bool enabled; |
2817 | + int ret, tbl_rev; |
2818 | + |
2819 | + data = iwl_acpi_get_object(fwrt->dev, ACPI_WRDS_METHOD); |
2820 | + if (IS_ERR(data)) |
2821 | + return PTR_ERR(data); |
2822 | + |
2823 | + wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data, |
2824 | + ACPI_WRDS_WIFI_DATA_SIZE, &tbl_rev); |
2825 | + if (IS_ERR(wifi_pkg) || tbl_rev != 0) { |
2826 | + ret = PTR_ERR(wifi_pkg); |
2827 | + goto out_free; |
2828 | + } |
2829 | + |
2830 | + if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER) { |
2831 | + ret = -EINVAL; |
2832 | + goto out_free; |
2833 | + } |
2834 | + |
2835 | + enabled = !!(wifi_pkg->package.elements[1].integer.value); |
2836 | + |
2837 | + /* position of the actual table */ |
2838 | + table = &wifi_pkg->package.elements[2]; |
2839 | + |
2840 | + /* The profile from WRDS is officially profile 1, but goes |
2841 | + * into sar_profiles[0] (because we don't have a profile 0). |
2842 | + */ |
2843 | + ret = iwl_sar_set_profile(table, &fwrt->sar_profiles[0], enabled); |
2844 | +out_free: |
2845 | + kfree(data); |
2846 | + return ret; |
2847 | +} |
2848 | +IWL_EXPORT_SYMBOL(iwl_sar_get_wrds_table); |
2849 | + |
2850 | +int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) |
2851 | +{ |
2852 | + union acpi_object *wifi_pkg, *data; |
2853 | + bool enabled; |
2854 | + int i, n_profiles, tbl_rev; |
2855 | + int ret = 0; |
2856 | + |
2857 | + data = iwl_acpi_get_object(fwrt->dev, ACPI_EWRD_METHOD); |
2858 | + if (IS_ERR(data)) |
2859 | + return PTR_ERR(data); |
2860 | + |
2861 | + wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data, |
2862 | + ACPI_EWRD_WIFI_DATA_SIZE, &tbl_rev); |
2863 | + if (IS_ERR(wifi_pkg) || tbl_rev != 0) { |
2864 | + ret = PTR_ERR(wifi_pkg); |
2865 | + goto out_free; |
2866 | + } |
2867 | + |
2868 | + if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER || |
2869 | + wifi_pkg->package.elements[2].type != ACPI_TYPE_INTEGER) { |
2870 | + ret = -EINVAL; |
2871 | + goto out_free; |
2872 | + } |
2873 | + |
2874 | + enabled = !!(wifi_pkg->package.elements[1].integer.value); |
2875 | + n_profiles = wifi_pkg->package.elements[2].integer.value; |
2876 | + |
2877 | + /* |
2878 | + * Check the validity of n_profiles. The EWRD profiles start |
2879 | + * from index 1, so the maximum value allowed here is |
2880 | + * ACPI_SAR_PROFILES_NUM - 1. |
2881 | + */ |
2882 | + if (n_profiles <= 0 || n_profiles >= ACPI_SAR_PROFILE_NUM) { |
2883 | + ret = -EINVAL; |
2884 | + goto out_free; |
2885 | + } |
2886 | + |
2887 | + for (i = 0; i < n_profiles; i++) { |
2888 | + /* the tables start at element 3 */ |
2889 | + int pos = 3; |
2890 | + |
2891 | + /* The EWRD profiles officially go from 2 to 4, but we |
2892 | + * save them in sar_profiles[1-3] (because we don't |
2893 | + * have profile 0). So in the array we start from 1. |
2894 | + */ |
2895 | + ret = iwl_sar_set_profile(&wifi_pkg->package.elements[pos], |
2896 | + &fwrt->sar_profiles[i + 1], |
2897 | + enabled); |
2898 | + if (ret < 0) |
2899 | + break; |
2900 | + |
2901 | + /* go to the next table */ |
2902 | + pos += ACPI_SAR_TABLE_SIZE; |
2903 | + } |
2904 | + |
2905 | +out_free: |
2906 | + kfree(data); |
2907 | + return ret; |
2908 | +} |
2909 | +IWL_EXPORT_SYMBOL(iwl_sar_get_ewrd_table); |
2910 | + |
2911 | +int iwl_sar_get_wgds_table(struct iwl_fw_runtime *fwrt) |
2912 | +{ |
2913 | + union acpi_object *wifi_pkg, *data; |
2914 | + int i, j, ret, tbl_rev; |
2915 | + int idx = 1; |
2916 | + |
2917 | + data = iwl_acpi_get_object(fwrt->dev, ACPI_WGDS_METHOD); |
2918 | + if (IS_ERR(data)) |
2919 | + return PTR_ERR(data); |
2920 | + |
2921 | + wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data, |
2922 | + ACPI_WGDS_WIFI_DATA_SIZE, &tbl_rev); |
2923 | + if (IS_ERR(wifi_pkg) || tbl_rev > 1) { |
2924 | + ret = PTR_ERR(wifi_pkg); |
2925 | + goto out_free; |
2926 | + } |
2927 | + |
2928 | + fwrt->geo_rev = tbl_rev; |
2929 | + for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) { |
2930 | + for (j = 0; j < ACPI_GEO_TABLE_SIZE; j++) { |
2931 | + union acpi_object *entry; |
2932 | + |
2933 | + entry = &wifi_pkg->package.elements[idx++]; |
2934 | + if (entry->type != ACPI_TYPE_INTEGER || |
2935 | + entry->integer.value > U8_MAX) { |
2936 | + ret = -EINVAL; |
2937 | + goto out_free; |
2938 | + } |
2939 | + |
2940 | + fwrt->geo_profiles[i].values[j] = entry->integer.value; |
2941 | + } |
2942 | + } |
2943 | + ret = 0; |
2944 | +out_free: |
2945 | + kfree(data); |
2946 | + return ret; |
2947 | +} |
2948 | +IWL_EXPORT_SYMBOL(iwl_sar_get_wgds_table); |
2949 | + |
2950 | +bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt) |
2951 | +{ |
2952 | + /* |
2953 | + * The GEO_TX_POWER_LIMIT command is not supported on earlier |
2954 | + * firmware versions. Unfortunately, we don't have a TLV API |
2955 | + * flag to rely on, so rely on the major version which is in |
2956 | + * the first byte of ucode_ver. This was implemented |
2957 | + * initially on version 38 and then backported to 17. It was |
2958 | + * also backported to 29, but only for 7265D devices. The |
2959 | + * intention was to have it in 36 as well, but not all 8000 |
2960 | + * family got this feature enabled. The 8000 family is the |
2961 | + * only one using version 36, so skip this version entirely. |
2962 | + */ |
2963 | + return IWL_UCODE_SERIAL(fwrt->fw->ucode_ver) >= 38 || |
2964 | + IWL_UCODE_SERIAL(fwrt->fw->ucode_ver) == 17 || |
2965 | + (IWL_UCODE_SERIAL(fwrt->fw->ucode_ver) == 29 && |
2966 | + ((fwrt->trans->hw_rev & CSR_HW_REV_TYPE_MSK) == |
2967 | + CSR_HW_REV_TYPE_7265D)); |
2968 | +} |
2969 | +IWL_EXPORT_SYMBOL(iwl_sar_geo_support); |
2970 | + |
2971 | +int iwl_validate_sar_geo_profile(struct iwl_fw_runtime *fwrt, |
2972 | + struct iwl_host_cmd *cmd) |
2973 | +{ |
2974 | + struct iwl_geo_tx_power_profiles_resp *resp; |
2975 | + int ret; |
2976 | + |
2977 | + resp = (void *)cmd->resp_pkt->data; |
2978 | + ret = le32_to_cpu(resp->profile_idx); |
2979 | + if (WARN_ON(ret > ACPI_NUM_GEO_PROFILES)) { |
2980 | + ret = -EIO; |
2981 | + IWL_WARN(fwrt, "Invalid geographic profile idx (%d)\n", ret); |
2982 | + } |
2983 | + |
2984 | + return ret; |
2985 | +} |
2986 | +IWL_EXPORT_SYMBOL(iwl_validate_sar_geo_profile); |
2987 | + |
2988 | +void iwl_sar_geo_init(struct iwl_fw_runtime *fwrt, |
2989 | + struct iwl_per_chain_offset_group *table) |
2990 | +{ |
2991 | + int ret, i, j; |
2992 | + |
2993 | + if (!iwl_sar_geo_support(fwrt)) |
2994 | + return; |
2995 | + |
2996 | + ret = iwl_sar_get_wgds_table(fwrt); |
2997 | + if (ret < 0) { |
2998 | + IWL_DEBUG_RADIO(fwrt, |
2999 | + "Geo SAR BIOS table invalid or unavailable. (%d)\n", |
3000 | + ret); |
3001 | + /* we don't fail if the table is not available */ |
3002 | + return; |
3003 | + } |
3004 | + |
3005 | + BUILD_BUG_ON(ACPI_NUM_GEO_PROFILES * ACPI_WGDS_NUM_BANDS * |
3006 | + ACPI_WGDS_TABLE_SIZE + 1 != ACPI_WGDS_WIFI_DATA_SIZE); |
3007 | + |
3008 | + BUILD_BUG_ON(ACPI_NUM_GEO_PROFILES > IWL_NUM_GEO_PROFILES); |
3009 | + |
3010 | + for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) { |
3011 | + struct iwl_per_chain_offset *chain = |
3012 | + (struct iwl_per_chain_offset *)&table[i]; |
3013 | + |
3014 | + for (j = 0; j < ACPI_WGDS_NUM_BANDS; j++) { |
3015 | + u8 *value; |
3016 | + |
3017 | + value = &fwrt->geo_profiles[i].values[j * |
3018 | + ACPI_GEO_PER_CHAIN_SIZE]; |
3019 | + chain[j].max_tx_power = cpu_to_le16(value[0]); |
3020 | + chain[j].chain_a = value[1]; |
3021 | + chain[j].chain_b = value[2]; |
3022 | + IWL_DEBUG_RADIO(fwrt, |
3023 | + "SAR geographic profile[%d] Band[%d]: chain A = %d chain B = %d max_tx_power = %d\n", |
3024 | + i, j, value[1], value[2], value[0]); |
3025 | + } |
3026 | + } |
3027 | +} |
3028 | +IWL_EXPORT_SYMBOL(iwl_sar_geo_init); |
3029 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h |
3030 | index 6cb2d1f..4a6e826 100644 |
3031 | --- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h |
3032 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h |
3033 | @@ -61,6 +61,12 @@ |
3034 | #define __iwl_fw_acpi__ |
3035 | |
3036 | #include <linux/acpi.h> |
3037 | +#include "fw/api/commands.h" |
3038 | +#include "fw/api/power.h" |
3039 | +#include "fw/api/phy.h" |
3040 | +#include "fw/img.h" |
3041 | +#include "iwl-trans.h" |
3042 | + |
3043 | |
3044 | #define ACPI_WRDS_METHOD "WRDS" |
3045 | #define ACPI_EWRD_METHOD "EWRD" |
3046 | @@ -104,9 +110,21 @@ |
3047 | #define ACPI_PPAG_MIN_HB -16 |
3048 | #define ACPI_PPAG_MAX_HB 40 |
3049 | |
3050 | +struct iwl_sar_profile { |
3051 | + bool enabled; |
3052 | + u8 table[ACPI_SAR_TABLE_SIZE]; |
3053 | +}; |
3054 | + |
3055 | +struct iwl_geo_profile { |
3056 | + u8 values[ACPI_GEO_TABLE_SIZE]; |
3057 | +}; |
3058 | + |
3059 | #ifdef CONFIG_ACPI |
3060 | |
3061 | +struct iwl_fw_runtime; |
3062 | + |
3063 | void *iwl_acpi_get_object(struct device *dev, acpi_string method); |
3064 | + |
3065 | union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev, |
3066 | union acpi_object *data, |
3067 | int data_size, int *tbl_rev); |
3068 | @@ -134,6 +152,27 @@ u64 iwl_acpi_get_pwr_limit(struct device *dev); |
3069 | */ |
3070 | int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk); |
3071 | |
3072 | +int iwl_sar_set_profile(union acpi_object *table, |
3073 | + struct iwl_sar_profile *profile, |
3074 | + bool enabled); |
3075 | + |
3076 | +int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt, |
3077 | + __le16 per_chain_restriction[][IWL_NUM_SUB_BANDS], |
3078 | + int prof_a, int prof_b); |
3079 | + |
3080 | +int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt); |
3081 | + |
3082 | +int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt); |
3083 | + |
3084 | +int iwl_sar_get_wgds_table(struct iwl_fw_runtime *fwrt); |
3085 | + |
3086 | +bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt); |
3087 | + |
3088 | +int iwl_validate_sar_geo_profile(struct iwl_fw_runtime *fwrt, |
3089 | + struct iwl_host_cmd *cmd); |
3090 | + |
3091 | +void iwl_sar_geo_init(struct iwl_fw_runtime *fwrt, |
3092 | + struct iwl_per_chain_offset_group *table); |
3093 | #else /* CONFIG_ACPI */ |
3094 | |
3095 | static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method) |
3096 | @@ -164,5 +203,50 @@ static inline int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk) |
3097 | return -ENOENT; |
3098 | } |
3099 | |
3100 | +static inline int iwl_sar_set_profile(union acpi_object *table, |
3101 | + struct iwl_sar_profile *profile, |
3102 | + bool enabled) |
3103 | +{ |
3104 | + return -ENOENT; |
3105 | +} |
3106 | + |
3107 | +static inline int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt, |
3108 | + __le16 per_chain_restriction[][IWL_NUM_SUB_BANDS], |
3109 | + int prof_a, int prof_b) |
3110 | +{ |
3111 | + return -ENOENT; |
3112 | +} |
3113 | + |
3114 | +static inline int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) |
3115 | +{ |
3116 | + return -ENOENT; |
3117 | +} |
3118 | + |
3119 | +static inline int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) |
3120 | +{ |
3121 | + return -ENOENT; |
3122 | +} |
3123 | + |
3124 | +static inline int iwl_sar_get_wgds_table(struct iwl_fw_runtime *fwrt) |
3125 | +{ |
3126 | + return -ENOENT; |
3127 | +} |
3128 | + |
3129 | +static inline bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt) |
3130 | +{ |
3131 | + return false; |
3132 | +} |
3133 | + |
3134 | +static inline int iwl_validate_sar_geo_profile(struct iwl_fw_runtime *fwrt, |
3135 | + struct iwl_host_cmd *cmd) |
3136 | +{ |
3137 | + return -ENOENT; |
3138 | +} |
3139 | + |
3140 | +static inline void iwl_sar_geo_init(struct iwl_fw_runtime *fwrt, |
3141 | + struct iwl_per_chain_offset_group *table) |
3142 | +{ |
3143 | +} |
3144 | + |
3145 | #endif /* CONFIG_ACPI */ |
3146 | #endif /* __iwl_fw_acpi__ */ |
3147 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/commands.h b/drivers/net/wireless/intel/iwlwifi/fw/api/commands.h |
3148 | index 689ab0f..5c1b2e9 100644 |
3149 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/commands.h |
3150 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/commands.h |
3151 | @@ -681,6 +681,13 @@ enum iwl_system_subcmd_ids { |
3152 | */ |
3153 | enum iwl_xvt_subcmd_ids { |
3154 | /** |
3155 | + * @RUN_TIME_CALIB_DONE_NOTIF : Notification about |
3156 | + * runtime calib finished |
3157 | + * Handled by user space component |
3158 | + */ |
3159 | + RUN_TIME_CALIB_DONE_NOTIF = 0xFE, |
3160 | + |
3161 | + /** |
3162 | * @IQ_CALIB_CONFIG_NOTIF : Notification about IQ calibration finished |
3163 | * Handled by user space component |
3164 | */ |
3165 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/d3.h b/drivers/net/wireless/intel/iwlwifi/fw/api/d3.h |
3166 | index 3643b6b..c4562e1 100644 |
3167 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/d3.h |
3168 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/d3.h |
3169 | @@ -618,7 +618,7 @@ struct iwl_wowlan_status_v6 { |
3170 | * @wake_packet_bufsize: wakeup packet buffer size |
3171 | * @wake_packet: wakeup packet |
3172 | */ |
3173 | -struct iwl_wowlan_status { |
3174 | +struct iwl_wowlan_status_v7 { |
3175 | struct iwl_wowlan_gtk_status gtk[WOWLAN_GTK_KEYS_NUM]; |
3176 | struct iwl_wowlan_igtk_status igtk[WOWLAN_IGTK_KEYS_NUM]; |
3177 | __le64 replay_ctr; |
3178 | @@ -634,6 +634,43 @@ struct iwl_wowlan_status { |
3179 | u8 wake_packet[]; /* can be truncated from _length to _bufsize */ |
3180 | } __packed; /* WOWLAN_STATUSES_API_S_VER_7 */ |
3181 | |
3182 | +/** |
3183 | + * struct iwl_wowlan_status - WoWLAN status |
3184 | + * @gtk: GTK data |
3185 | + * @igtk: IGTK data |
3186 | + * @replay_ctr: GTK rekey replay counter |
3187 | + * @pattern_number: number of the matched pattern |
3188 | + * @non_qos_seq_ctr: non-QoS sequence counter to use next |
3189 | + * @qos_seq_ctr: QoS sequence counters to use next |
3190 | + * @wakeup_reasons: wakeup reasons, see &enum iwl_wowlan_wakeup_reason |
3191 | + * @num_of_gtk_rekeys: number of GTK rekeys |
3192 | + * @transmitted_ndps: number of transmitted neighbor discovery packets |
3193 | + * @received_beacons: number of received beacons |
3194 | + * @wake_packet_length: wakeup packet length |
3195 | + * @wake_packet_bufsize: wakeup packet buffer size |
3196 | + * @tid_tear_down: bit mask of tids whose BA sessions were closed |
3197 | + * in suspend state |
3198 | + * @reserved: unused |
3199 | + * @wake_packet: wakeup packet |
3200 | + */ |
3201 | +struct iwl_wowlan_status { |
3202 | + struct iwl_wowlan_gtk_status gtk[WOWLAN_GTK_KEYS_NUM]; |
3203 | + struct iwl_wowlan_igtk_status igtk[WOWLAN_IGTK_KEYS_NUM]; |
3204 | + __le64 replay_ctr; |
3205 | + __le16 pattern_number; |
3206 | + __le16 non_qos_seq_ctr; |
3207 | + __le16 qos_seq_ctr[8]; |
3208 | + __le32 wakeup_reasons; |
3209 | + __le32 num_of_gtk_rekeys; |
3210 | + __le32 transmitted_ndps; |
3211 | + __le32 received_beacons; |
3212 | + __le32 wake_packet_length; |
3213 | + __le32 wake_packet_bufsize; |
3214 | + u8 tid_tear_down; |
3215 | + u8 reserved[3]; |
3216 | + u8 wake_packet[]; /* can be truncated from _length to _bufsize */ |
3217 | +} __packed; /* WOWLAN_STATUSES_API_S_VER_9 */ |
3218 | + |
3219 | static inline u8 iwlmvm_wowlan_gtk_idx(struct iwl_wowlan_gtk_status *gtk) |
3220 | { |
3221 | return gtk->key_flags & IWL_WOWLAN_GTK_IDX_MASK; |
3222 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/location.h b/drivers/net/wireless/intel/iwlwifi/fw/api/location.h |
3223 | index 7a0fe5a..0214e55 100644 |
3224 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/location.h |
3225 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/location.h |
3226 | @@ -240,7 +240,7 @@ enum iwl_tof_responder_cfg_flags { |
3227 | }; |
3228 | |
3229 | /** |
3230 | - * struct iwl_tof_responder_config_cmd - ToF AP mode (for debug) |
3231 | + * struct iwl_tof_responder_config_cmd_v6 - ToF AP mode (for debug) |
3232 | * @cmd_valid_fields: &iwl_tof_responder_cmd_valid_field |
3233 | * @responder_cfg_flags: &iwl_tof_responder_cfg_flags |
3234 | * @bandwidth: current AP Bandwidth: &enum iwl_tof_bandwidth |
3235 | @@ -258,7 +258,7 @@ enum iwl_tof_responder_cfg_flags { |
3236 | * @bssid: Current AP BSSID |
3237 | * @reserved2: reserved |
3238 | */ |
3239 | -struct iwl_tof_responder_config_cmd { |
3240 | +struct iwl_tof_responder_config_cmd_v6 { |
3241 | __le32 cmd_valid_fields; |
3242 | __le32 responder_cfg_flags; |
3243 | u8 bandwidth; |
3244 | @@ -274,6 +274,42 @@ struct iwl_tof_responder_config_cmd { |
3245 | __le16 reserved2; |
3246 | } __packed; /* TOF_RESPONDER_CONFIG_CMD_API_S_VER_6 */ |
3247 | |
3248 | +/** |
3249 | + * struct iwl_tof_responder_config_cmd - ToF AP mode (for debug) |
3250 | + * @cmd_valid_fields: &iwl_tof_responder_cmd_valid_field |
3251 | + * @responder_cfg_flags: &iwl_tof_responder_cfg_flags |
3252 | + * @format_bw: bits 0 - 3: &enum iwl_location_frame_format. |
3253 | + * bits 4 - 7: &enum iwl_location_bw. |
3254 | + * @rate: current AP rate |
3255 | + * @channel_num: current AP Channel |
3256 | + * @ctrl_ch_position: coding of the control channel position relative to |
3257 | + * the center frequency, see iwl_mvm_get_ctrl_pos() |
3258 | + * @sta_id: index of the AP STA when in AP mode |
3259 | + * @reserved1: reserved |
3260 | + * @toa_offset: Artificial addition [pSec] for the ToA - to be used for debug |
3261 | + * purposes, simulating station movement by adding various values |
3262 | + * to this field |
3263 | + * @common_calib: XVT: common calibration value |
3264 | + * @specific_calib: XVT: specific calibration value |
3265 | + * @bssid: Current AP BSSID |
3266 | + * @reserved2: reserved |
3267 | + */ |
3268 | +struct iwl_tof_responder_config_cmd { |
3269 | + __le32 cmd_valid_fields; |
3270 | + __le32 responder_cfg_flags; |
3271 | + u8 format_bw; |
3272 | + u8 rate; |
3273 | + u8 channel_num; |
3274 | + u8 ctrl_ch_position; |
3275 | + u8 sta_id; |
3276 | + u8 reserved1; |
3277 | + __le16 toa_offset; |
3278 | + __le16 common_calib; |
3279 | + __le16 specific_calib; |
3280 | + u8 bssid[ETH_ALEN]; |
3281 | + __le16 reserved2; |
3282 | +} __packed; /* TOF_RESPONDER_CONFIG_CMD_API_S_VER_6 */ |
3283 | + |
3284 | #define IWL_LCI_CIVIC_IE_MAX_SIZE 400 |
3285 | |
3286 | /** |
3287 | @@ -391,6 +427,9 @@ struct iwl_tof_range_req_ap_entry_v2 { |
3288 | * Default algo type is ML. |
3289 | * @IWL_INITIATOR_AP_FLAGS_MCSI_REPORT: Send the MCSI for each FTM frame to the |
3290 | * driver. |
3291 | + * @IWL_INITIATOR_AP_FLAGS_NON_TB: Use non trigger based flow |
3292 | + * @IWL_INITIATOR_AP_FLAGS_TB: Use trigger based flow |
3293 | + * @IWL_INITIATOR_AP_FLAGS_SECURED: request secured measurement |
3294 | */ |
3295 | enum iwl_initiator_ap_flags { |
3296 | IWL_INITIATOR_AP_FLAGS_ASAP = BIT(1), |
3297 | @@ -400,10 +439,13 @@ enum iwl_initiator_ap_flags { |
3298 | IWL_INITIATOR_AP_FLAGS_ALGO_LR = BIT(5), |
3299 | IWL_INITIATOR_AP_FLAGS_ALGO_FFT = BIT(6), |
3300 | IWL_INITIATOR_AP_FLAGS_MCSI_REPORT = BIT(8), |
3301 | + IWL_INITIATOR_AP_FLAGS_NON_TB = BIT(9), |
3302 | + IWL_INITIATOR_AP_FLAGS_TB = BIT(10), |
3303 | + IWL_INITIATOR_AP_FLAGS_SECURED = BIT(11), |
3304 | }; |
3305 | |
3306 | /** |
3307 | - * struct iwl_tof_range_req_ap_entry - AP configuration parameters |
3308 | + * struct iwl_tof_range_req_ap_entry_v3 - AP configuration parameters |
3309 | * @initiator_ap_flags: see &enum iwl_initiator_ap_flags. |
3310 | * @channel_num: AP Channel number |
3311 | * @bandwidth: AP bandwidth. One of iwl_tof_bandwidth. |
3312 | @@ -420,7 +462,7 @@ enum iwl_initiator_ap_flags { |
3313 | * @reserved: For alignment and future use |
3314 | * @tsf_delta: not in use |
3315 | */ |
3316 | -struct iwl_tof_range_req_ap_entry { |
3317 | +struct iwl_tof_range_req_ap_entry_v3 { |
3318 | __le32 initiator_ap_flags; |
3319 | u8 channel_num; |
3320 | u8 bandwidth; |
3321 | @@ -435,6 +477,72 @@ struct iwl_tof_range_req_ap_entry { |
3322 | } __packed; /* LOCATION_RANGE_REQ_AP_ENTRY_CMD_API_S_VER_3 */ |
3323 | |
3324 | /** |
3325 | + * enum iwl_location_frame_format - location frame formats |
3326 | + * @IWL_LOCATION_FRAME_FORMAT_LEGACY: legacy |
3327 | + * @IWL_LOCATION_FRAME_FORMAT_HT: HT |
3328 | + * @IWL_LOCATION_FRAME_FORMAT_VHT: VHT |
3329 | + * @IWL_LOCATION_FRAME_FORMAT_HE: HE |
3330 | + */ |
3331 | +enum iwl_location_frame_format { |
3332 | + IWL_LOCATION_FRAME_FORMAT_LEGACY, |
3333 | + IWL_LOCATION_FRAME_FORMAT_HT, |
3334 | + IWL_LOCATION_FRAME_FORMAT_VHT, |
3335 | + IWL_LOCATION_FRAME_FORMAT_HE, |
3336 | +}; |
3337 | + |
3338 | +/** |
3339 | + * enum iwl_location_bw - location bandwidth selection |
3340 | + * @IWL_LOCATION_BW_20MHZ: 20MHz |
3341 | + * @IWL_LOCATION_BW_40MHZ: 40MHz |
3342 | + * @IWL_LOCATION_BW_80MHZ: 80MHz |
3343 | + */ |
3344 | +enum iwl_location_bw { |
3345 | + IWL_LOCATION_BW_20MHZ, |
3346 | + IWL_LOCATION_BW_40MHZ, |
3347 | + IWL_LOCATION_BW_80MHZ, |
3348 | +}; |
3349 | + |
3350 | +#define HLTK_11AZ_LEN 32 |
3351 | +#define TK_11AZ_LEN 32 |
3352 | + |
3353 | +#define LOCATION_BW_POS 4 |
3354 | + |
3355 | +/** |
3356 | + * struct iwl_tof_range_req_ap_entry - AP configuration parameters |
3357 | + * @initiator_ap_flags: see &enum iwl_initiator_ap_flags. |
3358 | + * @channel_num: AP Channel number |
3359 | + * @format_bw: bits 0 - 3: &enum iwl_location_frame_format. |
3360 | + * bits 4 - 7: &enum iwl_location_bw. |
3361 | + * @ctrl_ch_position: Coding of the control channel position relative to the |
3362 | + * center frequency, see iwl_mvm_get_ctrl_pos(). |
3363 | + * @ftmr_max_retries: Max number of retries to send the FTMR in case of no |
3364 | + * reply from the AP. |
3365 | + * @bssid: AP's BSSID |
3366 | + * @burst_period: Recommended value to be sent to the AP. Measurement |
3367 | + * periodicity In units of 100ms. ignored if num_of_bursts_exp = 0 |
3368 | + * @samples_per_burst: the number of FTMs pairs in single Burst (1-31); |
3369 | + * @num_of_bursts: Recommended value to be sent to the AP. 2s Exponent of |
3370 | + * the number of measurement iterations (min 2^0 = 1, max 2^14) |
3371 | + * @reserved: For alignment and future use |
3372 | + * @hltk: HLTK to be used for secured 11az measurement |
3373 | + * @tk: TK to be used for secured 11az measurement |
3374 | + */ |
3375 | +struct iwl_tof_range_req_ap_entry { |
3376 | + __le32 initiator_ap_flags; |
3377 | + u8 channel_num; |
3378 | + u8 format_bw; |
3379 | + u8 ctrl_ch_position; |
3380 | + u8 ftmr_max_retries; |
3381 | + u8 bssid[ETH_ALEN]; |
3382 | + __le16 burst_period; |
3383 | + u8 samples_per_burst; |
3384 | + u8 num_of_bursts; |
3385 | + __le16 reserved; |
3386 | + u8 hltk[HLTK_11AZ_LEN]; |
3387 | + u8 tk[TK_11AZ_LEN]; |
3388 | +} __packed; /* LOCATION_RANGE_REQ_AP_ENTRY_CMD_API_S_VER_4 */ |
3389 | + |
3390 | +/** |
3391 | * enum iwl_tof_response_mode |
3392 | * @IWL_MVM_TOF_RESPONSE_ASAP: report each AP measurement separately as soon as |
3393 | * possible (not supported for this release) |
3394 | @@ -536,6 +644,38 @@ struct iwl_tof_range_req_cmd_v5 { |
3395 | /* LOCATION_RANGE_REQ_CMD_API_S_VER_5 */ |
3396 | |
3397 | /** |
3398 | + * struct iwl_tof_range_req_cmd_v7 - start measurement cmd |
3399 | + * @initiator_flags: see flags @ iwl_tof_initiator_flags |
3400 | + * @request_id: A Token incremented per request. The same Token will be |
3401 | + * sent back in the range response |
3402 | + * @num_of_ap: Number of APs to measure (error if > IWL_MVM_TOF_MAX_APS) |
3403 | + * @range_req_bssid: ranging request BSSID |
3404 | + * @macaddr_mask: Bits set to 0 shall be copied from the MAC address template. |
3405 | + * Bits set to 1 shall be randomized by the UMAC |
3406 | + * @macaddr_template: MAC address template to use for non-randomized bits |
3407 | + * @req_timeout_ms: Requested timeout of the response in units of milliseconds. |
3408 | + * This is the session time for completing the measurement. |
3409 | + * @tsf_mac_id: report the measurement start time for each ap in terms of the |
3410 | + * TSF of this mac id. 0xff to disable TSF reporting. |
3411 | + * @common_calib: The common calib value to inject to this measurement calc |
3412 | + * @specific_calib: The specific calib value to inject to this measurement calc |
3413 | + * @ap: per-AP request data, see &struct iwl_tof_range_req_ap_entry_v2. |
3414 | + */ |
3415 | +struct iwl_tof_range_req_cmd_v7 { |
3416 | + __le32 initiator_flags; |
3417 | + u8 request_id; |
3418 | + u8 num_of_ap; |
3419 | + u8 range_req_bssid[ETH_ALEN]; |
3420 | + u8 macaddr_mask[ETH_ALEN]; |
3421 | + u8 macaddr_template[ETH_ALEN]; |
3422 | + __le32 req_timeout_ms; |
3423 | + __le32 tsf_mac_id; |
3424 | + __le16 common_calib; |
3425 | + __le16 specific_calib; |
3426 | + struct iwl_tof_range_req_ap_entry_v3 ap[IWL_MVM_TOF_MAX_APS]; |
3427 | +} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_7 */ |
3428 | + |
3429 | +/** |
3430 | * struct iwl_tof_range_req_cmd - start measurement cmd |
3431 | * @initiator_flags: see flags @ iwl_tof_initiator_flags |
3432 | * @request_id: A Token incremented per request. The same Token will be |
3433 | @@ -565,7 +705,7 @@ struct iwl_tof_range_req_cmd { |
3434 | __le16 common_calib; |
3435 | __le16 specific_calib; |
3436 | struct iwl_tof_range_req_ap_entry ap[IWL_MVM_TOF_MAX_APS]; |
3437 | -} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_7 */ |
3438 | +} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_8 */ |
3439 | |
3440 | /* |
3441 | * enum iwl_tof_range_request_status - status of the sent request |
3442 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h b/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h |
3443 | index 08148bc..48c3d68 100644 |
3444 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h |
3445 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h |
3446 | @@ -95,6 +95,7 @@ struct iwl_ssid_ie { |
3447 | #define IWL_SCAN_MAX_BLACKLIST_LEN 64 |
3448 | #define IWL_SCAN_SHORT_BLACKLIST_LEN 16 |
3449 | #define IWL_SCAN_MAX_PROFILES 11 |
3450 | +#define IWL_SCAN_MAX_PROFILES_V2 8 |
3451 | #define SCAN_OFFLOAD_PROBE_REQ_SIZE 512 |
3452 | #define SCAN_NUM_BAND_PROBE_DATA_V_1 2 |
3453 | #define SCAN_NUM_BAND_PROBE_DATA_V_2 3 |
3454 | @@ -161,8 +162,7 @@ struct iwl_scan_offload_profile { |
3455 | } __packed; |
3456 | |
3457 | /** |
3458 | - * struct iwl_scan_offload_profile_cfg - SCAN_OFFLOAD_PROFILES_CFG_API_S_VER_1 |
3459 | - * @profiles: profiles to search for match |
3460 | + * struct iwl_scan_offload_profile_cfg_data |
3461 | * @blacklist_len: length of blacklist |
3462 | * @num_profiles: num of profiles in the list |
3463 | * @match_notify: clients waiting for match found notification |
3464 | @@ -171,8 +171,7 @@ struct iwl_scan_offload_profile { |
3465 | * @any_beacon_notify: clients waiting for match notification without match |
3466 | * @reserved: reserved |
3467 | */ |
3468 | -struct iwl_scan_offload_profile_cfg { |
3469 | - struct iwl_scan_offload_profile profiles[IWL_SCAN_MAX_PROFILES]; |
3470 | +struct iwl_scan_offload_profile_cfg_data { |
3471 | u8 blacklist_len; |
3472 | u8 num_profiles; |
3473 | u8 match_notify; |
3474 | @@ -183,6 +182,26 @@ struct iwl_scan_offload_profile_cfg { |
3475 | } __packed; |
3476 | |
3477 | /** |
3478 | + * struct iwl_scan_offload_profile_cfg |
3479 | + * @profiles: profiles to search for match |
3480 | + * @data: the rest of the data for profile_cfg |
3481 | + */ |
3482 | +struct iwl_scan_offload_profile_cfg_v1 { |
3483 | + struct iwl_scan_offload_profile profiles[IWL_SCAN_MAX_PROFILES]; |
3484 | + struct iwl_scan_offload_profile_cfg_data data; |
3485 | +} __packed; /* SCAN_OFFLOAD_PROFILES_CFG_API_S_VER_1-2*/ |
3486 | + |
3487 | +/** |
3488 | + * struct iwl_scan_offload_profile_cfg |
3489 | + * @profiles: profiles to search for match |
3490 | + * @data: the rest of the data for profile_cfg |
3491 | + */ |
3492 | +struct iwl_scan_offload_profile_cfg { |
3493 | + struct iwl_scan_offload_profile profiles[IWL_SCAN_MAX_PROFILES_V2]; |
3494 | + struct iwl_scan_offload_profile_cfg_data data; |
3495 | +} __packed; /* SCAN_OFFLOAD_PROFILES_CFG_API_S_VER_3*/ |
3496 | + |
3497 | +/** |
3498 | * struct iwl_scan_schedule_lmac - schedule of scan offload |
3499 | * @delay: delay between iterations, in seconds. |
3500 | * @iterations: num of scan iterations |
3501 | @@ -645,7 +664,10 @@ enum iwl_umac_scan_general_flags2 { |
3502 | }; |
3503 | |
3504 | /** |
3505 | - * enum iwl_umac_scan_general_flags_v22 - UMAC scan general flags ver 2 |
3506 | + * enum iwl_umac_scan_general_flags_v2 - UMAC scan general flags version 2 |
3507 | + * |
3508 | + * The FW flags were reordered and hence the driver introduce version 2 |
3509 | + * |
3510 | * @IWL_UMAC_SCAN_GEN_FLAGS_V2_PERIODIC: periodic or scheduled |
3511 | * @IWL_UMAC_SCAN_GEN_FLAGS_V2_PASS_ALL: pass all probe responses and beacons |
3512 | * during scan iterations |
3513 | @@ -662,6 +684,9 @@ enum iwl_umac_scan_general_flags2 { |
3514 | * @IWL_UMAC_SCAN_GEN_FLAGS_V2_MULTI_SSID: matching on multiple SSIDs |
3515 | * @IWL_UMAC_SCAN_GEN_FLAGS_V2_FORCE_PASSIVE: all the channels scanned |
3516 | * as passive |
3517 | + * @IWL_UMAC_SCAN_GEN_FLAGS_V2_TRIGGER_UHB_SCAN: at the end of 2.4GHz and |
3518 | + * 5.2Ghz bands scan, trigger scan on 6GHz band to discover |
3519 | + * the reported collocated APs |
3520 | */ |
3521 | enum iwl_umac_scan_general_flags_v2 { |
3522 | IWL_UMAC_SCAN_GEN_FLAGS_V2_PERIODIC = BIT(0), |
3523 | @@ -676,6 +701,7 @@ enum iwl_umac_scan_general_flags_v2 { |
3524 | IWL_UMAC_SCAN_GEN_FLAGS_V2_NTF_START = BIT(9), |
3525 | IWL_UMAC_SCAN_GEN_FLAGS_V2_MULTI_SSID = BIT(10), |
3526 | IWL_UMAC_SCAN_GEN_FLAGS_V2_FORCE_PASSIVE = BIT(11), |
3527 | + IWL_UMAC_SCAN_GEN_FLAGS_V2_TRIGGER_UHB_SCAN = BIT(12), |
3528 | }; |
3529 | |
3530 | /** |
3531 | @@ -696,13 +722,16 @@ struct iwl_scan_channel_cfg_umac { |
3532 | u8 channel_num; |
3533 | u8 iter_count; |
3534 | __le16 iter_interval; |
3535 | - } v1; /* SCAN_CHANNEL_CFG_S_VER1 */ |
3536 | + } v1; /* SCAN_CHANNEL_CONFIG_API_S_VER_1 */ |
3537 | struct { |
3538 | u8 channel_num; |
3539 | u8 band; |
3540 | u8 iter_count; |
3541 | u8 iter_interval; |
3542 | - } v2; /* SCAN_CHANNEL_CFG_S_VER2 */ |
3543 | + } v2; /* SCAN_CHANNEL_CONFIG_API_S_VER_2 |
3544 | + * SCAN_CHANNEL_CONFIG_API_S_VER_3 |
3545 | + * SCAN_CHANNEL_CONFIG_API_S_VER_4 |
3546 | + */ |
3547 | }; |
3548 | } __packed; |
3549 | |
3550 | @@ -872,7 +901,7 @@ struct iwl_scan_req_umac { |
3551 | #define IWL_SCAN_REQ_UMAC_SIZE_V1 36 |
3552 | |
3553 | /** |
3554 | - * struct iwl_scan_probe_params |
3555 | + * struct iwl_scan_probe_params_v3 |
3556 | * @preq: scan probe request params |
3557 | * @ssid_num: number of valid SSIDs in direct scan array |
3558 | * @short_ssid_num: number of valid short SSIDs in short ssid array |
3559 | @@ -881,8 +910,8 @@ struct iwl_scan_req_umac { |
3560 | * @direct_scan: list of ssids |
3561 | * @short_ssid: array of short ssids |
3562 | * @bssid_array: array of bssids |
3563 | -*/ |
3564 | -struct iwl_scan_probe_params { |
3565 | + */ |
3566 | +struct iwl_scan_probe_params_v3 { |
3567 | struct iwl_scan_probe_req preq; |
3568 | u8 ssid_num; |
3569 | u8 short_ssid_num; |
3570 | @@ -891,49 +920,95 @@ struct iwl_scan_probe_params { |
3571 | struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX]; |
3572 | __le32 short_ssid[SCAN_SHORT_SSID_MAX_SIZE]; |
3573 | u8 bssid_array[ETH_ALEN][SCAN_BSSID_MAX_SIZE]; |
3574 | -} __packed; |
3575 | +} __packed; /* SCAN_PROBE_PARAMS_API_S_VER_3 */ |
3576 | + |
3577 | +/** |
3578 | + * struct iwl_scan_probe_params_v4 |
3579 | + * @preq: scan probe request params |
3580 | + * @short_ssid_num: number of valid short SSIDs in short ssid array |
3581 | + * @bssid_num: number of valid bssid in bssids array |
3582 | + * @reserved: reserved |
3583 | + * @direct_scan: list of ssids |
3584 | + * @short_ssid: array of short ssids |
3585 | + * @bssid_array: array of bssids |
3586 | + */ |
3587 | +struct iwl_scan_probe_params_v4 { |
3588 | + struct iwl_scan_probe_req preq; |
3589 | + u8 short_ssid_num; |
3590 | + u8 bssid_num; |
3591 | + __le16 reserved; |
3592 | + struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX]; |
3593 | + __le32 short_ssid[SCAN_SHORT_SSID_MAX_SIZE]; |
3594 | + u8 bssid_array[ETH_ALEN][SCAN_BSSID_MAX_SIZE]; |
3595 | +} __packed; /* SCAN_PROBE_PARAMS_API_S_VER_4 */ |
3596 | |
3597 | #define SCAN_MAX_NUM_CHANS_V3 67 |
3598 | |
3599 | /** |
3600 | - * struct iwl_scan_channel_params |
3601 | + * struct iwl_scan_channel_params_v4 |
3602 | * @flags: channel flags &enum iwl_scan_channel_flags |
3603 | * @count: num of channels in scan request |
3604 | + * @num_of_aps_override: override the number of APs the FW uses to calculate |
3605 | + * dwell time when adaptive dwell is used |
3606 | * @reserved: for future use and alignment |
3607 | * @channel_config: array of explicit channel configurations |
3608 | * for 2.4Ghz and 5.2Ghz bands |
3609 | + * @adwell_ch_override_bitmap: when using adaptive dwell, override the number |
3610 | + * of APs value with &num_of_aps_override for the channel. |
3611 | + * To cast channel to index, use &iwl_mvm_scan_ch_and_band_to_idx |
3612 | */ |
3613 | -struct iwl_scan_channel_params { |
3614 | +struct iwl_scan_channel_params_v4 { |
3615 | u8 flags; |
3616 | u8 count; |
3617 | - __le16 reserved; |
3618 | + u8 num_of_aps_override; |
3619 | + u8 reserved; |
3620 | struct iwl_scan_channel_cfg_umac channel_config[SCAN_MAX_NUM_CHANS_V3]; |
3621 | -} __packed; |
3622 | + u8 adwell_ch_override_bitmap[16]; |
3623 | +} __packed; /* SCAN_CHANNEL_PARAMS_API_S_VER_4 also |
3624 | + SCAN_CHANNEL_PARAMS_API_S_VER_5 */ |
3625 | |
3626 | - /** |
3627 | - * struct iwl_scan_general_params |
3628 | - * @flags: &enum iwl_umac_scan_flags |
3629 | - * @reserved: reserved for future |
3630 | - * @scan_start_mac_id: report the scan start TSF time according to this mac TSF |
3631 | - * @active_dwell: dwell time for active scan per LMAC |
3632 | - * @adwell_default_2g: adaptive dwell default number of APs |
3633 | - * for 2.4GHz channel |
3634 | - * @ddwell_default_5g: adaptive dwell default number of APs |
3635 | - * for 5GHz channels |
3636 | - * @adwell_default_social_chn: adaptive dwell default number of |
3637 | - * APs per social channel |
3638 | - * @reserved1: reserved for future |
3639 | - * @adwell_max_budget: the maximal number of TUs that adaptive dwell |
3640 | - * can add to the total scan time |
3641 | - * @max_out_of_time: max out of serving channel time, per LMAC |
3642 | - * @suspend_time: max suspend time, per LMAC |
3643 | - * @scan_priority: priority of the request |
3644 | - * @passive_dwell: continues dwell time for passive channel |
3645 | - * (without adaptive dwell) |
3646 | - * @num_of_fragments: number of fragments needed for full fragmented |
3647 | - * scan coverage. |
3648 | - * */ |
3649 | -struct iwl_scan_general_params { |
3650 | +/** |
3651 | + * struct iwl_scan_channel_params_v6 |
3652 | + * @flags: channel flags &enum iwl_scan_channel_flags |
3653 | + * @count: num of channels in scan request |
3654 | + * @n_aps_override: override the number of APs the FW uses to calculate dwell |
3655 | + * time when adaptive dwell is used. |
3656 | + * Channel k will use n_aps_override[i] when BIT(20 + i) is set in |
3657 | + * channel_config[k].flags |
3658 | + * @channel_config: array of explicit channel configurations |
3659 | + * for 2.4Ghz and 5.2Ghz bands |
3660 | + */ |
3661 | +struct iwl_scan_channel_params_v6 { |
3662 | + u8 flags; |
3663 | + u8 count; |
3664 | + u8 n_aps_override[2]; |
3665 | + struct iwl_scan_channel_cfg_umac channel_config[SCAN_MAX_NUM_CHANS_V3]; |
3666 | +} __packed; /* SCAN_CHANNEL_PARAMS_API_S_VER_6 */ |
3667 | + |
3668 | +/** |
3669 | + * struct iwl_scan_general_params_v10 |
3670 | + * @flags: &enum iwl_umac_scan_flags |
3671 | + * @reserved: reserved for future |
3672 | + * @scan_start_mac_id: report the scan start TSF time according to this mac TSF |
3673 | + * @active_dwell: dwell time for active scan per LMAC |
3674 | + * @adwell_default_2g: adaptive dwell default number of APs |
3675 | + * for 2.4GHz channel |
3676 | + * @adwell_default_5g: adaptive dwell default number of APs |
3677 | + * for 5GHz channels |
3678 | + * @adwell_default_social_chn: adaptive dwell default number of |
3679 | + * APs per social channel |
3680 | + * @reserved1: reserved for future |
3681 | + * @adwell_max_budget: the maximal number of TUs that adaptive dwell |
3682 | + * can add to the total scan time |
3683 | + * @max_out_of_time: max out of serving channel time, per LMAC |
3684 | + * @suspend_time: max suspend time, per LMAC |
3685 | + * @scan_priority: priority of the request |
3686 | + * @passive_dwell: continues dwell time for passive channel |
3687 | + * (without adaptive dwell) |
3688 | + * @num_of_fragments: number of fragments needed for full fragmented |
3689 | + * scan coverage. |
3690 | + */ |
3691 | +struct iwl_scan_general_params_v10 { |
3692 | __le16 flags; |
3693 | u8 reserved; |
3694 | u8 scan_start_mac_id; |
3695 | @@ -948,45 +1023,71 @@ struct iwl_scan_general_params { |
3696 | __le32 scan_priority; |
3697 | u8 passive_dwell[SCAN_TWO_LMACS]; |
3698 | u8 num_of_fragments[SCAN_TWO_LMACS]; |
3699 | -} __packed; |
3700 | +} __packed; /* SCAN_GENERAL_PARAMS_API_S_VER_10 */ |
3701 | |
3702 | /** |
3703 | - * struct iwl_scan_periodic_parms |
3704 | - * @schedule: can scheduling parameter |
3705 | - * @delay: initial delay of the periodic scan in seconds |
3706 | - * @reserved: reserved for future |
3707 | - * */ |
3708 | -struct iwl_scan_periodic_parms { |
3709 | + * struct iwl_scan_periodic_parms_v1 |
3710 | + * @schedule: can scheduling parameter |
3711 | + * @delay: initial delay of the periodic scan in seconds |
3712 | + * @reserved: reserved for future |
3713 | + */ |
3714 | +struct iwl_scan_periodic_parms_v1 { |
3715 | struct iwl_scan_umac_schedule schedule[IWL_MAX_SCHED_SCAN_PLANS]; |
3716 | __le16 delay; |
3717 | __le16 reserved; |
3718 | -} __packed; |
3719 | +} __packed; /* SCAN_PERIODIC_PARAMS_API_S_VER_1 */ |
3720 | |
3721 | /** |
3722 | - * struct iwl_scan_req_params |
3723 | - * @general_params: &struct iwl_scan_general_params |
3724 | - * @channel_params: &struct iwl_scan_channel_params |
3725 | - * @periodic_params: &struct iwl_scan_periodic_parms |
3726 | - * @probe_params: &struct iwl_scan_probe_params |
3727 | - * */ |
3728 | -struct iwl_scan_req_params { |
3729 | - struct iwl_scan_general_params general_params; |
3730 | - struct iwl_scan_channel_params channel_params; |
3731 | - struct iwl_scan_periodic_parms periodic_params; |
3732 | - struct iwl_scan_probe_params probe_params; |
3733 | -} __packed; |
3734 | + * struct iwl_scan_req_params_v12 |
3735 | + * @general_params: &struct iwl_scan_general_params_v10 |
3736 | + * @channel_params: &struct iwl_scan_channel_params_v4 |
3737 | + * @periodic_params: &struct iwl_scan_periodic_parms_v1 |
3738 | + * @probe_params: &struct iwl_scan_probe_params_v3 |
3739 | + */ |
3740 | +struct iwl_scan_req_params_v12 { |
3741 | + struct iwl_scan_general_params_v10 general_params; |
3742 | + struct iwl_scan_channel_params_v4 channel_params; |
3743 | + struct iwl_scan_periodic_parms_v1 periodic_params; |
3744 | + struct iwl_scan_probe_params_v3 probe_params; |
3745 | +} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_12 */ |
3746 | |
3747 | /** |
3748 | - * struct iwl_scan_req_umac_v2 |
3749 | + * struct iwl_scan_req_params_v14 |
3750 | + * @general_params: &struct iwl_scan_general_params_v10 |
3751 | + * @channel_params: &struct iwl_scan_channel_params_v6 |
3752 | + * @periodic_params: &struct iwl_scan_periodic_parms_v1 |
3753 | + * @probe_params: &struct iwl_scan_probe_params_v4 |
3754 | + */ |
3755 | +struct iwl_scan_req_params_v14 { |
3756 | + struct iwl_scan_general_params_v10 general_params; |
3757 | + struct iwl_scan_channel_params_v6 channel_params; |
3758 | + struct iwl_scan_periodic_parms_v1 periodic_params; |
3759 | + struct iwl_scan_probe_params_v4 probe_params; |
3760 | +} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_14 */ |
3761 | + |
3762 | +/** |
3763 | + * struct iwl_scan_req_umac_v12 |
3764 | * @uid: scan id, &enum iwl_umac_scan_uid_offsets |
3765 | * @ooc_priority: out of channel priority - &enum iwl_scan_priority |
3766 | * @scan_params: scan parameters |
3767 | */ |
3768 | -struct iwl_scan_umac_req_v2 { |
3769 | +struct iwl_scan_req_umac_v12 { |
3770 | __le32 uid; |
3771 | __le32 ooc_priority; |
3772 | - struct iwl_scan_req_params scan_params; |
3773 | -} __packed; |
3774 | + struct iwl_scan_req_params_v12 scan_params; |
3775 | +} __packed; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_12 */ |
3776 | + |
3777 | +/** |
3778 | + * struct iwl_scan_req_umac_v14 |
3779 | + * @uid: scan id, &enum iwl_umac_scan_uid_offsets |
3780 | + * @ooc_priority: out of channel priority - &enum iwl_scan_priority |
3781 | + * @scan_params: scan parameters |
3782 | + */ |
3783 | +struct iwl_scan_req_umac_v14 { |
3784 | + __le32 uid; |
3785 | + __le32 ooc_priority; |
3786 | + struct iwl_scan_req_params_v14 scan_params; |
3787 | +} __packed; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_14 */ |
3788 | |
3789 | /** |
3790 | * struct iwl_umac_scan_abort |
3791 | @@ -1062,7 +1163,7 @@ struct iwl_scan_offload_profiles_query_v1 { |
3792 | u8 resume_while_scanning; |
3793 | u8 self_recovery; |
3794 | __le16 reserved; |
3795 | - struct iwl_scan_offload_profile_match_v1 matches[IWL_SCAN_MAX_PROFILES]; |
3796 | + struct iwl_scan_offload_profile_match_v1 matches[0]; |
3797 | } __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_2 */ |
3798 | |
3799 | /** |
3800 | @@ -1106,7 +1207,7 @@ struct iwl_scan_offload_profiles_query { |
3801 | u8 resume_while_scanning; |
3802 | u8 self_recovery; |
3803 | __le16 reserved; |
3804 | - struct iwl_scan_offload_profile_match matches[IWL_SCAN_MAX_PROFILES]; |
3805 | + struct iwl_scan_offload_profile_match matches[0]; |
3806 | } __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_3 */ |
3807 | |
3808 | /** |
3809 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/soc.h b/drivers/net/wireless/intel/iwlwifi/fw/api/soc.h |
3810 | index 5d1fb98..aadca78 100644 |
3811 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/soc.h |
3812 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/soc.h |
3813 | @@ -8,6 +8,7 @@ |
3814 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3815 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
3816 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3817 | + * Copyright(c) 2019 Intel Deutschland GmbH |
3818 | * |
3819 | * This program is free software; you can redistribute it and/or modify |
3820 | * it under the terms of version 2 of the GNU General Public License as |
3821 | @@ -30,6 +31,7 @@ |
3822 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3823 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
3824 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3825 | + * Copyright(c) 2019 Intel Deutschland GmbH |
3826 | * All rights reserved. |
3827 | * |
3828 | * Redistribution and use in source and binary forms, with or without |
3829 | @@ -63,21 +65,23 @@ |
3830 | #ifndef __iwl_fw_api_soc_h__ |
3831 | #define __iwl_fw_api_soc_h__ |
3832 | |
3833 | -/* type of devices for defining SOC latency */ |
3834 | -enum iwl_soc_device_types { |
3835 | - SOC_CONFIG_CMD_INTEGRATED = 0x0, |
3836 | - SOC_CONFIG_CMD_DISCRETE = 0x1, |
3837 | -}; |
3838 | +#define SOC_CONFIG_CMD_FLAGS_DISCRETE BIT(0) |
3839 | +#define SOC_CONFIG_CMD_FLAGS_LOW_LATENCY BIT(1) |
3840 | |
3841 | /** |
3842 | * struct iwl_soc_configuration_cmd - Set device stabilization latency |
3843 | * |
3844 | - * @device_type: the device type as defined in &enum iwl_soc_device_types |
3845 | - * @soc_latency: time for SOC to ensure stable power & XTAL |
3846 | + * @flags: soc settings flags. In VER_1, we can only set the DISCRETE |
3847 | + * flag, because the FW treats the whole value as an integer. In |
3848 | + * VER_2, we can set the bits independently. |
3849 | + * @latency: time for SOC to ensure stable power & XTAL |
3850 | */ |
3851 | struct iwl_soc_configuration_cmd { |
3852 | - __le32 device_type; |
3853 | - __le32 soc_latency; |
3854 | -} __packed; /* SOC_CONFIGURATION_CMD_S_VER_1 */ |
3855 | + __le32 flags; |
3856 | + __le32 latency; |
3857 | +} __packed; /* |
3858 | + * SOC_CONFIGURATION_CMD_S_VER_1 (see description above) |
3859 | + * SOC_CONFIGURATION_CMD_S_VER_2 |
3860 | + */ |
3861 | |
3862 | #endif /* __iwl_fw_api_soc_h__ */ |
3863 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h b/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h |
3864 | index 450227f..970e9e5 100644 |
3865 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h |
3866 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h |
3867 | @@ -8,7 +8,7 @@ |
3868 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3869 | * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH |
3870 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3871 | - * Copyright(c) 2018 Intel Corporation |
3872 | + * Copyright(c) 2018 - 2019 Intel Corporation |
3873 | * |
3874 | * This program is free software; you can redistribute it and/or modify |
3875 | * it under the terms of version 2 of the GNU General Public License as |
3876 | @@ -31,7 +31,7 @@ |
3877 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3878 | * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH |
3879 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3880 | - * Copyright(c) 2018 Intel Corporation |
3881 | + * Copyright(c) 2018 - 2019 Intel Corporation |
3882 | * All rights reserved. |
3883 | * |
3884 | * Redistribution and use in source and binary forms, with or without |
3885 | @@ -288,8 +288,7 @@ struct iwl_mvm_keyinfo { |
3886 | * @addr: station's MAC address |
3887 | * @reserved2: reserved |
3888 | * @sta_id: index of station in uCode's station table |
3889 | - * @modify_mask: STA_MODIFY_*, selects which parameters to modify vs. leave |
3890 | - * alone. 1 - modify, 0 - don't change. |
3891 | + * @modify_mask: from &enum iwl_sta_modify_flag, selects what to change |
3892 | * @reserved3: reserved |
3893 | * @station_flags: look at &enum iwl_sta_flags |
3894 | * @station_flags_msk: what of %station_flags have changed, |
3895 | @@ -369,8 +368,7 @@ enum iwl_sta_type { |
3896 | * @addr: station's MAC address |
3897 | * @reserved2: reserved |
3898 | * @sta_id: index of station in uCode's station table |
3899 | - * @modify_mask: STA_MODIFY_*, selects which parameters to modify vs. leave |
3900 | - * alone. 1 - modify, 0 - don't change. |
3901 | + * @modify_mask: from &enum iwl_sta_modify_flag, selects what to change |
3902 | * @reserved3: reserved |
3903 | * @station_flags: look at &enum iwl_sta_flags |
3904 | * @station_flags_msk: what of %station_flags have changed, |
3905 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h b/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h |
3906 | index 416e817..a731f28 100644 |
3907 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h |
3908 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h |
3909 | @@ -459,6 +459,7 @@ struct iwl_mvm_session_prot_cmd { |
3910 | * @mac_id: the mac id for which the session protection started / ended |
3911 | * @status: 1 means success, 0 means failure |
3912 | * @start: 1 means the session protection started, 0 means it ended |
3913 | + * @conf_id: the configuration id of the session that started / eneded |
3914 | * |
3915 | * Note that any session protection will always get two notifications: start |
3916 | * and end even the firmware could not schedule it. |
3917 | @@ -467,6 +468,7 @@ struct iwl_mvm_session_prot_notif { |
3918 | __le32 mac_id; |
3919 | __le32 status; |
3920 | __le32 start; |
3921 | -} __packed; /* SESSION_PROTECTION_NOTIFICATION_API_S_VER_1 */ |
3922 | + __le32 conf_id; |
3923 | +} __packed; /* SESSION_PROTECTION_NOTIFICATION_API_S_VER_2 */ |
3924 | |
3925 | #endif /* __iwl_fw_api_time_event_h__ */ |
3926 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h b/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h |
3927 | index 8511e73..f1d1fe9 100644 |
3928 | --- a/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h |
3929 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h |
3930 | @@ -7,7 +7,7 @@ |
3931 | * |
3932 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3933 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3934 | - * Copyright(c) 2018 Intel Corporation |
3935 | + * Copyright(c) 2018 - 2019 Intel Corporation |
3936 | * |
3937 | * This program is free software; you can redistribute it and/or modify |
3938 | * it under the terms of version 2 of the GNU General Public License as |
3939 | @@ -29,7 +29,7 @@ |
3940 | * |
3941 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
3942 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
3943 | - * Copyright(c) 2018 Intel Corporation |
3944 | + * Copyright(c) 2018 - 2019 Intel Corporation |
3945 | * All rights reserved. |
3946 | * |
3947 | * Redistribution and use in source and binary forms, with or without |
3948 | @@ -323,7 +323,7 @@ struct iwl_tx_cmd_gen2 { |
3949 | } __packed; /* TX_CMD_API_S_VER_7 */ |
3950 | |
3951 | /** |
3952 | - * struct iwl_tx_cmd_gen3 - TX command struct to FW for 22560 devices |
3953 | + * struct iwl_tx_cmd_gen3 - TX command struct to FW for AX210+ devices |
3954 | * ( TX_CMD = 0x1c ) |
3955 | * @len: in bytes of the payload, see below for details |
3956 | * @flags: combination of &enum iwl_tx_cmd_flags |
3957 | @@ -813,6 +813,7 @@ enum iwl_mac_beacon_flags { |
3958 | IWL_MAC_BEACON_ANT_A = BIT(9), |
3959 | IWL_MAC_BEACON_ANT_B = BIT(10), |
3960 | IWL_MAC_BEACON_ANT_C = BIT(11), |
3961 | + IWL_MAC_BEACON_FILS = BIT(12), |
3962 | }; |
3963 | |
3964 | /** |
3965 | @@ -820,6 +821,7 @@ enum iwl_mac_beacon_flags { |
3966 | * @byte_cnt: byte count of the beacon frame. |
3967 | * @flags: least significant byte for rate code. The most significant byte |
3968 | * is &enum iwl_mac_beacon_flags. |
3969 | + * @short_ssid: Short SSID |
3970 | * @reserved: reserved |
3971 | * @template_id: currently equal to the mac context id of the coresponding mac. |
3972 | * @tim_idx: the offset of the tim IE in the beacon |
3973 | @@ -831,14 +833,15 @@ enum iwl_mac_beacon_flags { |
3974 | struct iwl_mac_beacon_cmd { |
3975 | __le16 byte_cnt; |
3976 | __le16 flags; |
3977 | - __le64 reserved; |
3978 | + __le32 short_ssid; |
3979 | + __le32 reserved; |
3980 | __le32 template_id; |
3981 | __le32 tim_idx; |
3982 | __le32 tim_size; |
3983 | __le32 ecsa_offset; |
3984 | __le32 csa_offset; |
3985 | struct ieee80211_hdr frame[0]; |
3986 | -} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_9 */ |
3987 | +} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_10 */ |
3988 | |
3989 | struct iwl_beacon_notif { |
3990 | struct iwl_mvm_tx_resp beacon_notify_hdr; |
3991 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c |
3992 | index 440fca2..2e5d9d8 100644 |
3993 | --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c |
3994 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c |
3995 | @@ -646,6 +646,7 @@ static struct scatterlist *alloc_sgtable(int size) |
3996 | if (new_page) |
3997 | __free_page(new_page); |
3998 | } |
3999 | + kfree(table); |
4000 | return NULL; |
4001 | } |
4002 | alloc_size = min_t(int, size, PAGE_SIZE); |
4003 | @@ -817,7 +818,8 @@ static void iwl_dump_paging(struct iwl_fw_runtime *fwrt, |
4004 | |
4005 | static struct iwl_fw_error_dump_file * |
4006 | iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, |
4007 | - struct iwl_fw_dump_ptrs *fw_error_dump) |
4008 | + struct iwl_fw_dump_ptrs *fw_error_dump, |
4009 | + struct iwl_fwrt_dump_data *data) |
4010 | { |
4011 | struct iwl_fw_error_dump_file *dump_file; |
4012 | struct iwl_fw_error_dump_data *dump_data; |
4013 | @@ -899,15 +901,15 @@ iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, |
4014 | } |
4015 | |
4016 | /* If we only want a monitor dump, reset the file length */ |
4017 | - if (fwrt->dump.monitor_only) { |
4018 | + if (data->monitor_only) { |
4019 | file_len = sizeof(*dump_file) + sizeof(*dump_data) * 2 + |
4020 | sizeof(*dump_info) + sizeof(*dump_smem_cfg); |
4021 | } |
4022 | |
4023 | if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && |
4024 | - fwrt->dump.desc) |
4025 | + data->desc) |
4026 | file_len += sizeof(*dump_data) + sizeof(*dump_trig) + |
4027 | - fwrt->dump.desc->len; |
4028 | + data->desc->len; |
4029 | |
4030 | dump_file = vzalloc(file_len); |
4031 | if (!dump_file) |
4032 | @@ -928,7 +930,7 @@ iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, |
4033 | cpu_to_le32(CSR_HW_REV_STEP(fwrt->trans->hw_rev)); |
4034 | memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable, |
4035 | sizeof(dump_info->fw_human_readable)); |
4036 | - strncpy(dump_info->dev_human_readable, fwrt->trans->cfg->name, |
4037 | + strncpy(dump_info->dev_human_readable, fwrt->trans->name, |
4038 | sizeof(dump_info->dev_human_readable) - 1); |
4039 | strncpy(dump_info->bus_human_readable, fwrt->dev->bus->name, |
4040 | sizeof(dump_info->bus_human_readable) - 1); |
4041 | @@ -983,19 +985,19 @@ iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, |
4042 | iwl_read_radio_regs(fwrt, &dump_data); |
4043 | |
4044 | if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && |
4045 | - fwrt->dump.desc) { |
4046 | + data->desc) { |
4047 | dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_ERROR_INFO); |
4048 | dump_data->len = cpu_to_le32(sizeof(*dump_trig) + |
4049 | - fwrt->dump.desc->len); |
4050 | + data->desc->len); |
4051 | dump_trig = (void *)dump_data->data; |
4052 | - memcpy(dump_trig, &fwrt->dump.desc->trig_desc, |
4053 | - sizeof(*dump_trig) + fwrt->dump.desc->len); |
4054 | + memcpy(dump_trig, &data->desc->trig_desc, |
4055 | + sizeof(*dump_trig) + data->desc->len); |
4056 | |
4057 | dump_data = iwl_fw_error_next_data(dump_data); |
4058 | } |
4059 | |
4060 | /* In case we only want monitor dump, skip to dump trasport data */ |
4061 | - if (fwrt->dump.monitor_only) |
4062 | + if (data->monitor_only) |
4063 | goto out; |
4064 | |
4065 | if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM)) { |
4066 | @@ -1107,6 +1109,38 @@ static int iwl_dump_ini_csr_iter(struct iwl_fw_runtime *fwrt, |
4067 | return sizeof(*range) + le32_to_cpu(range->range_data_size); |
4068 | } |
4069 | |
4070 | +static int iwl_dump_ini_config_iter(struct iwl_fw_runtime *fwrt, |
4071 | + struct iwl_dump_ini_region_data *reg_data, |
4072 | + void *range_ptr, int idx) |
4073 | +{ |
4074 | + struct iwl_trans *trans = fwrt->trans; |
4075 | + struct iwl_fw_ini_region_tlv *reg = (void *)reg_data->reg_tlv->data; |
4076 | + struct iwl_fw_ini_error_dump_range *range = range_ptr; |
4077 | + __le32 *val = range->data; |
4078 | + u32 addr = le32_to_cpu(reg->addrs[idx]) + |
4079 | + le32_to_cpu(reg->dev_addr.offset); |
4080 | + int i; |
4081 | + |
4082 | + /* we shouldn't get here if the trans doesn't have read_config32 */ |
4083 | + if (WARN_ON_ONCE(!trans->ops->read_config32)) |
4084 | + return -EOPNOTSUPP; |
4085 | + |
4086 | + range->internal_base_addr = cpu_to_le32(addr); |
4087 | + range->range_data_size = reg->dev_addr.size; |
4088 | + for (i = 0; i < le32_to_cpu(reg->dev_addr.size); i += 4) { |
4089 | + int ret; |
4090 | + u32 tmp; |
4091 | + |
4092 | + ret = trans->ops->read_config32(trans, addr + i, &tmp); |
4093 | + if (ret < 0) |
4094 | + return ret; |
4095 | + |
4096 | + *val++ = cpu_to_le32(tmp); |
4097 | + } |
4098 | + |
4099 | + return sizeof(*range) + le32_to_cpu(range->range_data_size); |
4100 | +} |
4101 | + |
4102 | static int iwl_dump_ini_dev_mem_iter(struct iwl_fw_runtime *fwrt, |
4103 | struct iwl_dump_ini_region_data *reg_data, |
4104 | void *range_ptr, int idx) |
4105 | @@ -1229,13 +1263,15 @@ static bool iwl_ini_txf_iter(struct iwl_fw_runtime *fwrt, |
4106 | iter->lmac = 0; |
4107 | } |
4108 | |
4109 | - if (!iter->internal_txf) |
4110 | + if (!iter->internal_txf) { |
4111 | for (iter->fifo++; iter->fifo < txf_num; iter->fifo++) { |
4112 | iter->fifo_size = |
4113 | cfg->lmac[iter->lmac].txfifo_size[iter->fifo]; |
4114 | if (iter->fifo_size && (lmac_bitmap & BIT(iter->fifo))) |
4115 | return true; |
4116 | } |
4117 | + iter->fifo--; |
4118 | + } |
4119 | |
4120 | iter->internal_txf = 1; |
4121 | |
4122 | @@ -1702,13 +1738,7 @@ iwl_dump_ini_mon_smem_get_size(struct iwl_fw_runtime *fwrt, |
4123 | struct iwl_dump_ini_region_data *reg_data) |
4124 | { |
4125 | struct iwl_fw_ini_region_tlv *reg = (void *)reg_data->reg_tlv->data; |
4126 | - struct iwl_fw_ini_allocation_tlv *fw_mon_cfg; |
4127 | - u32 alloc_id = le32_to_cpu(reg->internal_buffer.alloc_id), size; |
4128 | - |
4129 | - fw_mon_cfg = &fwrt->trans->dbg.fw_mon_cfg[alloc_id]; |
4130 | - if (le32_to_cpu(fw_mon_cfg->buf_location) != |
4131 | - IWL_FW_INI_LOCATION_SRAM_PATH) |
4132 | - return 0; |
4133 | + u32 size; |
4134 | |
4135 | size = le32_to_cpu(reg->internal_buffer.size); |
4136 | if (!size) |
4137 | @@ -2049,7 +2079,12 @@ static const struct iwl_dump_ini_mem_ops iwl_dump_ini_region_ops[] = { |
4138 | .fill_range = iwl_dump_ini_csr_iter, |
4139 | }, |
4140 | [IWL_FW_INI_REGION_DRAM_IMR] = {}, |
4141 | - [IWL_FW_INI_REGION_PCI_IOSF_CONFIG] = {}, |
4142 | + [IWL_FW_INI_REGION_PCI_IOSF_CONFIG] = { |
4143 | + .get_num_of_ranges = iwl_dump_ini_mem_ranges, |
4144 | + .get_size = iwl_dump_ini_mem_get_size, |
4145 | + .fill_mem_hdr = iwl_dump_ini_mem_fill_header, |
4146 | + .fill_range = iwl_dump_ini_config_iter, |
4147 | + }, |
4148 | }; |
4149 | |
4150 | static u32 iwl_dump_ini_trigger(struct iwl_fw_runtime *fwrt, |
4151 | @@ -2142,7 +2177,21 @@ static u32 iwl_dump_ini_file_gen(struct iwl_fw_runtime *fwrt, |
4152 | return le32_to_cpu(hdr->file_len); |
4153 | } |
4154 | |
4155 | -static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt) |
4156 | +static inline void iwl_fw_free_dump_desc(struct iwl_fw_runtime *fwrt, |
4157 | + const struct iwl_fw_dump_desc **desc) |
4158 | +{ |
4159 | + if (desc && *desc != &iwl_dump_desc_assert) |
4160 | + kfree(*desc); |
4161 | + |
4162 | + *desc = NULL; |
4163 | + fwrt->dump.lmac_err_id[0] = 0; |
4164 | + if (fwrt->smem_cfg.num_lmacs > 1) |
4165 | + fwrt->dump.lmac_err_id[1] = 0; |
4166 | + fwrt->dump.umac_err_id = 0; |
4167 | +} |
4168 | + |
4169 | +static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt, |
4170 | + struct iwl_fwrt_dump_data *dump_data) |
4171 | { |
4172 | struct iwl_fw_dump_ptrs fw_error_dump = {}; |
4173 | struct iwl_fw_error_dump_file *dump_file; |
4174 | @@ -2150,11 +2199,11 @@ static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt) |
4175 | u32 file_len; |
4176 | u32 dump_mask = fwrt->fw->dbg.dump_mask; |
4177 | |
4178 | - dump_file = iwl_fw_error_dump_file(fwrt, &fw_error_dump); |
4179 | + dump_file = iwl_fw_error_dump_file(fwrt, &fw_error_dump, dump_data); |
4180 | if (!dump_file) |
4181 | - goto out; |
4182 | + return; |
4183 | |
4184 | - if (fwrt->dump.monitor_only) |
4185 | + if (dump_data->monitor_only) |
4186 | dump_mask &= IWL_FW_ERROR_DUMP_FW_MONITOR; |
4187 | |
4188 | fw_error_dump.trans_ptr = iwl_trans_dump_data(fwrt->trans, dump_mask); |
4189 | @@ -2183,9 +2232,6 @@ static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt) |
4190 | } |
4191 | vfree(fw_error_dump.fwrt_ptr); |
4192 | vfree(fw_error_dump.trans_ptr); |
4193 | - |
4194 | -out: |
4195 | - iwl_fw_free_dump_desc(fwrt); |
4196 | } |
4197 | |
4198 | static void iwl_dump_ini_list_free(struct list_head *list) |
4199 | @@ -2214,7 +2260,7 @@ static void iwl_fw_error_ini_dump(struct iwl_fw_runtime *fwrt, |
4200 | u32 file_len = iwl_dump_ini_file_gen(fwrt, dump_data, &dump_list); |
4201 | |
4202 | if (!file_len) |
4203 | - goto out; |
4204 | + return; |
4205 | |
4206 | sg_dump_data = alloc_sgtable(file_len); |
4207 | if (sg_dump_data) { |
4208 | @@ -2231,9 +2277,6 @@ static void iwl_fw_error_ini_dump(struct iwl_fw_runtime *fwrt, |
4209 | GFP_KERNEL); |
4210 | } |
4211 | iwl_dump_ini_list_free(&dump_list); |
4212 | - |
4213 | -out: |
4214 | - iwl_fw_error_dump_data_free(dump_data); |
4215 | } |
4216 | |
4217 | const struct iwl_fw_dump_desc iwl_dump_desc_assert = { |
4218 | @@ -2248,27 +2291,40 @@ int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, |
4219 | bool monitor_only, |
4220 | unsigned int delay) |
4221 | { |
4222 | + struct iwl_fwrt_wk_data *wk_data; |
4223 | + unsigned long idx; |
4224 | + |
4225 | if (iwl_trans_dbg_ini_valid(fwrt->trans)) { |
4226 | - iwl_fw_free_dump_desc(fwrt); |
4227 | + iwl_fw_free_dump_desc(fwrt, &desc); |
4228 | return 0; |
4229 | } |
4230 | |
4231 | - /* use wks[0] since dump flow prior to ini does not need to support |
4232 | - * consecutive triggers collection |
4233 | + /* |
4234 | + * Check there is an available worker. |
4235 | + * ffz return value is undefined if no zero exists, |
4236 | + * so check against ~0UL first. |
4237 | */ |
4238 | - if (test_and_set_bit(fwrt->dump.wks[0].idx, &fwrt->dump.active_wks)) |
4239 | + if (fwrt->dump.active_wks == ~0UL) |
4240 | + return -EBUSY; |
4241 | + |
4242 | + idx = ffz(fwrt->dump.active_wks); |
4243 | + |
4244 | + if (idx >= IWL_FW_RUNTIME_DUMP_WK_NUM || |
4245 | + test_and_set_bit(fwrt->dump.wks[idx].idx, &fwrt->dump.active_wks)) |
4246 | return -EBUSY; |
4247 | |
4248 | - if (WARN_ON(fwrt->dump.desc)) |
4249 | - iwl_fw_free_dump_desc(fwrt); |
4250 | + wk_data = &fwrt->dump.wks[idx]; |
4251 | + |
4252 | + if (WARN_ON(wk_data->dump_data.desc)) |
4253 | + iwl_fw_free_dump_desc(fwrt, &wk_data->dump_data.desc); |
4254 | + |
4255 | + wk_data->dump_data.desc = desc; |
4256 | + wk_data->dump_data.monitor_only = monitor_only; |
4257 | |
4258 | IWL_WARN(fwrt, "Collecting data: trigger %d fired.\n", |
4259 | le32_to_cpu(desc->trig_desc.type)); |
4260 | |
4261 | - fwrt->dump.desc = desc; |
4262 | - fwrt->dump.monitor_only = monitor_only; |
4263 | - |
4264 | - schedule_delayed_work(&fwrt->dump.wks[0].wk, usecs_to_jiffies(delay)); |
4265 | + schedule_delayed_work(&wk_data->wk, usecs_to_jiffies(delay)); |
4266 | |
4267 | return 0; |
4268 | } |
4269 | @@ -2350,9 +2406,6 @@ int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, |
4270 | u32 occur, delay; |
4271 | unsigned long idx; |
4272 | |
4273 | - if (test_bit(STATUS_GEN_ACTIVE_TRIGS, &fwrt->status)) |
4274 | - return -EBUSY; |
4275 | - |
4276 | if (!iwl_fw_ini_trigger_on(fwrt, trig)) { |
4277 | IWL_WARN(fwrt, "WRT: Trigger %d is not active, aborting dump\n", |
4278 | tp_id); |
4279 | @@ -2447,7 +2500,8 @@ int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 conf_id) |
4280 | IWL_WARN(fwrt, "FW already configured (%d) - re-configuring\n", |
4281 | fwrt->dump.conf); |
4282 | |
4283 | -#ifdef CPTCFG_IWLWIFI_SUPPORT_DEBUG_OVERRIDES |
4284 | +#if IS_ENABLED(CPTCFG_IWLWIFI_SUPPORT_DEBUG_OVERRIDES) && \ |
4285 | + (IS_ENABLED(CPTCFG_IWLMVM) || IS_ENABLED(CPTCFG_IWLFMAC)) |
4286 | /* start default config marker cmd for syncing logs */ |
4287 | if (fwrt->trans->dbg_cfg.enable_timestamp_marker_cmd) |
4288 | iwl_fw_trigger_timestamp(fwrt, 1); |
4289 | @@ -2482,13 +2536,14 @@ IWL_EXPORT_SYMBOL(iwl_fw_start_dbg_conf); |
4290 | static void iwl_fw_dbg_collect_sync(struct iwl_fw_runtime *fwrt, u8 wk_idx) |
4291 | { |
4292 | struct iwl_fw_dbg_params params = {0}; |
4293 | + struct iwl_fwrt_dump_data *dump_data = |
4294 | + &fwrt->dump.wks[wk_idx].dump_data; |
4295 | |
4296 | if (!test_bit(wk_idx, &fwrt->dump.active_wks)) |
4297 | return; |
4298 | |
4299 | if (!test_bit(STATUS_DEVICE_ENABLED, &fwrt->trans->status)) { |
4300 | IWL_ERR(fwrt, "Device is not enabled - cannot dump error\n"); |
4301 | - iwl_fw_free_dump_desc(fwrt); |
4302 | goto out; |
4303 | } |
4304 | |
4305 | @@ -2497,6 +2552,12 @@ static void iwl_fw_dbg_collect_sync(struct iwl_fw_runtime *fwrt, u8 wk_idx) |
4306 | IWL_ERR(fwrt, "Skip fw error dump since bus is dead\n"); |
4307 | goto out; |
4308 | } |
4309 | +#ifdef CPTCFG_IWLWIFI_SUPPORT_DEBUG_OVERRIDES |
4310 | + if (fwrt->trans->dbg_cfg.disable_wrt_dump) { |
4311 | + IWL_DEBUG_FW_INFO(fwrt, "WRT: Data collection disabled\n"); |
4312 | + goto out; |
4313 | + } |
4314 | +#endif |
4315 | |
4316 | if (iwl_fw_dbg_stop_restart_recording(fwrt, ¶ms, true)) { |
4317 | IWL_ERR(fwrt, "Failed to stop DBGC recording, aborting dump\n"); |
4318 | @@ -2507,12 +2568,17 @@ static void iwl_fw_dbg_collect_sync(struct iwl_fw_runtime *fwrt, u8 wk_idx) |
4319 | if (iwl_trans_dbg_ini_valid(fwrt->trans)) |
4320 | iwl_fw_error_ini_dump(fwrt, &fwrt->dump.wks[wk_idx].dump_data); |
4321 | else |
4322 | - iwl_fw_error_dump(fwrt); |
4323 | + iwl_fw_error_dump(fwrt, &fwrt->dump.wks[wk_idx].dump_data); |
4324 | IWL_DEBUG_FW_INFO(fwrt, "WRT: Data collection done\n"); |
4325 | |
4326 | iwl_fw_dbg_stop_restart_recording(fwrt, ¶ms, false); |
4327 | |
4328 | out: |
4329 | + if (iwl_trans_dbg_ini_valid(fwrt->trans)) |
4330 | + iwl_fw_error_dump_data_free(dump_data); |
4331 | + else |
4332 | + iwl_fw_free_dump_desc(fwrt, &dump_data->desc); |
4333 | + |
4334 | clear_bit(wk_idx, &fwrt->dump.active_wks); |
4335 | } |
4336 | |
4337 | @@ -2672,12 +2738,7 @@ int iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, |
4338 | { |
4339 | int ret = 0; |
4340 | |
4341 | - /* if the FW crashed or not debug monitor cfg was given, there is |
4342 | - * no point in changing the recording state |
4343 | - */ |
4344 | - if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status) || |
4345 | - (!fwrt->trans->dbg.dest_tlv && |
4346 | - fwrt->trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID)) |
4347 | + if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) |
4348 | return 0; |
4349 | |
4350 | if (fw_has_capa(&fwrt->fw->ucode_capa, |
4351 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h |
4352 | index 27bf376..ac2bd4f 100644 |
4353 | --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h |
4354 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h |
4355 | @@ -98,17 +98,6 @@ struct iwl_fw_dbg_params { |
4356 | |
4357 | extern const struct iwl_fw_dump_desc iwl_dump_desc_assert; |
4358 | |
4359 | -static inline void iwl_fw_free_dump_desc(struct iwl_fw_runtime *fwrt) |
4360 | -{ |
4361 | - if (fwrt->dump.desc != &iwl_dump_desc_assert) |
4362 | - kfree(fwrt->dump.desc); |
4363 | - fwrt->dump.desc = NULL; |
4364 | - fwrt->dump.lmac_err_id[0] = 0; |
4365 | - if (fwrt->smem_cfg.num_lmacs > 1) |
4366 | - fwrt->dump.lmac_err_id[1] = 0; |
4367 | - fwrt->dump.umac_err_id = 0; |
4368 | -} |
4369 | - |
4370 | int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, |
4371 | const struct iwl_fw_dump_desc *desc, |
4372 | bool monitor_only, unsigned int delay); |
4373 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c |
4374 | index 5fe9820..fb28d5e 100644 |
4375 | --- a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c |
4376 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c |
4377 | @@ -320,33 +320,6 @@ out: |
4378 | |
4379 | FWRT_DEBUGFS_WRITE_FILE_OPS(send_hcmd, 512); |
4380 | |
4381 | -static ssize_t iwl_dbgfs_fw_dbg_domain_write(struct iwl_fw_runtime *fwrt, |
4382 | - char *buf, size_t count) |
4383 | -{ |
4384 | - u32 new_domain; |
4385 | - long val; |
4386 | - int ret; |
4387 | - |
4388 | - if (!iwl_trans_fw_running(fwrt->trans)) |
4389 | - return -EIO; |
4390 | - |
4391 | - ret = kstrtol(buf, 0, &val); |
4392 | - if (ret) |
4393 | - return ret; |
4394 | - |
4395 | - new_domain = (u32)val; |
4396 | - if (new_domain != fwrt->trans->dbg.domains_bitmap) { |
4397 | - ret = iwl_dbg_tlv_gen_active_trigs(fwrt, new_domain); |
4398 | - if (ret) |
4399 | - return ret; |
4400 | - |
4401 | - iwl_dbg_tlv_time_point(fwrt, IWL_FW_INI_TIME_POINT_PERIODIC, |
4402 | - NULL); |
4403 | - } |
4404 | - |
4405 | - return count; |
4406 | -} |
4407 | - |
4408 | static ssize_t iwl_dbgfs_fw_dbg_domain_read(struct iwl_fw_runtime *fwrt, |
4409 | size_t size, char *buf) |
4410 | { |
4411 | @@ -354,7 +327,7 @@ static ssize_t iwl_dbgfs_fw_dbg_domain_read(struct iwl_fw_runtime *fwrt, |
4412 | fwrt->trans->dbg.domains_bitmap); |
4413 | } |
4414 | |
4415 | -FWRT_DEBUGFS_READ_WRITE_FILE_OPS(fw_dbg_domain, 20); |
4416 | +FWRT_DEBUGFS_READ_FILE_OPS(fw_dbg_domain, 20); |
4417 | |
4418 | void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, |
4419 | struct dentry *dbgfs_dir) |
4420 | @@ -362,5 +335,5 @@ void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, |
4421 | INIT_DELAYED_WORK(&fwrt->timestamp.wk, iwl_fw_timestamp_marker_wk); |
4422 | FWRT_DEBUGFS_ADD_FILE(timestamp_marker, dbgfs_dir, 0200); |
4423 | FWRT_DEBUGFS_ADD_FILE(send_hcmd, dbgfs_dir, 0200); |
4424 | - FWRT_DEBUGFS_ADD_FILE(fw_dbg_domain, dbgfs_dir, 0600); |
4425 | + FWRT_DEBUGFS_ADD_FILE(fw_dbg_domain, dbgfs_dir, 0400); |
4426 | } |
4427 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/img.c b/drivers/net/wireless/intel/iwlwifi/fw/img.c |
4428 | new file mode 100644 |
4429 | index 0000000..dec95d0 |
4430 | --- /dev/null |
4431 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/img.c |
4432 | @@ -0,0 +1,100 @@ |
4433 | +// SPDX-License-Identifier: GPL-2.0 |
4434 | +/****************************************************************************** |
4435 | + * |
4436 | + * This file is provided under a dual BSD/GPLv2 license. When using or |
4437 | + * redistributing this file, you may do so under either license. |
4438 | + * |
4439 | + * GPL LICENSE SUMMARY |
4440 | + * |
4441 | + * Copyright(c) 2019 Intel Corporation |
4442 | + * |
4443 | + * This program is free software; you can redistribute it and/or modify |
4444 | + * it under the terms of version 2 of the GNU General Public License as |
4445 | + * published by the Free Software Foundation. |
4446 | + * |
4447 | + * This program is distributed in the hope that it will be useful, but |
4448 | + * WITHOUT ANY WARRANTY; without even the implied warranty of |
4449 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4450 | + * General Public License for more details. |
4451 | + * |
4452 | + * The full GNU General Public License is included in this distribution |
4453 | + * in the file called COPYING. |
4454 | + * |
4455 | + * Contact Information: |
4456 | + * Intel Linux Wireless <linuxwifi@intel.com> |
4457 | + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
4458 | + * |
4459 | + * BSD LICENSE |
4460 | + * |
4461 | + * Copyright(c) 2019 Intel Corporation |
4462 | + * All rights reserved. |
4463 | + * |
4464 | + * Redistribution and use in source and binary forms, with or without |
4465 | + * modification, are permitted provided that the following conditions |
4466 | + * are met: |
4467 | + * |
4468 | + * * Redistributions of source code must retain the above copyright |
4469 | + * notice, this list of conditions and the following disclaimer. |
4470 | + * * Redistributions in binary form must reproduce the above copyright |
4471 | + * notice, this list of conditions and the following disclaimer in |
4472 | + * the documentation and/or other materials provided with the |
4473 | + * distribution. |
4474 | + * * Neither the name Intel Corporation nor the names of its |
4475 | + * contributors may be used to endorse or promote products derived |
4476 | + * from this software without specific prior written permission. |
4477 | + * |
4478 | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
4479 | + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
4480 | + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
4481 | + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
4482 | + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
4483 | + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
4484 | + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
4485 | + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
4486 | + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
4487 | + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
4488 | + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
4489 | + *****************************************************************************/ |
4490 | + |
4491 | +#include "img.h" |
4492 | + |
4493 | +u8 iwl_fw_lookup_cmd_ver(const struct iwl_fw *fw, u8 grp, u8 cmd) |
4494 | +{ |
4495 | + const struct iwl_fw_cmd_version *entry; |
4496 | + unsigned int i; |
4497 | + |
4498 | + if (!fw->ucode_capa.cmd_versions || |
4499 | + !fw->ucode_capa.n_cmd_versions) |
4500 | + return IWL_FW_CMD_VER_UNKNOWN; |
4501 | + |
4502 | + entry = fw->ucode_capa.cmd_versions; |
4503 | + for (i = 0; i < fw->ucode_capa.n_cmd_versions; i++, entry++) { |
4504 | + if (entry->group == grp && entry->cmd == cmd) |
4505 | + return entry->cmd_ver; |
4506 | + } |
4507 | + |
4508 | + return IWL_FW_CMD_VER_UNKNOWN; |
4509 | +} |
4510 | +EXPORT_SYMBOL_GPL(iwl_fw_lookup_cmd_ver); |
4511 | + |
4512 | +u8 iwl_fw_lookup_notif_ver(const struct iwl_fw *fw, u8 grp, u8 cmd, u8 def) |
4513 | +{ |
4514 | + const struct iwl_fw_cmd_version *entry; |
4515 | + unsigned int i; |
4516 | + |
4517 | + if (!fw->ucode_capa.cmd_versions || |
4518 | + !fw->ucode_capa.n_cmd_versions) |
4519 | + return def; |
4520 | + |
4521 | + entry = fw->ucode_capa.cmd_versions; |
4522 | + for (i = 0; i < fw->ucode_capa.n_cmd_versions; i++, entry++) { |
4523 | + if (entry->group == grp && entry->cmd == cmd) { |
4524 | + if (entry->notif_ver == IWL_FW_CMD_VER_UNKNOWN) |
4525 | + return def; |
4526 | + return entry->notif_ver; |
4527 | + } |
4528 | + } |
4529 | + |
4530 | + return def; |
4531 | +} |
4532 | +EXPORT_SYMBOL_GPL(iwl_fw_lookup_notif_ver); |
4533 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/img.h b/drivers/net/wireless/intel/iwlwifi/fw/img.h |
4534 | index 994880a..a8630bf 100644 |
4535 | --- a/drivers/net/wireless/intel/iwlwifi/fw/img.h |
4536 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/img.h |
4537 | @@ -251,7 +251,7 @@ struct iwl_fw_dbg { |
4538 | struct iwl_fw { |
4539 | u32 ucode_ver; |
4540 | |
4541 | - char fw_version[ETHTOOL_FWVERS_LEN]; |
4542 | + char fw_version[64]; |
4543 | |
4544 | /* ucode images */ |
4545 | struct fw_img img[IWL_UCODE_TYPE_MAX]; |
4546 | @@ -313,22 +313,7 @@ iwl_get_ucode_image(const struct iwl_fw *fw, enum iwl_ucode_type ucode_type) |
4547 | return &fw->img[ucode_type]; |
4548 | } |
4549 | |
4550 | -static inline u8 iwl_mvm_lookup_cmd_ver(const struct iwl_fw *fw, u8 grp, u8 cmd) |
4551 | -{ |
4552 | - const struct iwl_fw_cmd_version *entry; |
4553 | - unsigned int i; |
4554 | - |
4555 | - if (!fw->ucode_capa.cmd_versions || |
4556 | - !fw->ucode_capa.n_cmd_versions) |
4557 | - return IWL_FW_CMD_VER_UNKNOWN; |
4558 | - |
4559 | - entry = fw->ucode_capa.cmd_versions; |
4560 | - for (i = 0; i < fw->ucode_capa.n_cmd_versions; i++, entry++) { |
4561 | - if (entry->group == grp && entry->cmd == cmd) |
4562 | - return entry->cmd_ver; |
4563 | - } |
4564 | - |
4565 | - return IWL_FW_CMD_VER_UNKNOWN; |
4566 | -} |
4567 | +u8 iwl_fw_lookup_cmd_ver(const struct iwl_fw *fw, u8 grp, u8 cmd); |
4568 | |
4569 | +u8 iwl_fw_lookup_notif_ver(const struct iwl_fw *fw, u8 grp, u8 cmd, u8 def); |
4570 | #endif /* __iwl_fw_img_h__ */ |
4571 | diff --git a/drivers/net/wireless/intel/iwlwifi/fw/runtime.h b/drivers/net/wireless/intel/iwlwifi/fw/runtime.h |
4572 | index 069c16e..20c6d86 100644 |
4573 | --- a/drivers/net/wireless/intel/iwlwifi/fw/runtime.h |
4574 | +++ b/drivers/net/wireless/intel/iwlwifi/fw/runtime.h |
4575 | @@ -65,13 +65,9 @@ |
4576 | #include "img.h" |
4577 | #include "fw/api/debug.h" |
4578 | #include "fw/api/paging.h" |
4579 | +#include "fw/api/power.h" |
4580 | #include "iwl-eeprom-parse.h" |
4581 | - |
4582 | -#ifndef CPTCFG_IWLWIFI_SUPPORT_DEBUG_OVERRIDES |
4583 | -#define IWL_FW_DBG_DOMAIN IWL_FW_INI_DOMAIN_ALWAYS_ON |
4584 | -#else |
4585 | -#define IWL_FW_DBG_DOMAIN (fwrt->trans->dbg_cfg.FW_DBG_DOMAIN) |
4586 | -#endif |
4587 | +#include "fw/acpi.h" |
4588 | |
4589 | struct iwl_fw_runtime_ops { |
4590 | int (*dump_start)(void *ctx); |
4591 | @@ -101,8 +97,16 @@ struct iwl_fwrt_shared_mem_cfg { |
4592 | * @fw_pkt: packet received from FW |
4593 | */ |
4594 | struct iwl_fwrt_dump_data { |
4595 | - struct iwl_fw_ini_trigger_tlv *trig; |
4596 | - struct iwl_rx_packet *fw_pkt; |
4597 | + union { |
4598 | + struct { |
4599 | + struct iwl_fw_ini_trigger_tlv *trig; |
4600 | + struct iwl_rx_packet *fw_pkt; |
4601 | + }; |
4602 | + struct { |
4603 | + const struct iwl_fw_dump_desc *desc; |
4604 | + bool monitor_only; |
4605 | + }; |
4606 | + }; |
4607 | }; |
4608 | |
4609 | /** |
4610 | @@ -131,14 +135,6 @@ struct iwl_txf_iter_data { |
4611 | }; |
4612 | |
4613 | /** |
4614 | - * enum iwl_fw_runtime_status - fw runtime status flags |
4615 | - * @STATUS_GEN_ACTIVE_TRIGS: generating active trigger list |
4616 | - */ |
4617 | -enum iwl_fw_runtime_status { |
4618 | - STATUS_GEN_ACTIVE_TRIGS, |
4619 | -}; |
4620 | - |
4621 | -/** |
4622 | * struct iwl_fw_runtime - runtime data for firmware |
4623 | * @fw: firmware image |
4624 | * @cfg: NIC configuration |
4625 | @@ -151,7 +147,6 @@ enum iwl_fw_runtime_status { |
4626 | * @smem_cfg: saved firmware SMEM configuration |
4627 | * @cur_fw_img: current firmware image, must be maintained by |
4628 | * the driver by calling &iwl_fw_set_current_image() |
4629 | - * @status: &enum iwl_fw_runtime_status |
4630 | * @dump: debug dump data |
4631 | */ |
4632 | struct iwl_fw_runtime { |
4633 | @@ -172,12 +167,8 @@ struct iwl_fw_runtime { |
4634 | /* memory configuration */ |
4635 | struct iwl_fwrt_shared_mem_cfg smem_cfg; |
4636 | |
4637 | - unsigned long status; |
4638 | - |
4639 | /* debug */ |
4640 | struct { |
4641 | - const struct iwl_fw_dump_desc *desc; |
4642 | - bool monitor_only; |
4643 | struct iwl_fwrt_wk_data wks[IWL_FW_RUNTIME_DUMP_WK_NUM]; |
4644 | unsigned long active_wks; |
4645 | |
4646 | @@ -208,6 +199,14 @@ struct iwl_fw_runtime { |
4647 | } timestamp; |
4648 | bool tpc_enabled; |
4649 | #endif /* CPTCFG_IWLWIFI_DEBUGFS */ |
4650 | +#ifdef CONFIG_ACPI |
4651 | + struct iwl_sar_profile sar_profiles[ACPI_SAR_PROFILE_NUM]; |
4652 | + u8 sar_chain_a_profile; |
4653 | + u8 sar_chain_b_profile; |
4654 | + struct iwl_geo_profile geo_profiles[ACPI_NUM_GEO_PROFILES]; |
4655 | + u32 geo_rev; |
4656 | + struct iwl_ppag_table_cmd ppag_table; |
4657 | +#endif |
4658 | }; |
4659 | |
4660 | void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, |
4661 | diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h |
4662 | index 2afe682..e3d6277 100644 |
4663 | --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h |
4664 | +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h |
4665 | @@ -88,7 +88,6 @@ enum iwl_device_family { |
4666 | IWL_DEVICE_FAMILY_8000, |
4667 | IWL_DEVICE_FAMILY_9000, |
4668 | IWL_DEVICE_FAMILY_22000, |
4669 | - IWL_DEVICE_FAMILY_22560, |
4670 | IWL_DEVICE_FAMILY_AX210, |
4671 | }; |
4672 | |
4673 | @@ -286,76 +285,38 @@ struct iwl_pwr_tx_backoff { |
4674 | }; |
4675 | |
4676 | /** |
4677 | - * struct iwl_csr_params |
4678 | - * |
4679 | - * @flag_sw_reset: reset the device |
4680 | - * @flag_mac_clock_ready: |
4681 | - * Indicates MAC (ucode processor, etc.) is powered up and can run. |
4682 | - * Internal resources are accessible. |
4683 | - * NOTE: This does not indicate that the processor is actually running. |
4684 | - * NOTE: This does not indicate that device has completed |
4685 | - * init or post-power-down restore of internal SRAM memory. |
4686 | - * Use CSR_UCODE_DRV_GP1_BIT_MAC_SLEEP as indication that |
4687 | - * SRAM is restored and uCode is in normal operation mode. |
4688 | - * This note is relevant only for pre 5xxx devices. |
4689 | - * NOTE: After device reset, this bit remains "0" until host sets |
4690 | - * INIT_DONE |
4691 | - * @flag_init_done: Host sets this to put device into fully operational |
4692 | - * D0 power mode. Host resets this after SW_RESET to put device into |
4693 | - * low power mode. |
4694 | - * @flag_mac_access_req: Host sets this to request and maintain MAC wakeup, |
4695 | - * to allow host access to device-internal resources. Host must wait for |
4696 | - * mac_clock_ready (and !GOING_TO_SLEEP) before accessing non-CSR device |
4697 | - * registers. |
4698 | - * @flag_val_mac_access_en: mac access is enabled |
4699 | - * @flag_master_dis: disable master |
4700 | - * @flag_stop_master: stop master |
4701 | - * @addr_sw_reset: address for resetting the device |
4702 | - * @mac_addr0_otp: first part of MAC address from OTP |
4703 | - * @mac_addr1_otp: second part of MAC address from OTP |
4704 | - * @mac_addr0_strap: first part of MAC address from strap |
4705 | - * @mac_addr1_strap: second part of MAC address from strap |
4706 | - */ |
4707 | -struct iwl_csr_params { |
4708 | - u8 flag_sw_reset; |
4709 | - u8 flag_mac_clock_ready; |
4710 | - u8 flag_init_done; |
4711 | - u8 flag_mac_access_req; |
4712 | - u8 flag_val_mac_access_en; |
4713 | - u8 flag_master_dis; |
4714 | - u8 flag_stop_master; |
4715 | - u8 addr_sw_reset; |
4716 | - u32 mac_addr0_otp; |
4717 | - u32 mac_addr1_otp; |
4718 | - u32 mac_addr0_strap; |
4719 | - u32 mac_addr1_strap; |
4720 | -}; |
4721 | - |
4722 | -/** |
4723 | * struct iwl_cfg_trans - information needed to start the trans |
4724 | * |
4725 | - * These values cannot be changed when multiple configs are used for a |
4726 | - * single PCI ID, because they are needed before the HW REV or RFID |
4727 | - * can be read. |
4728 | + * These values are specific to the device ID and do not change when |
4729 | + * multiple configs are used for a single device ID. They values are |
4730 | + * used, among other things, to boot the NIC so that the HW REV or |
4731 | + * RFID can be read before deciding the remaining parameters to use. |
4732 | * |
4733 | * @base_params: pointer to basic parameters |
4734 | * @csr: csr flags and addresses that are different across devices |
4735 | * @device_family: the device family |
4736 | * @umac_prph_offset: offset to add to UMAC periphery address |
4737 | + * @xtal_latency: power up latency to get the xtal stabilized |
4738 | + * @extra_phy_cfg_flags: extra configuration flags to pass to the PHY |
4739 | * @rf_id: need to read rf_id to determine the firmware image |
4740 | * @use_tfh: use TFH |
4741 | * @gen2: 22000 and on transport operation |
4742 | * @mq_rx_supported: multi-queue rx support |
4743 | + * @integrated: discrete or integrated |
4744 | + * @low_latency_xtal: use the low latency xtal if supported |
4745 | */ |
4746 | struct iwl_cfg_trans_params { |
4747 | const struct iwl_base_params *base_params; |
4748 | - const struct iwl_csr_params *csr; |
4749 | enum iwl_device_family device_family; |
4750 | u32 umac_prph_offset; |
4751 | + u32 xtal_latency; |
4752 | + u32 extra_phy_cfg_flags; |
4753 | u32 rf_id:1, |
4754 | use_tfh:1, |
4755 | gen2:1, |
4756 | mq_rx_supported:1, |
4757 | + integrated:1, |
4758 | + low_latency_xtal:1, |
4759 | bisr_workaround:1; |
4760 | }; |
4761 | |
4762 | @@ -410,7 +371,6 @@ struct iwl_fw_mon_regs { |
4763 | * @mac_addr_from_csr: read HW address from CSR registers |
4764 | * @features: hw features, any combination of feature_whitelist |
4765 | * @pwr_tx_backoffs: translation table between power limits and backoffs |
4766 | - * @max_rx_agg_size: max RX aggregation size of the ADDBA request/response |
4767 | * @max_tx_agg_size: max TX aggregation size of the ADDBA request/response |
4768 | * @max_ht_ampdu_factor: the exponent of the max length of A-MPDU that the |
4769 | * station can receive in HT |
4770 | @@ -423,7 +383,6 @@ struct iwl_fw_mon_regs { |
4771 | * @smem_offset: offset from which the SMEM begins |
4772 | * @smem_len: the length of SMEM |
4773 | * @vht_mu_mimo_supported: VHT MU-MIMO support |
4774 | - * @integrated: discrete or integrated |
4775 | * @cdb: CDB support |
4776 | * @nvm_type: see &enum iwl_nvm_type |
4777 | * @d3_debug_data_base_addr: base address where D3 debug data is stored |
4778 | @@ -433,6 +392,8 @@ struct iwl_fw_mon_regs { |
4779 | * @uhb_supported: ultra high band channels supported |
4780 | * @min_256_ba_txq_size: minimum number of slots required in a TX queue which |
4781 | * supports 256 BA aggregation |
4782 | + * @num_rbds: number of receive buffer descriptors to use |
4783 | + * (only used for multi-queue capable devices) |
4784 | * |
4785 | * We enable the driver to be backward compatible wrt. hardware features. |
4786 | * API differences in uCode shouldn't be handled here but through TLVs |
4787 | @@ -460,7 +421,6 @@ struct iwl_cfg { |
4788 | u32 dccm2_len; |
4789 | u32 smem_offset; |
4790 | u32 smem_len; |
4791 | - u32 soc_latency; |
4792 | u16 nvm_ver; |
4793 | u16 nvm_calib_ver; |
4794 | u32 rx_with_siso_diversity:1, |
4795 | @@ -474,7 +434,6 @@ struct iwl_cfg { |
4796 | disable_dummy_notification:1, |
4797 | apmg_not_supported:1, |
4798 | vht_mu_mimo_supported:1, |
4799 | - integrated:1, |
4800 | cdb:1, |
4801 | dbgc_supported:1, |
4802 | uhb_supported:1; |
4803 | @@ -482,14 +441,13 @@ struct iwl_cfg { |
4804 | u8 valid_rx_ant; |
4805 | u8 non_shared_ant; |
4806 | u8 nvm_hw_section_num; |
4807 | - u8 max_rx_agg_size; |
4808 | u8 max_tx_agg_size; |
4809 | u8 max_ht_ampdu_exponent; |
4810 | u8 max_vht_ampdu_exponent; |
4811 | u8 ucode_api_max; |
4812 | u8 ucode_api_min; |
4813 | + u16 num_rbds; |
4814 | u32 min_umac_error_event_table; |
4815 | - u32 extra_phy_cfg_flags; |
4816 | u32 d3_debug_data_base_addr; |
4817 | u32 d3_debug_data_length; |
4818 | u32 min_txq_size; |
4819 | @@ -499,12 +457,79 @@ struct iwl_cfg { |
4820 | const struct iwl_fw_mon_regs mon_smem_regs; |
4821 | }; |
4822 | |
4823 | -extern const struct iwl_csr_params iwl_csr_v1; |
4824 | -extern const struct iwl_csr_params iwl_csr_v2; |
4825 | +#define IWL_CFG_ANY (~0) |
4826 | + |
4827 | +#define IWL_CFG_MAC_TYPE_PU 0x31 |
4828 | +#define IWL_CFG_MAC_TYPE_PNJ 0x32 |
4829 | +#define IWL_CFG_MAC_TYPE_TH 0x32 |
4830 | +#define IWL_CFG_MAC_TYPE_QU 0x33 |
4831 | +#define IWL_CFG_MAC_TYPE_QUZ 0x35 |
4832 | +#define IWL_CFG_MAC_TYPE_QNJ 0x36 |
4833 | + |
4834 | +#define IWL_CFG_RF_TYPE_TH 0x105 |
4835 | +#define IWL_CFG_RF_TYPE_TH1 0x108 |
4836 | +#define IWL_CFG_RF_TYPE_JF2 0x105 |
4837 | +#define IWL_CFG_RF_TYPE_JF1 0x108 |
4838 | + |
4839 | +#define IWL_CFG_RF_ID_TH 0x1 |
4840 | +#define IWL_CFG_RF_ID_TH1 0x1 |
4841 | +#define IWL_CFG_RF_ID_JF 0x3 |
4842 | +#define IWL_CFG_RF_ID_JF1 0x6 |
4843 | +#define IWL_CFG_RF_ID_JF1_DIV 0xA |
4844 | + |
4845 | +#define IWL_CFG_NO_160 0x0 |
4846 | +#define IWL_CFG_160 0x1 |
4847 | + |
4848 | +#define IWL_CFG_CORES_BT 0x0 |
4849 | +#define IWL_CFG_CORES_BT_GNSS 0x5 |
4850 | + |
4851 | +#define IWL_SUBDEVICE_RF_ID(subdevice) ((u16)((subdevice) & 0x00F0) >> 4) |
4852 | +#define IWL_SUBDEVICE_NO_160(subdevice) ((u16)((subdevice) & 0x0100) >> 9) |
4853 | +#define IWL_SUBDEVICE_CORES(subdevice) ((u16)((subdevice) & 0x1C00) >> 10) |
4854 | + |
4855 | +struct iwl_dev_info { |
4856 | + u16 device; |
4857 | + u16 subdevice; |
4858 | + u16 mac_type; |
4859 | + u16 rf_type; |
4860 | + u8 mac_step; |
4861 | + u8 rf_id; |
4862 | + u8 no_160; |
4863 | + u8 cores; |
4864 | + const struct iwl_cfg *cfg; |
4865 | + const char *name; |
4866 | +}; |
4867 | |
4868 | /* |
4869 | * This list declares the config structures for all devices. |
4870 | */ |
4871 | +extern const struct iwl_cfg_trans_params iwl9000_trans_cfg; |
4872 | +extern const struct iwl_cfg_trans_params iwl9560_trans_cfg; |
4873 | +extern const struct iwl_cfg_trans_params iwl9560_shared_clk_trans_cfg; |
4874 | +extern const struct iwl_cfg_trans_params iwl_qu_trans_cfg; |
4875 | +extern const struct iwl_cfg_trans_params iwl_qnj_trans_cfg; |
4876 | +extern const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg; |
4877 | +extern const struct iwl_cfg_trans_params iwl_ax200_trans_cfg; |
4878 | +extern const char iwl9162_name[]; |
4879 | +extern const char iwl9260_name[]; |
4880 | +extern const char iwl9260_1_name[]; |
4881 | +extern const char iwl9270_name[]; |
4882 | +extern const char iwl9461_name[]; |
4883 | +extern const char iwl9462_name[]; |
4884 | +extern const char iwl9560_name[]; |
4885 | +extern const char iwl9162_160_name[]; |
4886 | +extern const char iwl9260_160_name[]; |
4887 | +extern const char iwl9270_160_name[]; |
4888 | +extern const char iwl9461_160_name[]; |
4889 | +extern const char iwl9462_160_name[]; |
4890 | +extern const char iwl9560_160_name[]; |
4891 | +extern const char iwl9260_killer_1550_name[]; |
4892 | +extern const char iwl9560_killer_1550i_name[]; |
4893 | +extern const char iwl9560_killer_1550s_name[]; |
4894 | +extern const char iwl_ax200_name[]; |
4895 | +extern const char iwl_ax200_killer_1650w_name[]; |
4896 | +extern const char iwl_ax200_killer_1650x_name[]; |
4897 | + |
4898 | #if IS_ENABLED(CPTCFG_IWLMVM) |
4899 | extern const struct iwl_cfg iwl7260_2ac_cfg; |
4900 | extern const struct iwl_cfg iwl7260_2ac_cfg_high_temp; |
4901 | @@ -528,41 +553,15 @@ extern const struct iwl_cfg iwl8275_2ac_cfg; |
4902 | extern const struct iwl_cfg iwl4165_2ac_cfg; |
4903 | #endif /* IS_ENABLED(CPTCFG_IWLMVM) */ |
4904 | #if IS_ENABLED(CPTCFG_IWLMVM) || IS_ENABLED(CPTCFG_IWLFMAC) |
4905 | -extern const struct iwl_cfg iwl9160_2ac_cfg; |
4906 | extern const struct iwl_cfg iwl9260_2ac_cfg; |
4907 | -extern const struct iwl_cfg iwl9260_2ac_160_cfg; |
4908 | -extern const struct iwl_cfg iwl9260_killer_2ac_cfg; |
4909 | -extern const struct iwl_cfg iwl9270_2ac_cfg; |
4910 | -extern const struct iwl_cfg iwl9460_2ac_cfg; |
4911 | -extern const struct iwl_cfg iwl9560_2ac_cfg; |
4912 | -extern const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc; |
4913 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg; |
4914 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc; |
4915 | -extern const struct iwl_cfg iwl9460_2ac_cfg_soc; |
4916 | -extern const struct iwl_cfg iwl9461_2ac_cfg_soc; |
4917 | -extern const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc; |
4918 | -extern const struct iwl_cfg iwl9462_2ac_cfg_soc; |
4919 | -extern const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc; |
4920 | +extern const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg; |
4921 | +extern const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg; |
4922 | +extern const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg; |
4923 | +extern const struct iwl_cfg iwl9560_qnj_b0_jf_b0_cfg; |
4924 | extern const struct iwl_cfg iwl9560_2ac_cfg_soc; |
4925 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg_soc; |
4926 | -extern const struct iwl_cfg iwl9560_killer_2ac_cfg_soc; |
4927 | -extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc; |
4928 | -extern const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc; |
4929 | -extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc; |
4930 | -extern const struct iwl_cfg iwl9460_2ac_cfg_shared_clk; |
4931 | -extern const struct iwl_cfg iwl9461_2ac_cfg_shared_clk; |
4932 | -extern const struct iwl_cfg iwl9462_2ac_cfg_shared_clk; |
4933 | -extern const struct iwl_cfg iwl9560_2ac_cfg_shared_clk; |
4934 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg_shared_clk; |
4935 | -extern const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk; |
4936 | -extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk; |
4937 | -extern const struct iwl_cfg iwl22000_2ac_cfg_hr; |
4938 | -extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb; |
4939 | -extern const struct iwl_cfg iwl22000_2ac_cfg_jf; |
4940 | extern const struct iwl_cfg iwl_ax101_cfg_qu_hr; |
4941 | extern const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0; |
4942 | extern const struct iwl_cfg iwl_ax101_cfg_quz_hr; |
4943 | -extern const struct iwl_cfg iwl22000_2ax_cfg_hr; |
4944 | extern const struct iwl_cfg iwl_ax200_cfg_cc; |
4945 | extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; |
4946 | extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; |
4947 | @@ -576,28 +575,14 @@ extern const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0; |
4948 | extern const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0; |
4949 | extern const struct iwl_cfg killer1650x_2ax_cfg; |
4950 | extern const struct iwl_cfg killer1650w_2ax_cfg; |
4951 | -extern const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0; |
4952 | -extern const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0; |
4953 | -extern const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0; |
4954 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0; |
4955 | -extern const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0; |
4956 | -extern const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0; |
4957 | -extern const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0; |
4958 | -extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0; |
4959 | -extern const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0; |
4960 | -extern const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0; |
4961 | -extern const struct iwl_cfg iwl22000_2ax_cfg_jf; |
4962 | -extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0_f0; |
4963 | extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0_f0; |
4964 | extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0; |
4965 | -extern const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0; |
4966 | -extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0; |
4967 | extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0; |
4968 | extern const struct iwl_cfg iwlax210_2ax_cfg_so_hr_a0; |
4969 | extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0; |
4970 | extern const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0; |
4971 | extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0; |
4972 | -extern const struct iwl_cfg iwl_ax201_cfg_qnj_b0_gftc_a0; |
4973 | +extern const struct iwl_cfg iwlax411_2ax_cfg_sosnj_gf4_a0; |
4974 | #endif /* CPTCFG_IWLMVM || CPTCFG_IWLFMAC */ |
4975 | |
4976 | #endif /* __IWL_CONFIG_H__ */ |
4977 | diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h b/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h |
4978 | index 5ed07e3..eeaa8cb 100644 |
4979 | --- a/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h |
4980 | +++ b/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h |
4981 | @@ -6,7 +6,7 @@ |
4982 | * GPL LICENSE SUMMARY |
4983 | * |
4984 | * Copyright(c) 2017 Intel Deutschland GmbH |
4985 | - * Copyright(c) 2018 Intel Corporation |
4986 | + * Copyright(c) 2018 - 2019 Intel Corporation |
4987 | * |
4988 | * This program is free software; you can redistribute it and/or modify |
4989 | * it under the terms of version 2 of the GNU General Public License as |
4990 | @@ -20,7 +20,7 @@ |
4991 | * BSD LICENSE |
4992 | * |
4993 | * Copyright(c) 2017 Intel Deutschland GmbH |
4994 | - * Copyright(c) 2018 Intel Corporation |
4995 | + * Copyright(c) 2018 - 2019 Intel Corporation |
4996 | * All rights reserved. |
4997 | * |
4998 | * Redistribution and use in source and binary forms, with or without |
4999 | @@ -64,12 +64,12 @@ |
5000 | * the init done for driver command that configures several system modes |
The diff has been truncated for viewing.
https:/ /launchpad. net/ubuntu/ +source/ backport- iwlwifi- dkms/8286- 0ubuntu1