diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-dev.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 288 |
1 files changed, 159 insertions, 129 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index ef1720a852e9..f3f3473c5c7e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -43,6 +43,7 @@ | |||
43 | #include "iwl-debug.h" | 43 | #include "iwl-debug.h" |
44 | #include "iwl-4965-hw.h" | 44 | #include "iwl-4965-hw.h" |
45 | #include "iwl-3945-hw.h" | 45 | #include "iwl-3945-hw.h" |
46 | #include "iwl-agn-hw.h" | ||
46 | #include "iwl-led.h" | 47 | #include "iwl-led.h" |
47 | #include "iwl-power.h" | 48 | #include "iwl-power.h" |
48 | #include "iwl-agn-rs.h" | 49 | #include "iwl-agn-rs.h" |
@@ -56,6 +57,7 @@ extern struct iwl_cfg iwl5100_bgn_cfg; | |||
56 | extern struct iwl_cfg iwl5100_abg_cfg; | 57 | extern struct iwl_cfg iwl5100_abg_cfg; |
57 | extern struct iwl_cfg iwl5150_agn_cfg; | 58 | extern struct iwl_cfg iwl5150_agn_cfg; |
58 | extern struct iwl_cfg iwl5150_abg_cfg; | 59 | extern struct iwl_cfg iwl5150_abg_cfg; |
60 | extern struct iwl_cfg iwl6000g2a_2agn_cfg; | ||
59 | extern struct iwl_cfg iwl6000i_2agn_cfg; | 61 | extern struct iwl_cfg iwl6000i_2agn_cfg; |
60 | extern struct iwl_cfg iwl6000i_2abg_cfg; | 62 | extern struct iwl_cfg iwl6000i_2abg_cfg; |
61 | extern struct iwl_cfg iwl6000i_2bg_cfg; | 63 | extern struct iwl_cfg iwl6000i_2bg_cfg; |
@@ -67,45 +69,6 @@ extern struct iwl_cfg iwl1000_bg_cfg; | |||
67 | 69 | ||
68 | struct iwl_tx_queue; | 70 | struct iwl_tx_queue; |
69 | 71 | ||
70 | /* shared structures from iwl-5000.c */ | ||
71 | extern struct iwl_mod_params iwl50_mod_params; | ||
72 | extern struct iwl_ucode_ops iwl5000_ucode; | ||
73 | extern struct iwl_lib_ops iwl5000_lib; | ||
74 | extern struct iwl_hcmd_ops iwl5000_hcmd; | ||
75 | extern struct iwl_hcmd_utils_ops iwl5000_hcmd_utils; | ||
76 | |||
77 | /* shared functions from iwl-5000.c */ | ||
78 | extern u16 iwl5000_get_hcmd_size(u8 cmd_id, u16 len); | ||
79 | extern u16 iwl5000_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd, | ||
80 | u8 *data); | ||
81 | extern void iwl5000_rts_tx_cmd_flag(struct ieee80211_tx_info *info, | ||
82 | __le32 *tx_flags); | ||
83 | extern int iwl5000_calc_rssi(struct iwl_priv *priv, | ||
84 | struct iwl_rx_phy_res *rx_resp); | ||
85 | extern void iwl5000_nic_config(struct iwl_priv *priv); | ||
86 | extern u16 iwl5000_eeprom_calib_version(struct iwl_priv *priv); | ||
87 | extern const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, | ||
88 | size_t offset); | ||
89 | extern void iwl5000_txq_update_byte_cnt_tbl(struct iwl_priv *priv, | ||
90 | struct iwl_tx_queue *txq, | ||
91 | u16 byte_cnt); | ||
92 | extern void iwl5000_txq_inval_byte_cnt_tbl(struct iwl_priv *priv, | ||
93 | struct iwl_tx_queue *txq); | ||
94 | extern int iwl5000_load_ucode(struct iwl_priv *priv); | ||
95 | extern void iwl5000_init_alive_start(struct iwl_priv *priv); | ||
96 | extern int iwl5000_alive_notify(struct iwl_priv *priv); | ||
97 | extern int iwl5000_hw_set_hw_params(struct iwl_priv *priv); | ||
98 | extern int iwl5000_txq_agg_enable(struct iwl_priv *priv, int txq_id, | ||
99 | int tx_fifo, int sta_id, int tid, u16 ssn_idx); | ||
100 | extern int iwl5000_txq_agg_disable(struct iwl_priv *priv, u16 txq_id, | ||
101 | u16 ssn_idx, u8 tx_fifo); | ||
102 | extern void iwl5000_txq_set_sched(struct iwl_priv *priv, u32 mask); | ||
103 | extern void iwl5000_setup_deferred_work(struct iwl_priv *priv); | ||
104 | extern void iwl5000_rx_handler_setup(struct iwl_priv *priv); | ||
105 | extern int iwl5000_hw_valid_rtc_data_addr(u32 addr); | ||
106 | extern int iwl5000_send_tx_power(struct iwl_priv *priv); | ||
107 | extern void iwl5000_temperature(struct iwl_priv *priv); | ||
108 | |||
109 | /* CT-KILL constants */ | 72 | /* CT-KILL constants */ |
110 | #define CT_KILL_THRESHOLD_LEGACY 110 /* in Celsius */ | 73 | #define CT_KILL_THRESHOLD_LEGACY 110 /* in Celsius */ |
111 | #define CT_KILL_THRESHOLD 114 /* in Celsius */ | 74 | #define CT_KILL_THRESHOLD 114 /* in Celsius */ |
@@ -183,6 +146,10 @@ struct iwl_queue { | |||
183 | int n_bd; /* number of BDs in this queue */ | 146 | int n_bd; /* number of BDs in this queue */ |
184 | int write_ptr; /* 1-st empty entry (index) host_w*/ | 147 | int write_ptr; /* 1-st empty entry (index) host_w*/ |
185 | int read_ptr; /* last used entry (index) host_r*/ | 148 | int read_ptr; /* last used entry (index) host_r*/ |
149 | /* use for monitoring and recovering the stuck queue */ | ||
150 | int last_read_ptr; /* storing the last read_ptr */ | ||
151 | /* number of time read_ptr and last_read_ptr are the same */ | ||
152 | u8 repeat_same_read_ptr; | ||
186 | dma_addr_t dma_addr; /* physical addr for BD's */ | 153 | dma_addr_t dma_addr; /* physical addr for BD's */ |
187 | int n_window; /* safe queue window */ | 154 | int n_window; /* safe queue window */ |
188 | u32 id; | 155 | u32 id; |
@@ -304,13 +271,11 @@ struct iwl_channel_info { | |||
304 | struct iwl3945_scan_power_info scan_pwr_info[IWL_NUM_SCAN_RATES]; | 271 | struct iwl3945_scan_power_info scan_pwr_info[IWL_NUM_SCAN_RATES]; |
305 | }; | 272 | }; |
306 | 273 | ||
307 | #define IWL_TX_FIFO_AC0 0 | 274 | #define IWL_TX_FIFO_BK 0 |
308 | #define IWL_TX_FIFO_AC1 1 | 275 | #define IWL_TX_FIFO_BE 1 |
309 | #define IWL_TX_FIFO_AC2 2 | 276 | #define IWL_TX_FIFO_VI 2 |
310 | #define IWL_TX_FIFO_AC3 3 | 277 | #define IWL_TX_FIFO_VO 3 |
311 | #define IWL_TX_FIFO_HCCA_1 5 | 278 | #define IWL_TX_FIFO_UNUSED -1 |
312 | #define IWL_TX_FIFO_HCCA_2 6 | ||
313 | #define IWL_TX_FIFO_NONE 7 | ||
314 | 279 | ||
315 | /* Minimum number of queues. MAX_NUM is defined in hw specific files. | 280 | /* Minimum number of queues. MAX_NUM is defined in hw specific files. |
316 | * Set the minimum to accommodate the 4 standard TX queues, 1 command | 281 | * Set the minimum to accommodate the 4 standard TX queues, 1 command |
@@ -361,13 +326,6 @@ enum { | |||
361 | 326 | ||
362 | #define DEF_CMD_PAYLOAD_SIZE 320 | 327 | #define DEF_CMD_PAYLOAD_SIZE 320 |
363 | 328 | ||
364 | /* | ||
365 | * IWL_LINK_HDR_MAX should include ieee80211_hdr, radiotap header, | ||
366 | * SNAP header and alignment. It should also be big enough for 802.11 | ||
367 | * control frames. | ||
368 | */ | ||
369 | #define IWL_LINK_HDR_MAX 64 | ||
370 | |||
371 | /** | 329 | /** |
372 | * struct iwl_device_cmd | 330 | * struct iwl_device_cmd |
373 | * | 331 | * |
@@ -519,38 +477,28 @@ struct iwl_ht_config { | |||
519 | u8 non_GF_STA_present; | 477 | u8 non_GF_STA_present; |
520 | }; | 478 | }; |
521 | 479 | ||
522 | union iwl_qos_capabity { | ||
523 | struct { | ||
524 | u8 edca_count:4; /* bit 0-3 */ | ||
525 | u8 q_ack:1; /* bit 4 */ | ||
526 | u8 queue_request:1; /* bit 5 */ | ||
527 | u8 txop_request:1; /* bit 6 */ | ||
528 | u8 reserved:1; /* bit 7 */ | ||
529 | } q_AP; | ||
530 | struct { | ||
531 | u8 acvo_APSD:1; /* bit 0 */ | ||
532 | u8 acvi_APSD:1; /* bit 1 */ | ||
533 | u8 ac_bk_APSD:1; /* bit 2 */ | ||
534 | u8 ac_be_APSD:1; /* bit 3 */ | ||
535 | u8 q_ack:1; /* bit 4 */ | ||
536 | u8 max_len:2; /* bit 5-6 */ | ||
537 | u8 more_data_ack:1; /* bit 7 */ | ||
538 | } q_STA; | ||
539 | u8 val; | ||
540 | }; | ||
541 | |||
542 | /* QoS structures */ | 480 | /* QoS structures */ |
543 | struct iwl_qos_info { | 481 | struct iwl_qos_info { |
544 | int qos_active; | 482 | int qos_active; |
545 | union iwl_qos_capabity qos_cap; | ||
546 | struct iwl_qosparam_cmd def_qos_parm; | 483 | struct iwl_qosparam_cmd def_qos_parm; |
547 | }; | 484 | }; |
548 | 485 | ||
486 | /* | ||
487 | * Structure should be accessed with sta_lock held. When station addition | ||
488 | * is in progress (IWL_STA_UCODE_INPROGRESS) it is possible to access only | ||
489 | * the commands (iwl_addsta_cmd and iwl_link_quality_cmd) without sta_lock | ||
490 | * held. | ||
491 | */ | ||
549 | struct iwl_station_entry { | 492 | struct iwl_station_entry { |
550 | struct iwl_addsta_cmd sta; | 493 | struct iwl_addsta_cmd sta; |
551 | struct iwl_tid_data tid[MAX_TID_COUNT]; | 494 | struct iwl_tid_data tid[MAX_TID_COUNT]; |
552 | u8 used; | 495 | u8 used; |
553 | struct iwl_hw_key keyinfo; | 496 | struct iwl_hw_key keyinfo; |
497 | struct iwl_link_quality_cmd *lq; | ||
498 | }; | ||
499 | |||
500 | struct iwl_station_priv_common { | ||
501 | u8 sta_id; | ||
554 | }; | 502 | }; |
555 | 503 | ||
556 | /* | 504 | /* |
@@ -559,14 +507,28 @@ struct iwl_station_entry { | |||
559 | * When mac80211 creates a station it reserves some space (hw->sta_data_size) | 507 | * When mac80211 creates a station it reserves some space (hw->sta_data_size) |
560 | * in the structure for use by driver. This structure is places in that | 508 | * in the structure for use by driver. This structure is places in that |
561 | * space. | 509 | * space. |
510 | * | ||
511 | * The common struct MUST be first because it is shared between | ||
512 | * 3945 and agn! | ||
562 | */ | 513 | */ |
563 | struct iwl_station_priv { | 514 | struct iwl_station_priv { |
515 | struct iwl_station_priv_common common; | ||
564 | struct iwl_lq_sta lq_sta; | 516 | struct iwl_lq_sta lq_sta; |
565 | atomic_t pending_frames; | 517 | atomic_t pending_frames; |
566 | bool client; | 518 | bool client; |
567 | bool asleep; | 519 | bool asleep; |
568 | }; | 520 | }; |
569 | 521 | ||
522 | /** | ||
523 | * struct iwl_vif_priv - driver's private per-interface information | ||
524 | * | ||
525 | * When mac80211 allocates a virtual interface, it can allocate | ||
526 | * space for us to put data into. | ||
527 | */ | ||
528 | struct iwl_vif_priv { | ||
529 | u8 ibss_bssid_sta_id; | ||
530 | }; | ||
531 | |||
570 | /* one for each uCode image (inst/data, boot/init/runtime) */ | 532 | /* one for each uCode image (inst/data, boot/init/runtime) */ |
571 | struct fw_desc { | 533 | struct fw_desc { |
572 | void *v_addr; /* access by driver */ | 534 | void *v_addr; /* access by driver */ |
@@ -574,7 +536,7 @@ struct fw_desc { | |||
574 | u32 len; /* bytes */ | 536 | u32 len; /* bytes */ |
575 | }; | 537 | }; |
576 | 538 | ||
577 | /* uCode file layout */ | 539 | /* v1/v2 uCode file layout */ |
578 | struct iwl_ucode_header { | 540 | struct iwl_ucode_header { |
579 | __le32 ver; /* major/minor/API/serial */ | 541 | __le32 ver; /* major/minor/API/serial */ |
580 | union { | 542 | union { |
@@ -597,7 +559,62 @@ struct iwl_ucode_header { | |||
597 | } v2; | 559 | } v2; |
598 | } u; | 560 | } u; |
599 | }; | 561 | }; |
600 | #define UCODE_HEADER_SIZE(ver) ((ver) == 1 ? 24 : 28) | 562 | |
563 | /* | ||
564 | * new TLV uCode file layout | ||
565 | * | ||
566 | * The new TLV file format contains TLVs, that each specify | ||
567 | * some piece of data. To facilitate "groups", for example | ||
568 | * different instruction image with different capabilities, | ||
569 | * bundled with the same init image, an alternative mechanism | ||
570 | * is provided: | ||
571 | * When the alternative field is 0, that means that the item | ||
572 | * is always valid. When it is non-zero, then it is only | ||
573 | * valid in conjunction with items of the same alternative, | ||
574 | * in which case the driver (user) selects one alternative | ||
575 | * to use. | ||
576 | */ | ||
577 | |||
578 | enum iwl_ucode_tlv_type { | ||
579 | IWL_UCODE_TLV_INVALID = 0, /* unused */ | ||
580 | IWL_UCODE_TLV_INST = 1, | ||
581 | IWL_UCODE_TLV_DATA = 2, | ||
582 | IWL_UCODE_TLV_INIT = 3, | ||
583 | IWL_UCODE_TLV_INIT_DATA = 4, | ||
584 | IWL_UCODE_TLV_BOOT = 5, | ||
585 | IWL_UCODE_TLV_PROBE_MAX_LEN = 6, /* a u32 value */ | ||
586 | }; | ||
587 | |||
588 | struct iwl_ucode_tlv { | ||
589 | __le16 type; /* see above */ | ||
590 | __le16 alternative; /* see comment */ | ||
591 | __le32 length; /* not including type/length fields */ | ||
592 | u8 data[0]; | ||
593 | } __attribute__ ((packed)); | ||
594 | |||
595 | #define IWL_TLV_UCODE_MAGIC 0x0a4c5749 | ||
596 | |||
597 | struct iwl_tlv_ucode_header { | ||
598 | /* | ||
599 | * The TLV style ucode header is distinguished from | ||
600 | * the v1/v2 style header by first four bytes being | ||
601 | * zero, as such is an invalid combination of | ||
602 | * major/minor/API/serial versions. | ||
603 | */ | ||
604 | __le32 zero; | ||
605 | __le32 magic; | ||
606 | u8 human_readable[64]; | ||
607 | __le32 ver; /* major/minor/API/serial */ | ||
608 | __le32 build; | ||
609 | __le64 alternatives; /* bitmask of valid alternatives */ | ||
610 | /* | ||
611 | * The data contained herein has a TLV layout, | ||
612 | * see above for the TLV header and types. | ||
613 | * Note that each TLV is padded to a length | ||
614 | * that is a multiple of 4 for alignment. | ||
615 | */ | ||
616 | u8 data[0]; | ||
617 | }; | ||
601 | 618 | ||
602 | struct iwl4965_ibss_seq { | 619 | struct iwl4965_ibss_seq { |
603 | u8 mac[ETH_ALEN]; | 620 | u8 mac[ETH_ALEN]; |
@@ -1039,6 +1056,11 @@ struct iwl_event_log { | |||
1039 | #define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3) | 1056 | #define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3) |
1040 | #define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5) | 1057 | #define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5) |
1041 | 1058 | ||
1059 | /* timer constants use to monitor and recover stuck tx queues in mSecs */ | ||
1060 | #define IWL_MONITORING_PERIOD (1000) | ||
1061 | #define IWL_ONE_HUNDRED_MSECS (100) | ||
1062 | #define IWL_SIXTY_SECS (60000) | ||
1063 | |||
1042 | enum iwl_reset { | 1064 | enum iwl_reset { |
1043 | IWL_RF_RESET = 0, | 1065 | IWL_RF_RESET = 0, |
1044 | IWL_FW_RESET, | 1066 | IWL_FW_RESET, |
@@ -1092,10 +1114,6 @@ struct iwl_priv { | |||
1092 | struct iwl_channel_info *channel_info; /* channel info array */ | 1114 | struct iwl_channel_info *channel_info; /* channel info array */ |
1093 | u8 channel_count; /* # of channels */ | 1115 | u8 channel_count; /* # of channels */ |
1094 | 1116 | ||
1095 | /* each calibration channel group in the EEPROM has a derived | ||
1096 | * clip setting for each rate. 3945 only.*/ | ||
1097 | const struct iwl3945_clip_group clip39_groups[5]; | ||
1098 | |||
1099 | /* thermal calibration */ | 1117 | /* thermal calibration */ |
1100 | s32 temperature; /* degrees Kelvin */ | 1118 | s32 temperature; /* degrees Kelvin */ |
1101 | s32 last_temperature; | 1119 | s32 last_temperature; |
@@ -1104,12 +1122,10 @@ struct iwl_priv { | |||
1104 | struct iwl_calib_result calib_results[IWL_CALIB_MAX]; | 1122 | struct iwl_calib_result calib_results[IWL_CALIB_MAX]; |
1105 | 1123 | ||
1106 | /* Scan related variables */ | 1124 | /* Scan related variables */ |
1107 | unsigned long next_scan_jiffies; | ||
1108 | unsigned long scan_start; | 1125 | unsigned long scan_start; |
1109 | unsigned long scan_pass_start; | ||
1110 | unsigned long scan_start_tsf; | 1126 | unsigned long scan_start_tsf; |
1111 | void *scan; | 1127 | void *scan_cmd; |
1112 | int scan_bands; | 1128 | enum ieee80211_band scan_band; |
1113 | struct cfg80211_scan_request *scan_request; | 1129 | struct cfg80211_scan_request *scan_request; |
1114 | bool is_internal_short_scan; | 1130 | bool is_internal_short_scan; |
1115 | u8 scan_tx_ant[IEEE80211_NUM_BANDS]; | 1131 | u8 scan_tx_ant[IEEE80211_NUM_BANDS]; |
@@ -1168,16 +1184,13 @@ struct iwl_priv { | |||
1168 | u64 led_tpt; | 1184 | u64 led_tpt; |
1169 | 1185 | ||
1170 | u16 active_rate; | 1186 | u16 active_rate; |
1171 | u16 active_rate_basic; | ||
1172 | 1187 | ||
1173 | u8 assoc_station_added; | ||
1174 | u8 start_calib; | 1188 | u8 start_calib; |
1175 | struct iwl_sensitivity_data sensitivity_data; | 1189 | struct iwl_sensitivity_data sensitivity_data; |
1176 | struct iwl_chain_noise_data chain_noise_data; | 1190 | struct iwl_chain_noise_data chain_noise_data; |
1177 | __le16 sensitivity_tbl[HD_TABLE_SIZE]; | 1191 | __le16 sensitivity_tbl[HD_TABLE_SIZE]; |
1178 | 1192 | ||
1179 | struct iwl_ht_config current_ht_config; | 1193 | struct iwl_ht_config current_ht_config; |
1180 | u8 last_phy_res[100]; | ||
1181 | 1194 | ||
1182 | /* Rate scaling data */ | 1195 | /* Rate scaling data */ |
1183 | u8 retry_rate; | 1196 | u8 retry_rate; |
@@ -1197,9 +1210,6 @@ struct iwl_priv { | |||
1197 | 1210 | ||
1198 | unsigned long status; | 1211 | unsigned long status; |
1199 | 1212 | ||
1200 | int last_rx_rssi; /* From Rx packet statistics */ | ||
1201 | int last_rx_noise; /* From beacon statistics */ | ||
1202 | |||
1203 | /* counts mgmt, ctl, and data packets */ | 1213 | /* counts mgmt, ctl, and data packets */ |
1204 | struct traffic_stats tx_stats; | 1214 | struct traffic_stats tx_stats; |
1205 | struct traffic_stats rx_stats; | 1215 | struct traffic_stats rx_stats; |
@@ -1218,18 +1228,14 @@ struct iwl_priv { | |||
1218 | #endif | 1228 | #endif |
1219 | 1229 | ||
1220 | /* context information */ | 1230 | /* context information */ |
1221 | u16 rates_mask; | 1231 | u8 bssid[ETH_ALEN]; /* used only on 3945 but filled by core */ |
1222 | |||
1223 | u8 bssid[ETH_ALEN]; | ||
1224 | u16 rts_threshold; | ||
1225 | u8 mac_addr[ETH_ALEN]; | 1232 | u8 mac_addr[ETH_ALEN]; |
1226 | 1233 | ||
1227 | /*station table variables */ | 1234 | /*station table variables */ |
1228 | spinlock_t sta_lock; | 1235 | spinlock_t sta_lock; |
1229 | int num_stations; | 1236 | int num_stations; |
1230 | struct iwl_station_entry stations[IWL_STATION_COUNT]; | 1237 | struct iwl_station_entry stations[IWL_STATION_COUNT]; |
1231 | struct iwl_wep_key wep_keys[WEP_KEYS_MAX]; | 1238 | struct iwl_wep_key wep_keys[WEP_KEYS_MAX]; /* protected by mutex */ |
1232 | u8 default_wep_key; | ||
1233 | u8 key_mapping_key; | 1239 | u8 key_mapping_key; |
1234 | unsigned long ucode_key_table; | 1240 | unsigned long ucode_key_table; |
1235 | 1241 | ||
@@ -1244,10 +1250,6 @@ struct iwl_priv { | |||
1244 | 1250 | ||
1245 | u8 mac80211_registered; | 1251 | u8 mac80211_registered; |
1246 | 1252 | ||
1247 | /* Rx'd packet timing information */ | ||
1248 | u32 last_beacon_time; | ||
1249 | u64 last_tsf; | ||
1250 | |||
1251 | /* eeprom -- this is in the card's little endian byte order */ | 1253 | /* eeprom -- this is in the card's little endian byte order */ |
1252 | u8 *eeprom; | 1254 | u8 *eeprom; |
1253 | int nvm_device_type; | 1255 | int nvm_device_type; |
@@ -1259,29 +1261,67 @@ struct iwl_priv { | |||
1259 | 1261 | ||
1260 | /* Last Rx'd beacon timestamp */ | 1262 | /* Last Rx'd beacon timestamp */ |
1261 | u64 timestamp; | 1263 | u64 timestamp; |
1262 | u16 beacon_int; | ||
1263 | struct ieee80211_vif *vif; | 1264 | struct ieee80211_vif *vif; |
1264 | 1265 | ||
1265 | /*Added for 3945 */ | 1266 | union { |
1266 | void *shared_virt; | 1267 | #if defined(CONFIG_IWL3945) || defined(CONFIG_IWL3945_MODULE) |
1267 | dma_addr_t shared_phys; | 1268 | struct { |
1268 | /*End*/ | 1269 | void *shared_virt; |
1269 | struct iwl_hw_params hw_params; | 1270 | dma_addr_t shared_phys; |
1270 | 1271 | ||
1271 | /* INT ICT Table */ | 1272 | struct delayed_work thermal_periodic; |
1272 | __le32 *ict_tbl; | 1273 | struct delayed_work rfkill_poll; |
1273 | dma_addr_t ict_tbl_dma; | 1274 | |
1274 | dma_addr_t aligned_ict_tbl_dma; | 1275 | struct iwl3945_notif_statistics statistics; |
1275 | int ict_index; | 1276 | #ifdef CONFIG_IWLWIFI_DEBUG |
1276 | void *ict_tbl_vir; | 1277 | struct iwl3945_notif_statistics accum_statistics; |
1277 | u32 inta; | 1278 | struct iwl3945_notif_statistics delta_statistics; |
1278 | bool use_ict; | 1279 | struct iwl3945_notif_statistics max_delta; |
1280 | #endif | ||
1281 | |||
1282 | u32 sta_supp_rates; | ||
1283 | int last_rx_rssi; /* From Rx packet statistics */ | ||
1284 | |||
1285 | /* Rx'd packet timing information */ | ||
1286 | u32 last_beacon_time; | ||
1287 | u64 last_tsf; | ||
1288 | |||
1289 | /* | ||
1290 | * each calibration channel group in the | ||
1291 | * EEPROM has a derived clip setting for | ||
1292 | * each rate. | ||
1293 | */ | ||
1294 | const struct iwl3945_clip_group clip_groups[5]; | ||
1295 | |||
1296 | } _3945; | ||
1297 | #endif | ||
1298 | #if defined(CONFIG_IWLAGN) || defined(CONFIG_IWLAGN_MODULE) | ||
1299 | struct { | ||
1300 | /* INT ICT Table */ | ||
1301 | __le32 *ict_tbl; | ||
1302 | void *ict_tbl_vir; | ||
1303 | dma_addr_t ict_tbl_dma; | ||
1304 | dma_addr_t aligned_ict_tbl_dma; | ||
1305 | int ict_index; | ||
1306 | u32 inta; | ||
1307 | bool use_ict; | ||
1308 | /* | ||
1309 | * reporting the number of tids has AGG on. 0 means | ||
1310 | * no AGGREGATION | ||
1311 | */ | ||
1312 | u8 agg_tids_count; | ||
1313 | |||
1314 | struct iwl_rx_phy_res last_phy_res; | ||
1315 | bool last_phy_res_valid; | ||
1316 | |||
1317 | struct completion firmware_loading_complete; | ||
1318 | } _agn; | ||
1319 | #endif | ||
1320 | }; | ||
1321 | |||
1322 | struct iwl_hw_params hw_params; | ||
1279 | 1323 | ||
1280 | u32 inta_mask; | 1324 | u32 inta_mask; |
1281 | /* Current association information needed to configure the | ||
1282 | * hardware */ | ||
1283 | u16 assoc_id; | ||
1284 | u16 assoc_capability; | ||
1285 | 1325 | ||
1286 | struct iwl_qos_info qos_data; | 1326 | struct iwl_qos_info qos_data; |
1287 | 1327 | ||
@@ -1291,7 +1331,6 @@ struct iwl_priv { | |||
1291 | struct work_struct scan_completed; | 1331 | struct work_struct scan_completed; |
1292 | struct work_struct rx_replenish; | 1332 | struct work_struct rx_replenish; |
1293 | struct work_struct abort_scan; | 1333 | struct work_struct abort_scan; |
1294 | struct work_struct request_scan; | ||
1295 | struct work_struct beacon_update; | 1334 | struct work_struct beacon_update; |
1296 | struct work_struct tt_work; | 1335 | struct work_struct tt_work; |
1297 | struct work_struct ct_enter; | 1336 | struct work_struct ct_enter; |
@@ -1304,10 +1343,6 @@ struct iwl_priv { | |||
1304 | struct delayed_work alive_start; | 1343 | struct delayed_work alive_start; |
1305 | struct delayed_work scan_check; | 1344 | struct delayed_work scan_check; |
1306 | 1345 | ||
1307 | /*For 3945 only*/ | ||
1308 | struct delayed_work thermal_periodic; | ||
1309 | struct delayed_work rfkill_poll; | ||
1310 | |||
1311 | /* TX Power */ | 1346 | /* TX Power */ |
1312 | s8 tx_power_user_lmt; | 1347 | s8 tx_power_user_lmt; |
1313 | s8 tx_power_device_lmt; | 1348 | s8 tx_power_device_lmt; |
@@ -1339,13 +1374,8 @@ struct iwl_priv { | |||
1339 | struct work_struct run_time_calib_work; | 1374 | struct work_struct run_time_calib_work; |
1340 | struct timer_list statistics_periodic; | 1375 | struct timer_list statistics_periodic; |
1341 | struct timer_list ucode_trace; | 1376 | struct timer_list ucode_trace; |
1377 | struct timer_list monitor_recover; | ||
1342 | bool hw_ready; | 1378 | bool hw_ready; |
1343 | /*For 3945*/ | ||
1344 | #define IWL_DEFAULT_TX_POWER 0x0F | ||
1345 | |||
1346 | struct iwl3945_notif_statistics statistics_39; | ||
1347 | |||
1348 | u32 sta_supp_rates; | ||
1349 | 1379 | ||
1350 | struct iwl_event_log event_log; | 1380 | struct iwl_event_log event_log; |
1351 | }; /*iwl_priv */ | 1381 | }; /*iwl_priv */ |