aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-dev.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h289
1 files changed, 160 insertions, 129 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 6054c5fba0c1..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;
56extern struct iwl_cfg iwl5100_abg_cfg; 57extern struct iwl_cfg iwl5100_abg_cfg;
57extern struct iwl_cfg iwl5150_agn_cfg; 58extern struct iwl_cfg iwl5150_agn_cfg;
58extern struct iwl_cfg iwl5150_abg_cfg; 59extern struct iwl_cfg iwl5150_abg_cfg;
60extern struct iwl_cfg iwl6000g2a_2agn_cfg;
59extern struct iwl_cfg iwl6000i_2agn_cfg; 61extern struct iwl_cfg iwl6000i_2agn_cfg;
60extern struct iwl_cfg iwl6000i_2abg_cfg; 62extern struct iwl_cfg iwl6000i_2abg_cfg;
61extern struct iwl_cfg iwl6000i_2bg_cfg; 63extern struct iwl_cfg iwl6000i_2bg_cfg;
@@ -67,45 +69,6 @@ extern struct iwl_cfg iwl1000_bg_cfg;
67 69
68struct iwl_tx_queue; 70struct iwl_tx_queue;
69 71
70/* shared structures from iwl-5000.c */
71extern struct iwl_mod_params iwl50_mod_params;
72extern struct iwl_ucode_ops iwl5000_ucode;
73extern struct iwl_lib_ops iwl5000_lib;
74extern struct iwl_hcmd_ops iwl5000_hcmd;
75extern struct iwl_hcmd_utils_ops iwl5000_hcmd_utils;
76
77/* shared functions from iwl-5000.c */
78extern u16 iwl5000_get_hcmd_size(u8 cmd_id, u16 len);
79extern u16 iwl5000_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd,
80 u8 *data);
81extern void iwl5000_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
82 __le32 *tx_flags);
83extern int iwl5000_calc_rssi(struct iwl_priv *priv,
84 struct iwl_rx_phy_res *rx_resp);
85extern void iwl5000_nic_config(struct iwl_priv *priv);
86extern u16 iwl5000_eeprom_calib_version(struct iwl_priv *priv);
87extern const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv,
88 size_t offset);
89extern void iwl5000_txq_update_byte_cnt_tbl(struct iwl_priv *priv,
90 struct iwl_tx_queue *txq,
91 u16 byte_cnt);
92extern void iwl5000_txq_inval_byte_cnt_tbl(struct iwl_priv *priv,
93 struct iwl_tx_queue *txq);
94extern int iwl5000_load_ucode(struct iwl_priv *priv);
95extern void iwl5000_init_alive_start(struct iwl_priv *priv);
96extern int iwl5000_alive_notify(struct iwl_priv *priv);
97extern int iwl5000_hw_set_hw_params(struct iwl_priv *priv);
98extern int iwl5000_txq_agg_enable(struct iwl_priv *priv, int txq_id,
99 int tx_fifo, int sta_id, int tid, u16 ssn_idx);
100extern int iwl5000_txq_agg_disable(struct iwl_priv *priv, u16 txq_id,
101 u16 ssn_idx, u8 tx_fifo);
102extern void iwl5000_txq_set_sched(struct iwl_priv *priv, u32 mask);
103extern void iwl5000_setup_deferred_work(struct iwl_priv *priv);
104extern void iwl5000_rx_handler_setup(struct iwl_priv *priv);
105extern int iwl5000_hw_valid_rtc_data_addr(u32 addr);
106extern int iwl5000_send_tx_power(struct iwl_priv *priv);
107extern 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
522union 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 */
543struct iwl_qos_info { 481struct 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 */
549struct iwl_station_entry { 492struct 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
500struct 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 */
563struct iwl_station_priv { 514struct 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 */
528struct 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) */
571struct fw_desc { 533struct 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 */
578struct iwl_ucode_header { 540struct 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
578enum 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
588struct 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
597struct 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
602struct iwl4965_ibss_seq { 619struct 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
1042enum iwl_reset { 1064enum 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,11 +1331,11 @@ 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;
1298 struct work_struct ct_exit; 1337 struct work_struct ct_exit;
1338 struct work_struct start_internal_scan;
1299 1339
1300 struct tasklet_struct irq_tasklet; 1340 struct tasklet_struct irq_tasklet;
1301 1341
@@ -1303,10 +1343,6 @@ struct iwl_priv {
1303 struct delayed_work alive_start; 1343 struct delayed_work alive_start;
1304 struct delayed_work scan_check; 1344 struct delayed_work scan_check;
1305 1345
1306 /*For 3945 only*/
1307 struct delayed_work thermal_periodic;
1308 struct delayed_work rfkill_poll;
1309
1310 /* TX Power */ 1346 /* TX Power */
1311 s8 tx_power_user_lmt; 1347 s8 tx_power_user_lmt;
1312 s8 tx_power_device_lmt; 1348 s8 tx_power_device_lmt;
@@ -1338,13 +1374,8 @@ struct iwl_priv {
1338 struct work_struct run_time_calib_work; 1374 struct work_struct run_time_calib_work;
1339 struct timer_list statistics_periodic; 1375 struct timer_list statistics_periodic;
1340 struct timer_list ucode_trace; 1376 struct timer_list ucode_trace;
1377 struct timer_list monitor_recover;
1341 bool hw_ready; 1378 bool hw_ready;
1342 /*For 3945*/
1343#define IWL_DEFAULT_TX_POWER 0x0F
1344
1345 struct iwl3945_notif_statistics statistics_39;
1346
1347 u32 sta_supp_rates;
1348 1379
1349 struct iwl_event_log event_log; 1380 struct iwl_event_log event_log;
1350}; /*iwl_priv */ 1381}; /*iwl_priv */