1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#ifndef __fw_api_h__
65#define __fw_api_h__
66
67#include "fw-api-rs.h"
68#include "fw-api-tx.h"
69#include "fw-api-sta.h"
70#include "fw-api-mac.h"
71#include "fw-api-power.h"
72#include "fw-api-d3.h"
73#include "fw-api-bt-coex.h"
74
75
76enum {
77 IWL_MVM_OFFCHANNEL_QUEUE = 8,
78 IWL_MVM_CMD_QUEUE = 9,
79 IWL_MVM_AUX_QUEUE = 15,
80 IWL_MVM_FIRST_AGG_QUEUE = 16,
81 IWL_MVM_NUM_QUEUES = 20,
82 IWL_MVM_LAST_AGG_QUEUE = IWL_MVM_NUM_QUEUES - 1,
83 IWL_MVM_CMD_FIFO = 7
84};
85
86#define IWL_MVM_STATION_COUNT 16
87
88
89enum {
90 MVM_ALIVE = 0x1,
91 REPLY_ERROR = 0x2,
92
93 INIT_COMPLETE_NOTIF = 0x4,
94
95
96 PHY_CONTEXT_CMD = 0x8,
97 DBG_CFG = 0x9,
98
99
100 ADD_STA = 0x18,
101 REMOVE_STA = 0x19,
102
103
104 TX_CMD = 0x1c,
105 TXPATH_FLUSH = 0x1e,
106 MGMT_MCAST_KEY = 0x1f,
107
108
109 WEP_KEY = 0x20,
110
111
112 MAC_CONTEXT_CMD = 0x28,
113 TIME_EVENT_CMD = 0x29,
114 TIME_EVENT_NOTIFICATION = 0x2a,
115 BINDING_CONTEXT_CMD = 0x2b,
116 TIME_QUOTA_CMD = 0x2c,
117
118 LQ_CMD = 0x4e,
119
120
121 TEMPERATURE_NOTIFICATION = 0x62,
122 CALIBRATION_CFG_CMD = 0x65,
123 CALIBRATION_RES_NOTIFICATION = 0x66,
124 CALIBRATION_COMPLETE_NOTIFICATION = 0x67,
125 RADIO_VERSION_NOTIFICATION = 0x68,
126
127
128 SCAN_OFFLOAD_REQUEST_CMD = 0x51,
129 SCAN_OFFLOAD_ABORT_CMD = 0x52,
130 SCAN_OFFLOAD_COMPLETE = 0x6D,
131 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,
132 SCAN_OFFLOAD_CONFIG_CMD = 0x6f,
133
134
135 PHY_CONFIGURATION_CMD = 0x6a,
136 CALIB_RES_NOTIF_PHY_DB = 0x6b,
137
138
139
140 POWER_TABLE_CMD = 0x77,
141
142
143 SCAN_REQUEST_CMD = 0x80,
144 SCAN_ABORT_CMD = 0x81,
145 SCAN_START_NOTIFICATION = 0x82,
146 SCAN_RESULTS_NOTIFICATION = 0x83,
147 SCAN_COMPLETE_NOTIFICATION = 0x84,
148
149
150 NVM_ACCESS_CMD = 0x88,
151
152 SET_CALIB_DEFAULT_CMD = 0x8e,
153
154 BEACON_NOTIFICATION = 0x90,
155 BEACON_TEMPLATE_CMD = 0x91,
156 TX_ANT_CONFIGURATION_CMD = 0x98,
157 BT_CONFIG = 0x9b,
158 STATISTICS_NOTIFICATION = 0x9d,
159
160
161 CARD_STATE_CMD = 0xa0,
162 CARD_STATE_NOTIFICATION = 0xa1,
163
164 REPLY_RX_PHY_CMD = 0xc0,
165 REPLY_RX_MPDU_CMD = 0xc1,
166 BA_NOTIF = 0xc5,
167
168
169 BT_COEX_PRIO_TABLE = 0xcc,
170 BT_COEX_PROT_ENV = 0xcd,
171 BT_PROFILE_NOTIFICATION = 0xce,
172
173 REPLY_DEBUG_CMD = 0xf0,
174 DEBUG_LOG_MSG = 0xf7,
175
176 MCAST_FILTER_CMD = 0xd0,
177
178
179 D3_CONFIG_CMD = 0xd3,
180 PROT_OFFLOAD_CONFIG_CMD = 0xd4,
181 OFFLOADS_QUERY_CMD = 0xd5,
182 REMOTE_WAKE_CONFIG_CMD = 0xd6,
183
184
185 WOWLAN_PATTERNS = 0xe0,
186 WOWLAN_CONFIGURATION = 0xe1,
187 WOWLAN_TSC_RSC_PARAM = 0xe2,
188 WOWLAN_TKIP_PARAM = 0xe3,
189 WOWLAN_KEK_KCK_MATERIAL = 0xe4,
190 WOWLAN_GET_STATUSES = 0xe5,
191 WOWLAN_TX_POWER_PER_DB = 0xe6,
192
193
194 NET_DETECT_CONFIG_CMD = 0x54,
195 NET_DETECT_PROFILES_QUERY_CMD = 0x56,
196 NET_DETECT_PROFILES_CMD = 0x57,
197 NET_DETECT_HOTSPOTS_CMD = 0x58,
198 NET_DETECT_HOTSPOTS_QUERY_CMD = 0x59,
199
200 REPLY_MAX = 0xff,
201};
202
203
204
205
206
207struct iwl_cmd_response {
208 __le32 status;
209};
210
211
212
213
214
215struct iwl_tx_ant_cfg_cmd {
216 __le32 valid;
217} __packed;
218
219
220
221
222
223
224
225
226
227struct iwl_calib_ctrl {
228 __le32 flow_trigger;
229 __le32 event_trigger;
230} __packed;
231
232
233
234
235enum iwl_calib_cfg {
236 IWL_CALIB_CFG_XTAL_IDX = BIT(0),
237 IWL_CALIB_CFG_TEMPERATURE_IDX = BIT(1),
238 IWL_CALIB_CFG_VOLTAGE_READ_IDX = BIT(2),
239 IWL_CALIB_CFG_PAPD_IDX = BIT(3),
240 IWL_CALIB_CFG_TX_PWR_IDX = BIT(4),
241 IWL_CALIB_CFG_DC_IDX = BIT(5),
242 IWL_CALIB_CFG_BB_FILTER_IDX = BIT(6),
243 IWL_CALIB_CFG_LO_LEAKAGE_IDX = BIT(7),
244 IWL_CALIB_CFG_TX_IQ_IDX = BIT(8),
245 IWL_CALIB_CFG_TX_IQ_SKEW_IDX = BIT(9),
246 IWL_CALIB_CFG_RX_IQ_IDX = BIT(10),
247 IWL_CALIB_CFG_RX_IQ_SKEW_IDX = BIT(11),
248 IWL_CALIB_CFG_SENSITIVITY_IDX = BIT(12),
249 IWL_CALIB_CFG_CHAIN_NOISE_IDX = BIT(13),
250 IWL_CALIB_CFG_DISCONNECTED_ANT_IDX = BIT(14),
251 IWL_CALIB_CFG_ANT_COUPLING_IDX = BIT(15),
252 IWL_CALIB_CFG_DAC_IDX = BIT(16),
253 IWL_CALIB_CFG_ABS_IDX = BIT(17),
254 IWL_CALIB_CFG_AGC_IDX = BIT(18),
255};
256
257
258
259
260struct iwl_phy_cfg_cmd {
261 __le32 phy_cfg;
262 struct iwl_calib_ctrl calib_control;
263} __packed;
264
265#define PHY_CFG_RADIO_TYPE (BIT(0) | BIT(1))
266#define PHY_CFG_RADIO_STEP (BIT(2) | BIT(3))
267#define PHY_CFG_RADIO_DASH (BIT(4) | BIT(5))
268#define PHY_CFG_PRODUCT_NUMBER (BIT(6) | BIT(7))
269#define PHY_CFG_TX_CHAIN_A BIT(8)
270#define PHY_CFG_TX_CHAIN_B BIT(9)
271#define PHY_CFG_TX_CHAIN_C BIT(10)
272#define PHY_CFG_RX_CHAIN_A BIT(12)
273#define PHY_CFG_RX_CHAIN_B BIT(13)
274#define PHY_CFG_RX_CHAIN_C BIT(14)
275
276
277
278enum {
279 NVM_ACCESS_TARGET_CACHE = 0,
280 NVM_ACCESS_TARGET_OTP = 1,
281 NVM_ACCESS_TARGET_EEPROM = 2,
282};
283
284
285enum {
286 NVM_SECTION_TYPE_HW = 0,
287 NVM_SECTION_TYPE_SW,
288 NVM_SECTION_TYPE_PAPD,
289 NVM_SECTION_TYPE_BT,
290 NVM_SECTION_TYPE_CALIBRATION,
291 NVM_SECTION_TYPE_PRODUCTION,
292 NVM_SECTION_TYPE_POST_FCS_CALIB,
293 NVM_NUM_OF_SECTIONS,
294};
295
296
297
298
299
300
301
302
303
304
305struct iwl_nvm_access_cmd {
306 u8 op_code;
307 u8 target;
308 __le16 type;
309 __le16 offset;
310 __le16 length;
311 u8 data[];
312} __packed;
313
314
315
316
317
318
319
320
321
322struct iwl_nvm_access_resp {
323 __le16 offset;
324 __le16 length;
325 __le16 type;
326 __le16 status;
327 u8 data[];
328} __packed;
329
330
331
332
333#define ALIVE_RESP_UCODE_OK BIT(0)
334#define ALIVE_RESP_RFKILL BIT(1)
335
336
337enum {
338 FW_TYPE_HW = 0,
339 FW_TYPE_PROT = 1,
340 FW_TYPE_AP = 2,
341 FW_TYPE_WOWLAN = 3,
342 FW_TYPE_TIMING = 4,
343 FW_TYPE_WIPAN = 5
344};
345
346
347enum {
348 FW_SUBTYPE_FULL_FEATURE = 0,
349 FW_SUBTYPE_BOOTSRAP = 1,
350 FW_SUBTYPE_REDUCED = 2,
351 FW_SUBTYPE_ALIVE_ONLY = 3,
352 FW_SUBTYPE_WOWLAN = 4,
353 FW_SUBTYPE_AP_SUBTYPE = 5,
354 FW_SUBTYPE_WIPAN = 6,
355 FW_SUBTYPE_INITIALIZE = 9
356};
357
358#define IWL_ALIVE_STATUS_ERR 0xDEAD
359#define IWL_ALIVE_STATUS_OK 0xCAFE
360
361#define IWL_ALIVE_FLG_RFKILL BIT(0)
362
363struct mvm_alive_resp {
364 __le16 status;
365 __le16 flags;
366 u8 ucode_minor;
367 u8 ucode_major;
368 __le16 id;
369 u8 api_minor;
370 u8 api_major;
371 u8 ver_subtype;
372 u8 ver_type;
373 u8 mac;
374 u8 opt;
375 __le16 reserved2;
376 __le32 timestamp;
377 __le32 error_event_table_ptr;
378 __le32 log_event_table_ptr;
379 __le32 cpu_register_ptr;
380 __le32 dbgm_config_ptr;
381 __le32 alive_counter_ptr;
382 __le32 scd_base_ptr;
383} __packed;
384
385
386enum {
387 FW_ERR_UNKNOWN_CMD = 0x0,
388 FW_ERR_INVALID_CMD_PARAM = 0x1,
389 FW_ERR_SERVICE = 0x2,
390 FW_ERR_ARC_MEMORY = 0x3,
391 FW_ERR_ARC_CODE = 0x4,
392 FW_ERR_WATCH_DOG = 0x5,
393 FW_ERR_WEP_GRP_KEY_INDX = 0x10,
394 FW_ERR_WEP_KEY_SIZE = 0x11,
395 FW_ERR_OBSOLETE_FUNC = 0x12,
396 FW_ERR_UNEXPECTED = 0xFE,
397 FW_ERR_FATAL = 0xFF
398};
399
400
401
402
403
404
405
406
407
408
409
410struct iwl_error_resp {
411 __le32 error_type;
412 u8 cmd_id;
413 u8 reserved1;
414 __le16 bad_cmd_seq_num;
415 __le32 error_service;
416 __le64 timestamp;
417} __packed;
418
419
420
421
422#define MAX_MACS_IN_BINDING (3)
423#define MAX_BINDINGS (4)
424#define AUX_BINDING_INDEX (3)
425#define MAX_PHYS (4)
426
427
428#define FW_CTXT_ID_POS (0)
429#define FW_CTXT_ID_MSK (0xff << FW_CTXT_ID_POS)
430#define FW_CTXT_COLOR_POS (8)
431#define FW_CTXT_COLOR_MSK (0xff << FW_CTXT_COLOR_POS)
432#define FW_CTXT_INVALID (0xffffffff)
433
434#define FW_CMD_ID_AND_COLOR(_id, _color) ((_id << FW_CTXT_ID_POS) |\
435 (_color << FW_CTXT_COLOR_POS))
436
437
438enum {
439 FW_CTXT_ACTION_STUB = 0,
440 FW_CTXT_ACTION_ADD,
441 FW_CTXT_ACTION_MODIFY,
442 FW_CTXT_ACTION_REMOVE,
443 FW_CTXT_ACTION_NUM
444};
445
446
447
448
449enum iwl_time_event_type {
450
451 TE_BSS_STA_AGGRESSIVE_ASSOC,
452 TE_BSS_STA_ASSOC,
453 TE_BSS_EAP_DHCP_PROT,
454 TE_BSS_QUIET_PERIOD,
455
456
457 TE_P2P_DEVICE_DISCOVERABLE,
458 TE_P2P_DEVICE_LISTEN,
459 TE_P2P_DEVICE_ACTION_SCAN,
460 TE_P2P_DEVICE_FULL_SCAN,
461
462
463 TE_P2P_CLIENT_AGGRESSIVE_ASSOC,
464 TE_P2P_CLIENT_ASSOC,
465 TE_P2P_CLIENT_QUIET_PERIOD,
466
467
468 TE_P2P_GO_ASSOC_PROT,
469 TE_P2P_GO_REPETITIVE_NOA,
470 TE_P2P_GO_CT_WINDOW,
471
472
473 TE_WIDI_TX_SYNC,
474
475 TE_MAX
476};
477
478
479enum {
480 TE_INDEPENDENT = 0,
481 TE_DEP_OTHER = 1,
482 TE_DEP_TSF = 2,
483 TE_EVENT_SOCIOPATHIC = 4,
484};
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502enum {
503 TE_NOTIF_NONE = 0,
504 TE_NOTIF_HOST_EVENT_START = 0x1,
505 TE_NOTIF_HOST_EVENT_END = 0x2,
506 TE_NOTIF_INTERNAL_EVENT_START = 0x4,
507 TE_NOTIF_INTERNAL_EVENT_END = 0x8,
508 TE_NOTIF_HOST_FRAG_START = 0x10,
509 TE_NOTIF_HOST_FRAG_END = 0x20,
510 TE_NOTIF_INTERNAL_FRAG_START = 0x40,
511 TE_NOTIF_INTERNAL_FRAG_END = 0x80
512};
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527enum {
528 TE_FRAG_NONE = 0,
529 TE_FRAG_SINGLE = 1,
530 TE_FRAG_DUAL = 2,
531 TE_FRAG_ENDLESS = 0xffffffff
532};
533
534
535#define TE_REPEAT_ENDLESS (0xffffffff)
536
537#define TE_REPEAT_MAX_MSK (0x0fffffff)
538
539#define TE_FRAG_MAX_MSK (0x0fffffff)
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562struct iwl_time_event_cmd {
563
564 __le32 id_and_color;
565 __le32 action;
566 __le32 id;
567
568 __le32 apply_time;
569 __le32 max_delay;
570 __le32 dep_policy;
571 __le32 depends_on;
572 __le32 is_present;
573 __le32 max_frags;
574 __le32 interval;
575 __le32 interval_reciprocal;
576 __le32 duration;
577 __le32 repeat;
578 __le32 notify;
579} __packed;
580
581
582
583
584
585
586
587
588struct iwl_time_event_resp {
589 __le32 status;
590 __le32 id;
591 __le32 unique_id;
592 __le32 id_and_color;
593} __packed;
594
595
596
597
598
599
600
601
602
603
604
605struct iwl_time_event_notif {
606 __le32 timestamp;
607 __le32 session_id;
608 __le32 unique_id;
609 __le32 id_and_color;
610 __le32 action;
611 __le32 status;
612} __packed;
613
614
615
616
617
618
619
620
621
622
623
624
625struct iwl_binding_cmd {
626
627 __le32 id_and_color;
628 __le32 action;
629
630 __le32 macs[MAX_MACS_IN_BINDING];
631 __le32 phy;
632} __packed;
633
634
635#define IWL_MVM_MAX_QUOTA 128
636
637
638
639
640
641
642
643
644struct iwl_time_quota_data {
645 __le32 id_and_color;
646 __le32 quota;
647 __le32 max_duration;
648} __packed;
649
650
651
652
653
654
655struct iwl_time_quota_cmd {
656 struct iwl_time_quota_data quotas[MAX_BINDINGS];
657} __packed;
658
659
660
661
662
663#define PHY_BAND_5 (0)
664#define PHY_BAND_24 (1)
665
666
667#define PHY_VHT_CHANNEL_MODE20 (0x0)
668#define PHY_VHT_CHANNEL_MODE40 (0x1)
669#define PHY_VHT_CHANNEL_MODE80 (0x2)
670#define PHY_VHT_CHANNEL_MODE160 (0x3)
671
672
673
674
675
676
677
678
679
680
681
682
683
684#define PHY_VHT_CTRL_POS_1_BELOW (0x0)
685#define PHY_VHT_CTRL_POS_2_BELOW (0x1)
686#define PHY_VHT_CTRL_POS_3_BELOW (0x2)
687#define PHY_VHT_CTRL_POS_4_BELOW (0x3)
688#define PHY_VHT_CTRL_POS_1_ABOVE (0x4)
689#define PHY_VHT_CTRL_POS_2_ABOVE (0x5)
690#define PHY_VHT_CTRL_POS_3_ABOVE (0x6)
691#define PHY_VHT_CTRL_POS_4_ABOVE (0x7)
692
693
694
695
696
697
698
699struct iwl_fw_channel_info {
700 u8 band;
701 u8 channel;
702 u8 width;
703 u8 ctrl_pos;
704} __packed;
705
706#define PHY_RX_CHAIN_DRIVER_FORCE_POS (0)
707#define PHY_RX_CHAIN_DRIVER_FORCE_MSK \
708 (0x1 << PHY_RX_CHAIN_DRIVER_FORCE_POS)
709#define PHY_RX_CHAIN_VALID_POS (1)
710#define PHY_RX_CHAIN_VALID_MSK \
711 (0x7 << PHY_RX_CHAIN_VALID_POS)
712#define PHY_RX_CHAIN_FORCE_SEL_POS (4)
713#define PHY_RX_CHAIN_FORCE_SEL_MSK \
714 (0x7 << PHY_RX_CHAIN_FORCE_SEL_POS)
715#define PHY_RX_CHAIN_FORCE_MIMO_SEL_POS (7)
716#define PHY_RX_CHAIN_FORCE_MIMO_SEL_MSK \
717 (0x7 << PHY_RX_CHAIN_FORCE_MIMO_SEL_POS)
718#define PHY_RX_CHAIN_CNT_POS (10)
719#define PHY_RX_CHAIN_CNT_MSK \
720 (0x3 << PHY_RX_CHAIN_CNT_POS)
721#define PHY_RX_CHAIN_MIMO_CNT_POS (12)
722#define PHY_RX_CHAIN_MIMO_CNT_MSK \
723 (0x3 << PHY_RX_CHAIN_MIMO_CNT_POS)
724#define PHY_RX_CHAIN_MIMO_FORCE_POS (14)
725#define PHY_RX_CHAIN_MIMO_FORCE_MSK \
726 (0x1 << PHY_RX_CHAIN_MIMO_FORCE_POS)
727
728
729#define NUM_PHY_CTX 3
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746struct iwl_phy_context_cmd {
747
748 __le32 id_and_color;
749 __le32 action;
750
751 __le32 apply_time;
752 __le32 tx_param_color;
753 struct iwl_fw_channel_info ci;
754 __le32 txchain_info;
755 __le32 rxchain_info;
756 __le32 acquisition_data;
757 __le32 dsp_cfg_flags;
758} __packed;
759
760#define IWL_RX_INFO_PHY_CNT 8
761#define IWL_RX_INFO_AGC_IDX 1
762#define IWL_RX_INFO_RSSI_AB_IDX 2
763#define IWL_OFDM_AGC_A_MSK 0x0000007f
764#define IWL_OFDM_AGC_A_POS 0
765#define IWL_OFDM_AGC_B_MSK 0x00003f80
766#define IWL_OFDM_AGC_B_POS 7
767#define IWL_OFDM_AGC_CODE_MSK 0x3fe00000
768#define IWL_OFDM_AGC_CODE_POS 20
769#define IWL_OFDM_RSSI_INBAND_A_MSK 0x00ff
770#define IWL_OFDM_RSSI_A_POS 0
771#define IWL_OFDM_RSSI_ALLBAND_A_MSK 0xff00
772#define IWL_OFDM_RSSI_ALLBAND_A_POS 8
773#define IWL_OFDM_RSSI_INBAND_B_MSK 0xff0000
774#define IWL_OFDM_RSSI_B_POS 16
775#define IWL_OFDM_RSSI_ALLBAND_B_MSK 0xff000000
776#define IWL_OFDM_RSSI_ALLBAND_B_POS 24
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800struct iwl_rx_phy_info {
801 u8 non_cfg_phy_cnt;
802 u8 cfg_phy_cnt;
803 u8 stat_id;
804 u8 reserved1;
805 __le32 system_timestamp;
806 __le64 timestamp;
807 __le32 beacon_time_stamp;
808 __le16 phy_flags;
809 __le16 channel;
810 __le32 non_cfg_phy[IWL_RX_INFO_PHY_CNT];
811 __le32 rate_n_flags;
812 __le32 byte_count;
813 __le16 mac_active_msk;
814 __le16 frame_time;
815} __packed;
816
817struct iwl_rx_mpdu_res_start {
818 __le16 byte_count;
819 __le16 reserved;
820} __packed;
821
822
823
824
825
826
827
828
829
830
831
832
833
834enum iwl_rx_phy_flags {
835 RX_RES_PHY_FLAGS_BAND_24 = BIT(0),
836 RX_RES_PHY_FLAGS_MOD_CCK = BIT(1),
837 RX_RES_PHY_FLAGS_SHORT_PREAMBLE = BIT(2),
838 RX_RES_PHY_FLAGS_NARROW_BAND = BIT(3),
839 RX_RES_PHY_FLAGS_ANTENNA = (0x7 << 4),
840 RX_RES_PHY_FLAGS_ANTENNA_POS = 4,
841 RX_RES_PHY_FLAGS_AGG = BIT(7),
842 RX_RES_PHY_FLAGS_OFDM_HT = BIT(8),
843 RX_RES_PHY_FLAGS_OFDM_GF = BIT(9),
844 RX_RES_PHY_FLAGS_OFDM_VHT = BIT(10),
845};
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879enum iwl_mvm_rx_status {
880 RX_MPDU_RES_STATUS_CRC_OK = BIT(0),
881 RX_MPDU_RES_STATUS_OVERRUN_OK = BIT(1),
882 RX_MPDU_RES_STATUS_SRC_STA_FOUND = BIT(2),
883 RX_MPDU_RES_STATUS_KEY_VALID = BIT(3),
884 RX_MPDU_RES_STATUS_KEY_PARAM_OK = BIT(4),
885 RX_MPDU_RES_STATUS_ICV_OK = BIT(5),
886 RX_MPDU_RES_STATUS_MIC_OK = BIT(6),
887 RX_MPDU_RES_STATUS_TTAK_OK = BIT(7),
888 RX_MPDU_RES_STATUS_MNG_FRAME_REPLAY_ERR = BIT(7),
889 RX_MPDU_RES_STATUS_SEC_NO_ENC = (0 << 8),
890 RX_MPDU_RES_STATUS_SEC_WEP_ENC = (1 << 8),
891 RX_MPDU_RES_STATUS_SEC_CCM_ENC = (2 << 8),
892 RX_MPDU_RES_STATUS_SEC_TKIP_ENC = (3 << 8),
893 RX_MPDU_RES_STATUS_SEC_CCM_CMAC_ENC = (6 << 8),
894 RX_MPDU_RES_STATUS_SEC_ENC_ERR = (7 << 8),
895 RX_MPDU_RES_STATUS_SEC_ENC_MSK = (7 << 8),
896 RX_MPDU_RES_STATUS_DEC_DONE = BIT(11),
897 RX_MPDU_RES_STATUS_PROTECT_FRAME_BIT_CMP = BIT(12),
898 RX_MPDU_RES_STATUS_EXT_IV_BIT_CMP = BIT(13),
899 RX_MPDU_RES_STATUS_KEY_ID_CMP_BIT = BIT(14),
900 RX_MPDU_RES_STATUS_ROBUST_MNG_FRAME = BIT(15),
901 RX_MPDU_RES_STATUS_HASH_INDEX_MSK = (0x3F0000),
902 RX_MPDU_RES_STATUS_STA_ID_MSK = (0x1f000000),
903 RX_MPDU_RES_STATUS_RRF_KILL = BIT(29),
904 RX_MPDU_RES_STATUS_FILTERING_MSK = (0xc00000),
905 RX_MPDU_RES_STATUS2_FILTERING_MSK = (0xc0000000),
906};
907
908
909
910
911
912
913
914
915struct iwl_radio_version_notif {
916 __le32 radio_flavor;
917 __le32 radio_step;
918 __le32 radio_dash;
919} __packed;
920
921enum iwl_card_state_flags {
922 CARD_ENABLED = 0x00,
923 HW_CARD_DISABLED = 0x01,
924 SW_CARD_DISABLED = 0x02,
925 CT_KILL_CARD_DISABLED = 0x04,
926 HALT_CARD_DISABLED = 0x08,
927 CARD_DISABLED_MSK = 0x0f,
928 CARD_IS_RX_ON = 0x10,
929};
930
931
932
933
934
935
936struct iwl_card_state_notif {
937 __le32 flags;
938} __packed;
939
940
941
942
943
944
945
946
947struct iwl_set_calib_default_cmd {
948 __le16 calib_index;
949 __le16 length;
950 u8 data[0];
951} __packed;
952
953#define MAX_PORT_ID_NUM 2
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968struct iwl_mcast_filter_cmd {
969 u8 filter_own;
970 u8 port_id;
971 u8 count;
972 u8 pass_all;
973 u8 bssid[6];
974 u8 reserved[2];
975 u8 addr_list[0];
976} __packed;
977
978#endif
979