|
@@ -103,9 +103,7 @@ enum {
|
|
|
REPLY_WEPKEY = 0x20,
|
|
|
|
|
|
/* RX, TX, LEDs */
|
|
|
- REPLY_3945_RX = 0x1b, /* 3945 only */
|
|
|
REPLY_TX = 0x1c,
|
|
|
- REPLY_RATE_SCALE = 0x47, /* 3945 only */
|
|
|
REPLY_LEDS_CMD = 0x48,
|
|
|
REPLY_TX_LINK_QUALITY_CMD = 0x4e, /* for 4965 and up */
|
|
|
|
|
@@ -229,7 +227,7 @@ struct iwl_cmd_header {
|
|
|
* There is one exception: uCode sets bit 15 when it originates
|
|
|
* the response/notification, i.e. when the response/notification
|
|
|
* is not a direct response to a command sent by the driver. For
|
|
|
- * example, uCode issues REPLY_3945_RX when it sends a received frame
|
|
|
+ * example, uCode issues REPLY_RX when it sends a received frame
|
|
|
* to the driver; it is not a direct response to any driver command.
|
|
|
*
|
|
|
* The Linux driver uses the following format:
|
|
@@ -248,36 +246,6 @@ struct iwl_cmd_header {
|
|
|
} __packed;
|
|
|
|
|
|
|
|
|
-/**
|
|
|
- * struct iwl3945_tx_power
|
|
|
- *
|
|
|
- * Used in REPLY_TX_PWR_TABLE_CMD, REPLY_SCAN_CMD, REPLY_CHANNEL_SWITCH
|
|
|
- *
|
|
|
- * Each entry contains two values:
|
|
|
- * 1) DSP gain (or sometimes called DSP attenuation). This is a fine-grained
|
|
|
- * linear value that multiplies the output of the digital signal processor,
|
|
|
- * before being sent to the analog radio.
|
|
|
- * 2) Radio gain. This sets the analog gain of the radio Tx path.
|
|
|
- * It is a coarser setting, and behaves in a logarithmic (dB) fashion.
|
|
|
- *
|
|
|
- * Driver obtains values from struct iwl3945_tx_power power_gain_table[][].
|
|
|
- */
|
|
|
-struct iwl3945_tx_power {
|
|
|
- u8 tx_gain; /* gain for analog radio */
|
|
|
- u8 dsp_atten; /* gain for DSP */
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/**
|
|
|
- * struct iwl3945_power_per_rate
|
|
|
- *
|
|
|
- * Used in REPLY_TX_PWR_TABLE_CMD, REPLY_CHANNEL_SWITCH
|
|
|
- */
|
|
|
-struct iwl3945_power_per_rate {
|
|
|
- u8 rate; /* plcp */
|
|
|
- struct iwl3945_tx_power tpc;
|
|
|
- u8 reserved;
|
|
|
-} __packed;
|
|
|
-
|
|
|
/**
|
|
|
* iwlagn rate_n_flags bit fields
|
|
|
*
|
|
@@ -376,30 +344,6 @@ struct iwl3945_power_per_rate {
|
|
|
#define IWL_PWR_NUM_HT_OFDM_ENTRIES 24
|
|
|
#define IWL_PWR_CCK_ENTRIES 2
|
|
|
|
|
|
-/**
|
|
|
- * union iwl4965_tx_power_dual_stream
|
|
|
- *
|
|
|
- * Host format used for REPLY_TX_PWR_TABLE_CMD, REPLY_CHANNEL_SWITCH
|
|
|
- * Use __le32 version (struct tx_power_dual_stream) when building command.
|
|
|
- *
|
|
|
- * Driver provides radio gain and DSP attenuation settings to device in pairs,
|
|
|
- * one value for each transmitter chain. The first value is for transmitter A,
|
|
|
- * second for transmitter B.
|
|
|
- *
|
|
|
- * For SISO bit rates, both values in a pair should be identical.
|
|
|
- * For MIMO rates, one value may be different from the other,
|
|
|
- * in order to balance the Tx output between the two transmitters.
|
|
|
- *
|
|
|
- * See more details in doc for TXPOWER in iwl-4965-hw.h.
|
|
|
- */
|
|
|
-union iwl4965_tx_power_dual_stream {
|
|
|
- struct {
|
|
|
- u8 radio_tx_gain[2];
|
|
|
- u8 dsp_predis_atten[2];
|
|
|
- } s;
|
|
|
- u32 dw;
|
|
|
-};
|
|
|
-
|
|
|
/**
|
|
|
* struct tx_power_dual_stream
|
|
|
*
|
|
@@ -411,15 +355,6 @@ struct tx_power_dual_stream {
|
|
|
__le32 dw;
|
|
|
} __packed;
|
|
|
|
|
|
-/**
|
|
|
- * struct iwl4965_tx_power_db
|
|
|
- *
|
|
|
- * Entire table within REPLY_TX_PWR_TABLE_CMD, REPLY_CHANNEL_SWITCH
|
|
|
- */
|
|
|
-struct iwl4965_tx_power_db {
|
|
|
- struct tx_power_dual_stream power_tbl[POWER_TABLE_NUM_ENTRIES];
|
|
|
-} __packed;
|
|
|
-
|
|
|
/**
|
|
|
* Command REPLY_TX_POWER_DBM_CMD = 0x98
|
|
|
* struct iwlagn_tx_power_dbm_cmd
|
|
@@ -724,46 +659,6 @@ enum {
|
|
|
* regardless of whether RXON_FILTER_ASSOC_MSK is set.
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_rxon_cmd {
|
|
|
- u8 node_addr[6];
|
|
|
- __le16 reserved1;
|
|
|
- u8 bssid_addr[6];
|
|
|
- __le16 reserved2;
|
|
|
- u8 wlap_bssid_addr[6];
|
|
|
- __le16 reserved3;
|
|
|
- u8 dev_type;
|
|
|
- u8 air_propagation;
|
|
|
- __le16 reserved4;
|
|
|
- u8 ofdm_basic_rates;
|
|
|
- u8 cck_basic_rates;
|
|
|
- __le16 assoc_id;
|
|
|
- __le32 flags;
|
|
|
- __le32 filter_flags;
|
|
|
- __le16 channel;
|
|
|
- __le16 reserved5;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_rxon_cmd {
|
|
|
- u8 node_addr[6];
|
|
|
- __le16 reserved1;
|
|
|
- u8 bssid_addr[6];
|
|
|
- __le16 reserved2;
|
|
|
- u8 wlap_bssid_addr[6];
|
|
|
- __le16 reserved3;
|
|
|
- u8 dev_type;
|
|
|
- u8 air_propagation;
|
|
|
- __le16 rx_chain;
|
|
|
- u8 ofdm_basic_rates;
|
|
|
- u8 cck_basic_rates;
|
|
|
- __le16 assoc_id;
|
|
|
- __le32 flags;
|
|
|
- __le32 filter_flags;
|
|
|
- __le16 channel;
|
|
|
- u8 ofdm_ht_single_stream_basic_rates;
|
|
|
- u8 ofdm_ht_dual_stream_basic_rates;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/* 5000 HW just extend this command */
|
|
|
struct iwl_rxon_cmd {
|
|
|
u8 node_addr[6];
|
|
|
__le16 reserved1;
|
|
@@ -791,25 +686,6 @@ struct iwl_rxon_cmd {
|
|
|
/*
|
|
|
* REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)
|
|
|
*/
|
|
|
-struct iwl3945_rxon_assoc_cmd {
|
|
|
- __le32 flags;
|
|
|
- __le32 filter_flags;
|
|
|
- u8 ofdm_basic_rates;
|
|
|
- u8 cck_basic_rates;
|
|
|
- __le16 reserved;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_rxon_assoc_cmd {
|
|
|
- __le32 flags;
|
|
|
- __le32 filter_flags;
|
|
|
- u8 ofdm_basic_rates;
|
|
|
- u8 cck_basic_rates;
|
|
|
- u8 ofdm_ht_single_stream_basic_rates;
|
|
|
- u8 ofdm_ht_dual_stream_basic_rates;
|
|
|
- __le16 rx_chain_select_flags;
|
|
|
- __le16 reserved;
|
|
|
-} __packed;
|
|
|
-
|
|
|
struct iwl5000_rxon_assoc_cmd {
|
|
|
__le32 flags;
|
|
|
__le32 filter_flags;
|
|
@@ -845,26 +721,6 @@ struct iwl_rxon_time_cmd {
|
|
|
/*
|
|
|
* REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response)
|
|
|
*/
|
|
|
-struct iwl3945_channel_switch_cmd {
|
|
|
- u8 band;
|
|
|
- u8 expect_beacon;
|
|
|
- __le16 channel;
|
|
|
- __le32 rxon_flags;
|
|
|
- __le32 rxon_filter_flags;
|
|
|
- __le32 switch_time;
|
|
|
- struct iwl3945_power_per_rate power[IWL_MAX_RATES];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_channel_switch_cmd {
|
|
|
- u8 band;
|
|
|
- u8 expect_beacon;
|
|
|
- __le16 channel;
|
|
|
- __le32 rxon_flags;
|
|
|
- __le32 rxon_filter_flags;
|
|
|
- __le32 switch_time;
|
|
|
- struct iwl4965_tx_power_db tx_power;
|
|
|
-} __packed;
|
|
|
-
|
|
|
/**
|
|
|
* struct iwl5000_channel_switch_cmd
|
|
|
* @band: 0- 5.2GHz, 1- 2.4GHz
|
|
@@ -978,15 +834,10 @@ struct iwl_qosparam_cmd {
|
|
|
#define IWL_AP_ID 0
|
|
|
#define IWL_AP_ID_PAN 1
|
|
|
#define IWL_STA_ID 2
|
|
|
-#define IWL3945_BROADCAST_ID 24
|
|
|
-#define IWL3945_STATION_COUNT 25
|
|
|
-#define IWL4965_BROADCAST_ID 31
|
|
|
-#define IWL4965_STATION_COUNT 32
|
|
|
#define IWLAGN_PAN_BCAST_ID 14
|
|
|
#define IWLAGN_BROADCAST_ID 15
|
|
|
#define IWLAGN_STATION_COUNT 16
|
|
|
|
|
|
-#define IWL_STATION_COUNT 32 /* MAX(3945,4965)*/
|
|
|
#define IWL_INVALID_STATION 255
|
|
|
|
|
|
#define STA_FLG_TX_RATE_MSK cpu_to_le32(1 << 2)
|
|
@@ -1034,16 +885,6 @@ struct iwl_qosparam_cmd {
|
|
|
* combined with Traffic ID (QOS priority), in format used by Tx Scheduler */
|
|
|
#define BUILD_RAxTID(sta_id, tid) (((sta_id) << 4) + (tid))
|
|
|
|
|
|
-struct iwl4965_keyinfo {
|
|
|
- __le16 key_flags;
|
|
|
- u8 tkip_rx_tsc_byte2; /* TSC[2] for key mix ph1 detection */
|
|
|
- u8 reserved1;
|
|
|
- __le16 tkip_rx_ttak[5]; /* 10-byte unicast TKIP TTAK */
|
|
|
- u8 key_offset;
|
|
|
- u8 reserved2;
|
|
|
- u8 key[16]; /* 16-byte unicast decryption key */
|
|
|
-} __packed;
|
|
|
-
|
|
|
/* agn */
|
|
|
struct iwl_keyinfo {
|
|
|
__le16 key_flags;
|
|
@@ -1085,7 +926,6 @@ struct sta_id_modify {
|
|
|
* with info on security keys, aggregation parameters, and Tx rates for
|
|
|
* initial Tx attempt and any retries (agn devices uses
|
|
|
* REPLY_TX_LINK_QUALITY_CMD,
|
|
|
- * 3945 uses REPLY_RATE_SCALE to set up rate tables).
|
|
|
*
|
|
|
* REPLY_ADD_STA sets up the table entry for one station, either creating
|
|
|
* a new entry, or modifying a pre-existing one.
|
|
@@ -1105,72 +945,6 @@ struct sta_id_modify {
|
|
|
* entries for all STAs in network, starting with index IWL_STA_ID.
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_addsta_cmd {
|
|
|
- u8 mode; /* 1: modify existing, 0: add new station */
|
|
|
- u8 reserved[3];
|
|
|
- struct sta_id_modify sta;
|
|
|
- struct iwl4965_keyinfo key;
|
|
|
- __le32 station_flags; /* STA_FLG_* */
|
|
|
- __le32 station_flags_msk; /* STA_FLG_* */
|
|
|
-
|
|
|
- /* bit field to disable (1) or enable (0) Tx for Traffic ID (TID)
|
|
|
- * corresponding to bit (e.g. bit 5 controls TID 5).
|
|
|
- * Set modify_mask bit STA_MODIFY_TID_DISABLE_TX to use this field. */
|
|
|
- __le16 tid_disable_tx;
|
|
|
-
|
|
|
- __le16 rate_n_flags;
|
|
|
-
|
|
|
- /* TID for which to add block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
|
|
|
- u8 add_immediate_ba_tid;
|
|
|
-
|
|
|
- /* TID for which to remove block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_DELBA_TID_MSK to use this field. */
|
|
|
- u8 remove_immediate_ba_tid;
|
|
|
-
|
|
|
- /* Starting Sequence Number for added block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
|
|
|
- __le16 add_immediate_ba_ssn;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_addsta_cmd {
|
|
|
- u8 mode; /* 1: modify existing, 0: add new station */
|
|
|
- u8 reserved[3];
|
|
|
- struct sta_id_modify sta;
|
|
|
- struct iwl4965_keyinfo key;
|
|
|
- __le32 station_flags; /* STA_FLG_* */
|
|
|
- __le32 station_flags_msk; /* STA_FLG_* */
|
|
|
-
|
|
|
- /* bit field to disable (1) or enable (0) Tx for Traffic ID (TID)
|
|
|
- * corresponding to bit (e.g. bit 5 controls TID 5).
|
|
|
- * Set modify_mask bit STA_MODIFY_TID_DISABLE_TX to use this field. */
|
|
|
- __le16 tid_disable_tx;
|
|
|
-
|
|
|
- __le16 reserved1;
|
|
|
-
|
|
|
- /* TID for which to add block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
|
|
|
- u8 add_immediate_ba_tid;
|
|
|
-
|
|
|
- /* TID for which to remove block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_DELBA_TID_MSK to use this field. */
|
|
|
- u8 remove_immediate_ba_tid;
|
|
|
-
|
|
|
- /* Starting Sequence Number for added block-ack support.
|
|
|
- * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
|
|
|
- __le16 add_immediate_ba_ssn;
|
|
|
-
|
|
|
- /*
|
|
|
- * Number of packets OK to transmit to station even though
|
|
|
- * it is asleep -- used to synchronise PS-poll and u-APSD
|
|
|
- * responses while ucode keeps track of STA sleep state.
|
|
|
- */
|
|
|
- __le16 sleep_tx_count;
|
|
|
-
|
|
|
- __le16 reserved2;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/* agn */
|
|
|
struct iwl_addsta_cmd {
|
|
|
u8 mode; /* 1: modify existing, 0: add new station */
|
|
|
u8 reserved[3];
|
|
@@ -1339,62 +1113,6 @@ struct iwl_wep_cmd {
|
|
|
#define RX_MPDU_RES_STATUS_DEC_DONE_MSK (0x800)
|
|
|
|
|
|
|
|
|
-struct iwl3945_rx_frame_stats {
|
|
|
- u8 phy_count;
|
|
|
- u8 id;
|
|
|
- u8 rssi;
|
|
|
- u8 agc;
|
|
|
- __le16 sig_avg;
|
|
|
- __le16 noise_diff;
|
|
|
- u8 payload[0];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl3945_rx_frame_hdr {
|
|
|
- __le16 channel;
|
|
|
- __le16 phy_flags;
|
|
|
- u8 reserved1;
|
|
|
- u8 rate;
|
|
|
- __le16 len;
|
|
|
- u8 payload[0];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl3945_rx_frame_end {
|
|
|
- __le32 status;
|
|
|
- __le64 timestamp;
|
|
|
- __le32 beacon_timestamp;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/*
|
|
|
- * REPLY_3945_RX = 0x1b (response only, not a command)
|
|
|
- *
|
|
|
- * NOTE: DO NOT dereference from casts to this structure
|
|
|
- * It is provided only for calculating minimum data set size.
|
|
|
- * The actual offsets of the hdr and end are dynamic based on
|
|
|
- * stats.phy_count
|
|
|
- */
|
|
|
-struct iwl3945_rx_frame {
|
|
|
- struct iwl3945_rx_frame_stats stats;
|
|
|
- struct iwl3945_rx_frame_hdr hdr;
|
|
|
- struct iwl3945_rx_frame_end end;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-#define IWL39_RX_FRAME_SIZE (4 + sizeof(struct iwl3945_rx_frame))
|
|
|
-
|
|
|
-/* Fixed (non-configurable) rx data from phy */
|
|
|
-
|
|
|
-#define IWL49_RX_RES_PHY_CNT 14
|
|
|
-#define IWL49_RX_PHY_FLAGS_ANTENNAE_OFFSET (4)
|
|
|
-#define IWL49_RX_PHY_FLAGS_ANTENNAE_MASK (0x70)
|
|
|
-#define IWL49_AGC_DB_MASK (0x3f80) /* MASK(7,13) */
|
|
|
-#define IWL49_AGC_DB_POS (7)
|
|
|
-struct iwl4965_rx_non_cfg_phy {
|
|
|
- __le16 ant_selection; /* ant A bit 4, ant B bit 5, ant C bit 6 */
|
|
|
- __le16 agc_info; /* agc code 0:6, agc dB 7:13, reserved 14:15 */
|
|
|
- u8 rssi_info[6]; /* we use even entries, 0/2/4 for A/B/C rssi */
|
|
|
- u8 pad[0];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-
|
|
|
#define IWLAGN_RX_RES_PHY_CNT 8
|
|
|
#define IWLAGN_RX_RES_AGC_IDX 1
|
|
|
#define IWLAGN_RX_RES_RSSI_AB_IDX 2
|
|
@@ -1578,80 +1296,6 @@ struct iwl_rx_mpdu_res_start {
|
|
|
* REPLY_TX = 0x1c (command)
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_tx_cmd {
|
|
|
- /*
|
|
|
- * MPDU byte count:
|
|
|
- * MAC header (24/26/30/32 bytes) + 2 bytes pad if 26/30 header size,
|
|
|
- * + 8 byte IV for CCM or TKIP (not used for WEP)
|
|
|
- * + Data payload
|
|
|
- * + 8-byte MIC (not used for CCM/WEP)
|
|
|
- * NOTE: Does not include Tx command bytes, post-MAC pad bytes,
|
|
|
- * MIC (CCM) 8 bytes, ICV (WEP/TKIP/CKIP) 4 bytes, CRC 4 bytes.i
|
|
|
- * Range: 14-2342 bytes.
|
|
|
- */
|
|
|
- __le16 len;
|
|
|
-
|
|
|
- /*
|
|
|
- * MPDU or MSDU byte count for next frame.
|
|
|
- * Used for fragmentation and bursting, but not 11n aggregation.
|
|
|
- * Same as "len", but for next frame. Set to 0 if not applicable.
|
|
|
- */
|
|
|
- __le16 next_frame_len;
|
|
|
-
|
|
|
- __le32 tx_flags; /* TX_CMD_FLG_* */
|
|
|
-
|
|
|
- u8 rate;
|
|
|
-
|
|
|
- /* Index of recipient station in uCode's station table */
|
|
|
- u8 sta_id;
|
|
|
- u8 tid_tspec;
|
|
|
- u8 sec_ctl;
|
|
|
- u8 key[16];
|
|
|
- union {
|
|
|
- u8 byte[8];
|
|
|
- __le16 word[4];
|
|
|
- __le32 dw[2];
|
|
|
- } tkip_mic;
|
|
|
- __le32 next_frame_info;
|
|
|
- union {
|
|
|
- __le32 life_time;
|
|
|
- __le32 attempt;
|
|
|
- } stop_time;
|
|
|
- u8 supp_rates[2];
|
|
|
- u8 rts_retry_limit; /*byte 50 */
|
|
|
- u8 data_retry_limit; /*byte 51 */
|
|
|
- union {
|
|
|
- __le16 pm_frame_timeout;
|
|
|
- __le16 attempt_duration;
|
|
|
- } timeout;
|
|
|
-
|
|
|
- /*
|
|
|
- * Duration of EDCA burst Tx Opportunity, in 32-usec units.
|
|
|
- * Set this if txop time is not specified by HCCA protocol (e.g. by AP).
|
|
|
- */
|
|
|
- __le16 driver_txop;
|
|
|
-
|
|
|
- /*
|
|
|
- * MAC header goes here, followed by 2 bytes padding if MAC header
|
|
|
- * length is 26 or 30 bytes, followed by payload data
|
|
|
- */
|
|
|
- u8 payload[0];
|
|
|
- struct ieee80211_hdr hdr[0];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/*
|
|
|
- * REPLY_TX = 0x1c (response)
|
|
|
- */
|
|
|
-struct iwl3945_tx_resp {
|
|
|
- u8 failure_rts;
|
|
|
- u8 failure_frame;
|
|
|
- u8 bt_kill_count;
|
|
|
- u8 rate;
|
|
|
- __le32 wireless_media_time;
|
|
|
- __le32 status; /* TX status */
|
|
|
-} __packed;
|
|
|
-
|
|
|
-
|
|
|
/*
|
|
|
* 4965 uCode updates these Tx attempt count values in host DRAM.
|
|
|
* Used for managing Tx retries when expecting block-acks.
|
|
@@ -1742,54 +1386,6 @@ struct iwl_tx_cmd {
|
|
|
struct ieee80211_hdr hdr[0];
|
|
|
} __packed;
|
|
|
|
|
|
-/* TX command response is sent after *3945* transmission attempts.
|
|
|
- *
|
|
|
- * NOTES:
|
|
|
- *
|
|
|
- * TX_STATUS_FAIL_NEXT_FRAG
|
|
|
- *
|
|
|
- * If the fragment flag in the MAC header for the frame being transmitted
|
|
|
- * is set and there is insufficient time to transmit the next frame, the
|
|
|
- * TX status will be returned with 'TX_STATUS_FAIL_NEXT_FRAG'.
|
|
|
- *
|
|
|
- * TX_STATUS_FIFO_UNDERRUN
|
|
|
- *
|
|
|
- * Indicates the host did not provide bytes to the FIFO fast enough while
|
|
|
- * a TX was in progress.
|
|
|
- *
|
|
|
- * TX_STATUS_FAIL_MGMNT_ABORT
|
|
|
- *
|
|
|
- * This status is only possible if the ABORT ON MGMT RX parameter was
|
|
|
- * set to true with the TX command.
|
|
|
- *
|
|
|
- * If the MSB of the status parameter is set then an abort sequence is
|
|
|
- * required. This sequence consists of the host activating the TX Abort
|
|
|
- * control line, and then waiting for the TX Abort command response. This
|
|
|
- * indicates that a the device is no longer in a transmit state, and that the
|
|
|
- * command FIFO has been cleared. The host must then deactivate the TX Abort
|
|
|
- * control line. Receiving is still allowed in this case.
|
|
|
- */
|
|
|
-enum {
|
|
|
- TX_3945_STATUS_SUCCESS = 0x01,
|
|
|
- TX_3945_STATUS_DIRECT_DONE = 0x02,
|
|
|
- TX_3945_STATUS_FAIL_SHORT_LIMIT = 0x82,
|
|
|
- TX_3945_STATUS_FAIL_LONG_LIMIT = 0x83,
|
|
|
- TX_3945_STATUS_FAIL_FIFO_UNDERRUN = 0x84,
|
|
|
- TX_3945_STATUS_FAIL_MGMNT_ABORT = 0x85,
|
|
|
- TX_3945_STATUS_FAIL_NEXT_FRAG = 0x86,
|
|
|
- TX_3945_STATUS_FAIL_LIFE_EXPIRE = 0x87,
|
|
|
- TX_3945_STATUS_FAIL_DEST_PS = 0x88,
|
|
|
- TX_3945_STATUS_FAIL_ABORTED = 0x89,
|
|
|
- TX_3945_STATUS_FAIL_BT_RETRY = 0x8a,
|
|
|
- TX_3945_STATUS_FAIL_STA_INVALID = 0x8b,
|
|
|
- TX_3945_STATUS_FAIL_FRAG_DROPPED = 0x8c,
|
|
|
- TX_3945_STATUS_FAIL_TID_DISABLE = 0x8d,
|
|
|
- TX_3945_STATUS_FAIL_FRAME_FLUSHED = 0x8e,
|
|
|
- TX_3945_STATUS_FAIL_INSUFFICIENT_CF_POLL = 0x8f,
|
|
|
- TX_3945_STATUS_FAIL_TX_LOCKED = 0x90,
|
|
|
- TX_3945_STATUS_FAIL_NO_BEACON_ON_RADAR = 0x91,
|
|
|
-};
|
|
|
-
|
|
|
/*
|
|
|
* TX command response is sent after *agn* transmission attempts.
|
|
|
*
|
|
@@ -1907,43 +1503,6 @@ struct agg_tx_status {
|
|
|
__le16 sequence;
|
|
|
} __packed;
|
|
|
|
|
|
-struct iwl4965_tx_resp {
|
|
|
- u8 frame_count; /* 1 no aggregation, >1 aggregation */
|
|
|
- u8 bt_kill_count; /* # blocked by bluetooth (unused for agg) */
|
|
|
- u8 failure_rts; /* # failures due to unsuccessful RTS */
|
|
|
- u8 failure_frame; /* # failures due to no ACK (unused for agg) */
|
|
|
-
|
|
|
- /* For non-agg: Rate at which frame was successful.
|
|
|
- * For agg: Rate at which all frames were transmitted. */
|
|
|
- __le32 rate_n_flags; /* RATE_MCS_* */
|
|
|
-
|
|
|
- /* For non-agg: RTS + CTS + frame tx attempts time + ACK.
|
|
|
- * For agg: RTS + CTS + aggregation tx time + block-ack time. */
|
|
|
- __le16 wireless_media_time; /* uSecs */
|
|
|
-
|
|
|
- __le16 reserved;
|
|
|
- __le32 pa_power1; /* RF power amplifier measurement (not used) */
|
|
|
- __le32 pa_power2;
|
|
|
-
|
|
|
- /*
|
|
|
- * For non-agg: frame status TX_STATUS_*
|
|
|
- * For agg: status of 1st frame, AGG_TX_STATE_*; other frame status
|
|
|
- * fields follow this one, up to frame_count.
|
|
|
- * Bit fields:
|
|
|
- * 11- 0: AGG_TX_STATE_* status code
|
|
|
- * 15-12: Retry count for 1st frame in aggregation (retries
|
|
|
- * occur if tx failed for this frame when it was a
|
|
|
- * member of a previous aggregation block). If rate
|
|
|
- * scaling is used, retry count indicates the rate
|
|
|
- * table entry used for all frames in the new agg.
|
|
|
- * 31-16: Sequence # for this frame's Tx cmd (not SSN!)
|
|
|
- */
|
|
|
- union {
|
|
|
- __le32 status;
|
|
|
- struct agg_tx_status agg_status[0]; /* for each agg frame */
|
|
|
- } u;
|
|
|
-} __packed;
|
|
|
-
|
|
|
/*
|
|
|
* definitions for initial rate index field
|
|
|
* bits [3:0] initial rate index
|
|
@@ -2032,52 +1591,8 @@ struct iwl_compressed_ba_resp {
|
|
|
/*
|
|
|
* REPLY_TX_PWR_TABLE_CMD = 0x97 (command, has simple generic response)
|
|
|
*
|
|
|
- * See details under "TXPOWER" in iwl-4965-hw.h.
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_txpowertable_cmd {
|
|
|
- u8 band; /* 0: 5 GHz, 1: 2.4 GHz */
|
|
|
- u8 reserved;
|
|
|
- __le16 channel;
|
|
|
- struct iwl3945_power_per_rate power[IWL_MAX_RATES];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_txpowertable_cmd {
|
|
|
- u8 band; /* 0: 5 GHz, 1: 2.4 GHz */
|
|
|
- u8 reserved;
|
|
|
- __le16 channel;
|
|
|
- struct iwl4965_tx_power_db tx_power;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * struct iwl3945_rate_scaling_cmd - Rate Scaling Command & Response
|
|
|
- *
|
|
|
- * REPLY_RATE_SCALE = 0x47 (command, has simple generic response)
|
|
|
- *
|
|
|
- * NOTE: The table of rates passed to the uCode via the
|
|
|
- * RATE_SCALE command sets up the corresponding order of
|
|
|
- * rates used for all related commands, including rate
|
|
|
- * masks, etc.
|
|
|
- *
|
|
|
- * For example, if you set 9MB (PLCP 0x0f) as the first
|
|
|
- * rate in the rate table, the bit mask for that rate
|
|
|
- * when passed through ofdm_basic_rates on the REPLY_RXON
|
|
|
- * command would be bit 0 (1 << 0)
|
|
|
- */
|
|
|
-struct iwl3945_rate_scaling_info {
|
|
|
- __le16 rate_n_flags;
|
|
|
- u8 try_cnt;
|
|
|
- u8 next_rate_index;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl3945_rate_scaling_cmd {
|
|
|
- u8 table_id;
|
|
|
- u8 reserved[3];
|
|
|
- struct iwl3945_rate_scaling_info table[IWL_MAX_RATES];
|
|
|
-} __packed;
|
|
|
-
|
|
|
-
|
|
|
/*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */
|
|
|
#define LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK (1 << 0)
|
|
|
|
|
@@ -2698,14 +2213,6 @@ struct iwl_spectrum_notification {
|
|
|
#define IWL_POWER_BT_SCO_ENA cpu_to_le16(BIT(8))
|
|
|
#define IWL_POWER_ADVANCE_PM_ENA_MSK cpu_to_le16(BIT(9))
|
|
|
|
|
|
-struct iwl3945_powertable_cmd {
|
|
|
- __le16 flags;
|
|
|
- u8 reserved[2];
|
|
|
- __le32 rx_data_timeout;
|
|
|
- __le32 tx_data_timeout;
|
|
|
- __le32 sleep_interval[IWL_POWER_VEC_SIZE];
|
|
|
-} __packed;
|
|
|
-
|
|
|
struct iwl_powertable_cmd {
|
|
|
__le16 flags;
|
|
|
u8 keep_alive_seconds; /* 3945 reserved */
|
|
@@ -2808,25 +2315,6 @@ struct iwl_ct_kill_throttling_config {
|
|
|
* active_dwell < max_out_time
|
|
|
*/
|
|
|
|
|
|
-/* FIXME: rename to AP1, remove tpc */
|
|
|
-struct iwl3945_scan_channel {
|
|
|
- /*
|
|
|
- * type is defined as:
|
|
|
- * 0:0 1 = active, 0 = passive
|
|
|
- * 1:4 SSID direct bit map; if a bit is set, then corresponding
|
|
|
- * SSID IE is transmitted in probe request.
|
|
|
- * 5:7 reserved
|
|
|
- */
|
|
|
- u8 type;
|
|
|
- u8 channel; /* band is selected by iwl3945_scan_cmd "flags" field */
|
|
|
- struct iwl3945_tx_power tpc;
|
|
|
- __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */
|
|
|
- __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/* set number of direct probes u8 type */
|
|
|
-#define IWL39_SCAN_PROBE_MASK(n) ((BIT(n) | (BIT(n) - BIT(1))))
|
|
|
-
|
|
|
struct iwl_scan_channel {
|
|
|
/*
|
|
|
* type is defined as:
|
|
@@ -2922,50 +2410,6 @@ struct iwl_ssid_ie {
|
|
|
* struct iwl_scan_channel.
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_scan_cmd {
|
|
|
- __le16 len;
|
|
|
- u8 reserved0;
|
|
|
- u8 channel_count; /* # channels in channel list */
|
|
|
- __le16 quiet_time; /* dwell only this # millisecs on quiet channel
|
|
|
- * (only for active scan) */
|
|
|
- __le16 quiet_plcp_th; /* quiet chnl is < this # pkts (typ. 1) */
|
|
|
- __le16 good_CRC_th; /* passive -> active promotion threshold */
|
|
|
- __le16 reserved1;
|
|
|
- __le32 max_out_time; /* max usec to be away from associated (service)
|
|
|
- * channel */
|
|
|
- __le32 suspend_time; /* pause scan this long (in "extended beacon
|
|
|
- * format") when returning to service channel:
|
|
|
- * 3945; 31:24 # beacons, 19:0 additional usec,
|
|
|
- * 4965; 31:22 # beacons, 21:0 additional usec.
|
|
|
- */
|
|
|
- __le32 flags; /* RXON_FLG_* */
|
|
|
- __le32 filter_flags; /* RXON_FILTER_* */
|
|
|
-
|
|
|
- /* For active scans (set to all-0s for passive scans).
|
|
|
- * Does not include payload. Must specify Tx rate; no rate scaling. */
|
|
|
- struct iwl3945_tx_cmd tx_cmd;
|
|
|
-
|
|
|
- /* For directed active scans (set to all-0s otherwise) */
|
|
|
- struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX_3945];
|
|
|
-
|
|
|
- /*
|
|
|
- * Probe request frame, followed by channel list.
|
|
|
- *
|
|
|
- * Size of probe request frame is specified by byte count in tx_cmd.
|
|
|
- * Channel list follows immediately after probe request frame.
|
|
|
- * Number of channels in list is specified by channel_count.
|
|
|
- * Each channel in list is of type:
|
|
|
- *
|
|
|
- * struct iwl3945_scan_channel channels[0];
|
|
|
- *
|
|
|
- * NOTE: Only one band of channels can be scanned per pass. You
|
|
|
- * must not mix 2.4GHz channels and 5.2GHz channels, and you must wait
|
|
|
- * for one scan to complete (i.e. receive SCAN_COMPLETE_NOTIFICATION)
|
|
|
- * before requesting another scan.
|
|
|
- */
|
|
|
- u8 data[0];
|
|
|
-} __packed;
|
|
|
-
|
|
|
enum iwl_scan_flags {
|
|
|
/* BIT(0) currently unused */
|
|
|
IWL_SCAN_FLAGS_ACTION_FRAME_TX = BIT(1),
|
|
@@ -3092,20 +2536,6 @@ enum iwl_ibss_manager {
|
|
|
* BEACON_NOTIFICATION = 0x90 (notification only, not a command)
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_beacon_notif {
|
|
|
- struct iwl3945_tx_resp beacon_notify_hdr;
|
|
|
- __le32 low_tsf;
|
|
|
- __le32 high_tsf;
|
|
|
- __le32 ibss_mgr_status;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-struct iwl4965_beacon_notif {
|
|
|
- struct iwl4965_tx_resp beacon_notify_hdr;
|
|
|
- __le32 low_tsf;
|
|
|
- __le32 high_tsf;
|
|
|
- __le32 ibss_mgr_status;
|
|
|
-} __packed;
|
|
|
-
|
|
|
struct iwlagn_beacon_notif {
|
|
|
struct iwlagn_tx_resp beacon_notify_hdr;
|
|
|
__le32 low_tsf;
|
|
@@ -3117,14 +2547,6 @@ struct iwlagn_beacon_notif {
|
|
|
* REPLY_TX_BEACON = 0x91 (command, has simple generic response)
|
|
|
*/
|
|
|
|
|
|
-struct iwl3945_tx_beacon_cmd {
|
|
|
- struct iwl3945_tx_cmd tx;
|
|
|
- __le16 tim_idx;
|
|
|
- u8 tim_size;
|
|
|
- u8 reserved1;
|
|
|
- struct ieee80211_hdr frame[0]; /* beacon frame */
|
|
|
-} __packed;
|
|
|
-
|
|
|
struct iwl_tx_beacon_cmd {
|
|
|
struct iwl_tx_cmd tx;
|
|
|
__le16 tim_idx;
|
|
@@ -3473,13 +2895,6 @@ struct iwl_statistics_cmd {
|
|
|
#define STATISTICS_REPLY_FLG_BAND_24G_MSK cpu_to_le32(0x2)
|
|
|
#define STATISTICS_REPLY_FLG_HT40_MODE_MSK cpu_to_le32(0x8)
|
|
|
|
|
|
-struct iwl3945_notif_statistics {
|
|
|
- __le32 flag;
|
|
|
- struct iwl39_statistics_rx rx;
|
|
|
- struct iwl39_statistics_tx tx;
|
|
|
- struct iwl39_statistics_general general;
|
|
|
-} __packed;
|
|
|
-
|
|
|
struct iwl_notif_statistics {
|
|
|
__le32 flag;
|
|
|
struct statistics_rx rx;
|
|
@@ -4453,10 +3868,6 @@ struct iwl_rx_packet {
|
|
|
__le32 len_n_flags;
|
|
|
struct iwl_cmd_header hdr;
|
|
|
union {
|
|
|
- struct iwl3945_rx_frame rx_frame;
|
|
|
- struct iwl3945_tx_resp tx_resp;
|
|
|
- struct iwl3945_beacon_notif beacon_status;
|
|
|
-
|
|
|
struct iwl_alive_resp alive_frame;
|
|
|
struct iwl_spectrum_notification spectrum_notif;
|
|
|
struct iwl_csa_notification csa_notif;
|