aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-4965.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.h58
1 files changed, 51 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h
index d0abbb3a5ac7..30001482c485 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.h
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.h
@@ -129,6 +129,7 @@ struct iwl4965_queue {
129 129
130#define MAX_NUM_OF_TBS (20) 130#define MAX_NUM_OF_TBS (20)
131 131
132/* One for each TFD */
132struct iwl4965_tx_info { 133struct iwl4965_tx_info {
133 struct ieee80211_tx_status status; 134 struct ieee80211_tx_status status;
134 struct sk_buff *skb[MAX_NUM_OF_TBS]; 135 struct sk_buff *skb[MAX_NUM_OF_TBS];
@@ -136,10 +137,16 @@ struct iwl4965_tx_info {
136 137
137/** 138/**
138 * struct iwl4965_tx_queue - Tx Queue for DMA 139 * struct iwl4965_tx_queue - Tx Queue for DMA
139 * @need_update: need to update read/write index 140 * @q: generic Rx/Tx queue descriptor
140 * @shed_retry: queue is HT AGG enabled 141 * @bd: base of circular buffer of TFDs
142 * @cmd: array of command/Tx buffers
143 * @dma_addr_cmd: physical address of cmd/tx buffer array
144 * @txb: array of per-TFD driver data
145 * @need_update: indicates need to update read/write index
146 * @sched_retry: indicates queue is high-throughput aggregation (HT AGG) enabled
141 * 147 *
142 * Queue consists of circular buffer of BD's and required locking structures. 148 * A Tx queue consists of circular buffer of BDs (a.k.a. TFDs, transmit frame
149 * descriptors) and required locking structures.
143 */ 150 */
144struct iwl4965_tx_queue { 151struct iwl4965_tx_queue {
145 struct iwl4965_queue q; 152 struct iwl4965_queue q;
@@ -332,9 +339,16 @@ struct iwl4965_cmd_meta {
332 339
333} __attribute__ ((packed)); 340} __attribute__ ((packed));
334 341
342/**
343 * struct iwl4965_cmd
344 *
345 * For allocation of the command and tx queues, this establishes the overall
346 * size of the largest command we send to uCode, except for a scan command
347 * (which is relatively huge; space is allocated separately).
348 */
335struct iwl4965_cmd { 349struct iwl4965_cmd {
336 struct iwl4965_cmd_meta meta; 350 struct iwl4965_cmd_meta meta; /* driver data */
337 struct iwl4965_cmd_header hdr; 351 struct iwl4965_cmd_header hdr; /* uCode API */
338 union { 352 union {
339 struct iwl4965_addsta_cmd addsta; 353 struct iwl4965_addsta_cmd addsta;
340 struct iwl4965_led_cmd led; 354 struct iwl4965_led_cmd led;
@@ -436,6 +450,20 @@ struct iwl4965_rx_queue {
436 450
437#ifdef CONFIG_IWL4965_HT 451#ifdef CONFIG_IWL4965_HT
438#ifdef CONFIG_IWL4965_HT_AGG 452#ifdef CONFIG_IWL4965_HT_AGG
453/**
454 * struct iwl4965_ht_agg -- aggregation status while waiting for block-ack
455 * @txq_id: Tx queue used for Tx attempt
456 * @frame_count: # frames attempted by Tx command
457 * @wait_for_ba: Expect block-ack before next Tx reply
458 * @start_idx: Index of 1st Transmit Frame Descriptor (TFD) in Tx window
459 * @bitmap0: Low order bitmap, one bit for each frame pending ACK in Tx window
460 * @bitmap1: High order, one bit for each frame pending ACK in Tx window
461 * @rate_n_flags: Rate at which Tx was attempted
462 *
463 * If REPLY_TX indicates that aggregation was attempted, driver must wait
464 * for block ack (REPLY_COMPRESSED_BA). This struct stores tx reply info
465 * until block ack arrives.
466 */
439struct iwl4965_ht_agg { 467struct iwl4965_ht_agg {
440 u16 txq_id; 468 u16 txq_id;
441 u16 frame_count; 469 u16 frame_count;
@@ -566,6 +594,19 @@ struct iwl4965_ibss_seq {
566 struct list_head list; 594 struct list_head list;
567}; 595};
568 596
597/**
598 * struct iwl4965_driver_hw_info
599 * @max_txq_num: Max # Tx queues supported
600 * @ac_queue_count: # Tx queues for EDCA Access Categories (AC)
601 * @tx_cmd_len: Size of Tx command (but not including frame itself)
602 * @max_rxq_size: Max # Rx frames in Rx queue (must be power-of-2)
603 * @rx_buffer_size:
604 * @max_rxq_log: Log-base-2 of max_rxq_size
605 * @max_stations:
606 * @bcast_sta_id:
607 * @shared_virt: Pointer to driver/uCode shared Tx Byte Counts and Rx status
608 * @shared_phys: Physical Pointer to Tx Byte Counts and Rx status
609 */
569struct iwl4965_driver_hw_info { 610struct iwl4965_driver_hw_info {
570 u16 max_txq_num; 611 u16 max_txq_num;
571 u16 ac_queue_count; 612 u16 ac_queue_count;
@@ -1149,10 +1190,11 @@ struct iwl4965_priv {
1149 u8 call_post_assoc_from_beacon; 1190 u8 call_post_assoc_from_beacon;
1150 u8 assoc_station_added; 1191 u8 assoc_station_added;
1151 u8 use_ant_b_for_management_frame; /* Tx antenna selection */ 1192 u8 use_ant_b_for_management_frame; /* Tx antenna selection */
1152 /* HT variables */ 1193
1194 /* High Throughput (HT) variables */
1153 u8 is_dup; 1195 u8 is_dup;
1154 u8 is_ht_enabled; 1196 u8 is_ht_enabled;
1155 u8 channel_width; /* 0=20MHZ, 1=40MHZ */ 1197 u8 channel_width; /* 0=20MHZ, 1=40MHZ supported */
1156 u8 current_channel_width; 1198 u8 current_channel_width;
1157 u8 valid_antenna; /* Bit mask of antennas actually connected */ 1199 u8 valid_antenna; /* Bit mask of antennas actually connected */
1158#ifdef CONFIG_IWL4965_SENSITIVITY 1200#ifdef CONFIG_IWL4965_SENSITIVITY
@@ -1229,6 +1271,8 @@ struct iwl4965_priv {
1229 u16 last_seq_num; 1271 u16 last_seq_num;
1230 u16 last_frag_num; 1272 u16 last_frag_num;
1231 unsigned long last_packet_time; 1273 unsigned long last_packet_time;
1274
1275 /* Hash table for finding stations in IBSS network */
1232 struct list_head ibss_mac_hash[IWL_IBSS_MAC_HASH_SIZE]; 1276 struct list_head ibss_mac_hash[IWL_IBSS_MAC_HASH_SIZE];
1233 1277
1234 /* eeprom */ 1278 /* eeprom */