aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-commands.h
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2008-12-18 21:37:07 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 15:58:54 -0500
commit3d24a9f790c0e39cfdef1446c7100e89c542805c (patch)
treec439ca8d5141ae62fedb5437a5382a649d9ebe5e /drivers/net/wireless/iwlwifi/iwl-commands.h
parent28afaf9139ce9f1c26452f34808e322e8e868850 (diff)
iwlwifi: 3945 remove iwl-3945-commands.h
This patch remove iwl-3945-commands.h eliminating duplicated and moving all definitions to iwl-commands.h Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Acked-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-commands.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h448
1 files changed, 427 insertions, 21 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 8b2d7012a2a0..958c4a70d515 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -225,6 +225,37 @@ struct iwl_cmd_header {
225 u8 data[0]; 225 u8 data[0];
226} __attribute__ ((packed)); 226} __attribute__ ((packed));
227 227
228
229/**
230 * struct iwl3945_tx_power
231 *
232 * Used in REPLY_TX_PWR_TABLE_CMD, REPLY_SCAN_CMD, REPLY_CHANNEL_SWITCH
233 *
234 * Each entry contains two values:
235 * 1) DSP gain (or sometimes called DSP attenuation). This is a fine-grained
236 * linear value that multiplies the output of the digital signal processor,
237 * before being sent to the analog radio.
238 * 2) Radio gain. This sets the analog gain of the radio Tx path.
239 * It is a coarser setting, and behaves in a logarithmic (dB) fashion.
240 *
241 * Driver obtains values from struct iwl3945_tx_power power_gain_table[][].
242 */
243struct iwl3945_tx_power {
244 u8 tx_gain; /* gain for analog radio */
245 u8 dsp_atten; /* gain for DSP */
246} __attribute__ ((packed));
247
248/**
249 * struct iwl3945_power_per_rate
250 *
251 * Used in REPLY_TX_PWR_TABLE_CMD, REPLY_CHANNEL_SWITCH
252 */
253struct iwl3945_power_per_rate {
254 u8 rate; /* plcp */
255 struct iwl3945_tx_power tpc;
256 u8 reserved;
257} __attribute__ ((packed));
258
228/** 259/**
229 * iwlagn rate_n_flags bit fields 260 * iwlagn rate_n_flags bit fields
230 * 261 *
@@ -499,8 +530,6 @@ struct iwl_alive_resp {
499 __le32 is_valid; 530 __le32 is_valid;
500} __attribute__ ((packed)); 531} __attribute__ ((packed));
501 532
502
503
504/* 533/*
505 * REPLY_ERROR = 0x2 (response only, not a command) 534 * REPLY_ERROR = 0x2 (response only, not a command)
506 */ 535 */
@@ -618,6 +647,26 @@ enum {
618 * issue a new REPLY_TX_PWR_TABLE_CMD after each REPLY_RXON (0x10), 647 * issue a new REPLY_TX_PWR_TABLE_CMD after each REPLY_RXON (0x10),
619 * regardless of whether RXON_FILTER_ASSOC_MSK is set. 648 * regardless of whether RXON_FILTER_ASSOC_MSK is set.
620 */ 649 */
650
651struct iwl3945_rxon_cmd {
652 u8 node_addr[6];
653 __le16 reserved1;
654 u8 bssid_addr[6];
655 __le16 reserved2;
656 u8 wlap_bssid_addr[6];
657 __le16 reserved3;
658 u8 dev_type;
659 u8 air_propagation;
660 __le16 reserved4;
661 u8 ofdm_basic_rates;
662 u8 cck_basic_rates;
663 __le16 assoc_id;
664 __le32 flags;
665 __le32 filter_flags;
666 __le16 channel;
667 __le16 reserved5;
668} __attribute__ ((packed));
669
621struct iwl4965_rxon_cmd { 670struct iwl4965_rxon_cmd {
622 u8 node_addr[6]; 671 u8 node_addr[6];
623 __le16 reserved1; 672 __le16 reserved1;
@@ -663,33 +712,41 @@ struct iwl_rxon_cmd {
663 __le16 reserved6; 712 __le16 reserved6;
664} __attribute__ ((packed)); 713} __attribute__ ((packed));
665 714
666struct iwl5000_rxon_assoc_cmd { 715/*
716 * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)
717 */
718struct iwl3945_rxon_assoc_cmd {
719 __le32 flags;
720 __le32 filter_flags;
721 u8 ofdm_basic_rates;
722 u8 cck_basic_rates;
723 __le16 reserved;
724} __attribute__ ((packed));
725
726struct iwl4965_rxon_assoc_cmd {
667 __le32 flags; 727 __le32 flags;
668 __le32 filter_flags; 728 __le32 filter_flags;
669 u8 ofdm_basic_rates; 729 u8 ofdm_basic_rates;
670 u8 cck_basic_rates; 730 u8 cck_basic_rates;
671 __le16 reserved1;
672 u8 ofdm_ht_single_stream_basic_rates; 731 u8 ofdm_ht_single_stream_basic_rates;
673 u8 ofdm_ht_dual_stream_basic_rates; 732 u8 ofdm_ht_dual_stream_basic_rates;
674 u8 ofdm_ht_triple_stream_basic_rates;
675 u8 reserved2;
676 __le16 rx_chain_select_flags; 733 __le16 rx_chain_select_flags;
677 __le16 acquisition_data; 734 __le16 reserved;
678 __le32 reserved3;
679} __attribute__ ((packed)); 735} __attribute__ ((packed));
680 736
681/* 737struct iwl5000_rxon_assoc_cmd {
682 * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)
683 */
684struct iwl4965_rxon_assoc_cmd {
685 __le32 flags; 738 __le32 flags;
686 __le32 filter_flags; 739 __le32 filter_flags;
687 u8 ofdm_basic_rates; 740 u8 ofdm_basic_rates;
688 u8 cck_basic_rates; 741 u8 cck_basic_rates;
742 __le16 reserved1;
689 u8 ofdm_ht_single_stream_basic_rates; 743 u8 ofdm_ht_single_stream_basic_rates;
690 u8 ofdm_ht_dual_stream_basic_rates; 744 u8 ofdm_ht_dual_stream_basic_rates;
745 u8 ofdm_ht_triple_stream_basic_rates;
746 u8 reserved2;
691 __le16 rx_chain_select_flags; 747 __le16 rx_chain_select_flags;
692 __le16 reserved; 748 __le16 acquisition_data;
749 __le32 reserved3;
693} __attribute__ ((packed)); 750} __attribute__ ((packed));
694 751
695#define IWL_CONN_MAX_LISTEN_INTERVAL 10 752#define IWL_CONN_MAX_LISTEN_INTERVAL 10
@@ -709,6 +766,16 @@ struct iwl_rxon_time_cmd {
709/* 766/*
710 * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response) 767 * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response)
711 */ 768 */
769struct iwl3945_channel_switch_cmd {
770 u8 band;
771 u8 expect_beacon;
772 __le16 channel;
773 __le32 rxon_flags;
774 __le32 rxon_filter_flags;
775 __le32 switch_time;
776 struct iwl3945_power_per_rate power[IWL_MAX_RATES];
777} __attribute__ ((packed));
778
712struct iwl_channel_switch_cmd { 779struct iwl_channel_switch_cmd {
713 u8 band; 780 u8 band;
714 u8 expect_beacon; 781 u8 expect_beacon;
@@ -912,6 +979,35 @@ struct sta_id_modify {
912 * used as AP, or in an IBSS network, driver must set up station table 979 * used as AP, or in an IBSS network, driver must set up station table
913 * entries for all STAs in network, starting with index IWL_STA_ID. 980 * entries for all STAs in network, starting with index IWL_STA_ID.
914 */ 981 */
982
983struct iwl3945_addsta_cmd {
984 u8 mode; /* 1: modify existing, 0: add new station */
985 u8 reserved[3];
986 struct sta_id_modify sta;
987 struct iwl4965_keyinfo key;
988 __le32 station_flags; /* STA_FLG_* */
989 __le32 station_flags_msk; /* STA_FLG_* */
990
991 /* bit field to disable (1) or enable (0) Tx for Traffic ID (TID)
992 * corresponding to bit (e.g. bit 5 controls TID 5).
993 * Set modify_mask bit STA_MODIFY_TID_DISABLE_TX to use this field. */
994 __le16 tid_disable_tx;
995
996 __le16 rate_n_flags;
997
998 /* TID for which to add block-ack support.
999 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
1000 u8 add_immediate_ba_tid;
1001
1002 /* TID for which to remove block-ack support.
1003 * Set modify_mask bit STA_MODIFY_DELBA_TID_MSK to use this field. */
1004 u8 remove_immediate_ba_tid;
1005
1006 /* Starting Sequence Number for added block-ack support.
1007 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
1008 __le16 add_immediate_ba_ssn;
1009} __attribute__ ((packed));
1010
915struct iwl4965_addsta_cmd { 1011struct iwl4965_addsta_cmd {
916 u8 mode; /* 1: modify existing, 0: add new station */ 1012 u8 mode; /* 1: modify existing, 0: add new station */
917 u8 reserved[3]; 1013 u8 reserved[3];
@@ -1065,6 +1161,48 @@ struct iwl_wep_cmd {
1065#define RX_MPDU_RES_STATUS_TTAK_OK (1 << 7) 1161#define RX_MPDU_RES_STATUS_TTAK_OK (1 << 7)
1066#define RX_MPDU_RES_STATUS_DEC_DONE_MSK (0x800) 1162#define RX_MPDU_RES_STATUS_DEC_DONE_MSK (0x800)
1067 1163
1164
1165struct iwl3945_rx_frame_stats {
1166 u8 phy_count;
1167 u8 id;
1168 u8 rssi;
1169 u8 agc;
1170 __le16 sig_avg;
1171 __le16 noise_diff;
1172 u8 payload[0];
1173} __attribute__ ((packed));
1174
1175struct iwl3945_rx_frame_hdr {
1176 __le16 channel;
1177 __le16 phy_flags;
1178 u8 reserved1;
1179 u8 rate;
1180 __le16 len;
1181 u8 payload[0];
1182} __attribute__ ((packed));
1183
1184struct iwl3945_rx_frame_end {
1185 __le32 status;
1186 __le64 timestamp;
1187 __le32 beacon_timestamp;
1188} __attribute__ ((packed));
1189
1190/*
1191 * REPLY_3945_RX = 0x1b (response only, not a command)
1192 *
1193 * NOTE: DO NOT dereference from casts to this structure
1194 * It is provided only for calculating minimum data set size.
1195 * The actual offsets of the hdr and end are dynamic based on
1196 * stats.phy_count
1197 */
1198struct iwl3945_rx_frame {
1199 struct iwl3945_rx_frame_stats stats;
1200 struct iwl3945_rx_frame_hdr hdr;
1201 struct iwl3945_rx_frame_end end;
1202} __attribute__ ((packed));
1203
1204#define IWL39_RX_FRAME_SIZE (4 + sizeof(struct iwl3945_rx_frame))
1205
1068/* Fixed (non-configurable) rx data from phy */ 1206/* Fixed (non-configurable) rx data from phy */
1069 1207
1070#define IWL49_RX_RES_PHY_CNT 14 1208#define IWL49_RX_RES_PHY_CNT 14
@@ -1245,6 +1383,84 @@ struct iwl4965_rx_mpdu_res_start {
1245#define TKIP_ICV_LEN 4 1383#define TKIP_ICV_LEN 4
1246 1384
1247/* 1385/*
1386 * REPLY_TX = 0x1c (command)
1387 */
1388
1389struct iwl3945_tx_cmd {
1390 /*
1391 * MPDU byte count:
1392 * MAC header (24/26/30/32 bytes) + 2 bytes pad if 26/30 header size,
1393 * + 8 byte IV for CCM or TKIP (not used for WEP)
1394 * + Data payload
1395 * + 8-byte MIC (not used for CCM/WEP)
1396 * NOTE: Does not include Tx command bytes, post-MAC pad bytes,
1397 * MIC (CCM) 8 bytes, ICV (WEP/TKIP/CKIP) 4 bytes, CRC 4 bytes.i
1398 * Range: 14-2342 bytes.
1399 */
1400 __le16 len;
1401
1402 /*
1403 * MPDU or MSDU byte count for next frame.
1404 * Used for fragmentation and bursting, but not 11n aggregation.
1405 * Same as "len", but for next frame. Set to 0 if not applicable.
1406 */
1407 __le16 next_frame_len;
1408
1409 __le32 tx_flags; /* TX_CMD_FLG_* */
1410
1411 u8 rate;
1412
1413 /* Index of recipient station in uCode's station table */
1414 u8 sta_id;
1415 u8 tid_tspec;
1416 u8 sec_ctl;
1417 u8 key[16];
1418 union {
1419 u8 byte[8];
1420 __le16 word[4];
1421 __le32 dw[2];
1422 } tkip_mic;
1423 __le32 next_frame_info;
1424 union {
1425 __le32 life_time;
1426 __le32 attempt;
1427 } stop_time;
1428 u8 supp_rates[2];
1429 u8 rts_retry_limit; /*byte 50 */
1430 u8 data_retry_limit; /*byte 51 */
1431 union {
1432 __le16 pm_frame_timeout;
1433 __le16 attempt_duration;
1434 } timeout;
1435
1436 /*
1437 * Duration of EDCA burst Tx Opportunity, in 32-usec units.
1438 * Set this if txop time is not specified by HCCA protocol (e.g. by AP).
1439 */
1440 __le16 driver_txop;
1441
1442 /*
1443 * MAC header goes here, followed by 2 bytes padding if MAC header
1444 * length is 26 or 30 bytes, followed by payload data
1445 */
1446 u8 payload[0];
1447 struct ieee80211_hdr hdr[0];
1448} __attribute__ ((packed));
1449
1450/*
1451 * REPLY_TX = 0x1c (response)
1452 */
1453struct iwl3945_tx_resp {
1454 u8 failure_rts;
1455 u8 failure_frame;
1456 u8 bt_kill_count;
1457 u8 rate;
1458 __le32 wireless_media_time;
1459 __le32 status; /* TX status */
1460} __attribute__ ((packed));
1461
1462
1463/*
1248 * 4965 uCode updates these Tx attempt count values in host DRAM. 1464 * 4965 uCode updates these Tx attempt count values in host DRAM.
1249 * Used for managing Tx retries when expecting block-acks. 1465 * Used for managing Tx retries when expecting block-acks.
1250 * Driver should set these fields to 0. 1466 * Driver should set these fields to 0.
@@ -1255,9 +1471,6 @@ struct iwl_dram_scratch {
1255 __le16 reserved; 1471 __le16 reserved;
1256} __attribute__ ((packed)); 1472} __attribute__ ((packed));
1257 1473
1258/*
1259 * REPLY_TX = 0x1c (command)
1260 */
1261struct iwl_tx_cmd { 1474struct iwl_tx_cmd {
1262 /* 1475 /*
1263 * MPDU byte count: 1476 * MPDU byte count:
@@ -1595,6 +1808,14 @@ struct iwl_compressed_ba_resp {
1595 * 1808 *
1596 * See details under "TXPOWER" in iwl-4965-hw.h. 1809 * See details under "TXPOWER" in iwl-4965-hw.h.
1597 */ 1810 */
1811
1812struct iwl3945_txpowertable_cmd {
1813 u8 band; /* 0: 5 GHz, 1: 2.4 GHz */
1814 u8 reserved;
1815 __le16 channel;
1816 struct iwl3945_power_per_rate power[IWL_MAX_RATES];
1817} __attribute__ ((packed));
1818
1598struct iwl4965_txpowertable_cmd { 1819struct iwl4965_txpowertable_cmd {
1599 u8 band; /* 0: 5 GHz, 1: 2.4 GHz */ 1820 u8 band; /* 0: 5 GHz, 1: 2.4 GHz */
1600 u8 reserved; 1821 u8 reserved;
@@ -1602,6 +1823,35 @@ struct iwl4965_txpowertable_cmd {
1602 struct iwl4965_tx_power_db tx_power; 1823 struct iwl4965_tx_power_db tx_power;
1603} __attribute__ ((packed)); 1824} __attribute__ ((packed));
1604 1825
1826
1827/**
1828 * struct iwl3945_rate_scaling_cmd - Rate Scaling Command & Response
1829 *
1830 * REPLY_RATE_SCALE = 0x47 (command, has simple generic response)
1831 *
1832 * NOTE: The table of rates passed to the uCode via the
1833 * RATE_SCALE command sets up the corresponding order of
1834 * rates used for all related commands, including rate
1835 * masks, etc.
1836 *
1837 * For example, if you set 9MB (PLCP 0x0f) as the first
1838 * rate in the rate table, the bit mask for that rate
1839 * when passed through ofdm_basic_rates on the REPLY_RXON
1840 * command would be bit 0 (1 << 0)
1841 */
1842struct iwl3945_rate_scaling_info {
1843 __le16 rate_n_flags;
1844 u8 try_cnt;
1845 u8 next_rate_index;
1846} __attribute__ ((packed));
1847
1848struct iwl3945_rate_scaling_cmd {
1849 u8 table_id;
1850 u8 reserved[3];
1851 struct iwl3945_rate_scaling_info table[IWL_MAX_RATES];
1852} __attribute__ ((packed));
1853
1854
1605/*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */ 1855/*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */
1606#define LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK (1 << 0) 1856#define LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK (1 << 0)
1607 1857
@@ -2162,6 +2412,23 @@ struct iwl_ct_kill_config {
2162 * passive_dwell < max_out_time 2412 * passive_dwell < max_out_time
2163 * active_dwell < max_out_time 2413 * active_dwell < max_out_time
2164 */ 2414 */
2415
2416/* FIXME: rename to AP1, remove tpc */
2417struct iwl3945_scan_channel {
2418 /*
2419 * type is defined as:
2420 * 0:0 1 = active, 0 = passive
2421 * 1:4 SSID direct bit map; if a bit is set, then corresponding
2422 * SSID IE is transmitted in probe request.
2423 * 5:7 reserved
2424 */
2425 u8 type;
2426 u8 channel; /* band is selected by iwl3945_scan_cmd "flags" field */
2427 struct iwl3945_tx_power tpc;
2428 __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */
2429 __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */
2430} __attribute__ ((packed));
2431
2165struct iwl_scan_channel { 2432struct iwl_scan_channel {
2166 /* 2433 /*
2167 * type is defined as: 2434 * type is defined as:
@@ -2249,6 +2516,51 @@ struct iwl_ssid_ie {
2249 * To avoid uCode errors, see timing restrictions described under 2516 * To avoid uCode errors, see timing restrictions described under
2250 * struct iwl_scan_channel. 2517 * struct iwl_scan_channel.
2251 */ 2518 */
2519
2520struct iwl3945_scan_cmd {
2521 __le16 len;
2522 u8 reserved0;
2523 u8 channel_count; /* # channels in channel list */
2524 __le16 quiet_time; /* dwell only this # millisecs on quiet channel
2525 * (only for active scan) */
2526 __le16 quiet_plcp_th; /* quiet chnl is < this # pkts (typ. 1) */
2527 __le16 good_CRC_th; /* passive -> active promotion threshold */
2528 __le16 reserved1;
2529 __le32 max_out_time; /* max usec to be away from associated (service)
2530 * channel */
2531 __le32 suspend_time; /* pause scan this long (in "extended beacon
2532 * format") when returning to service channel:
2533 * 3945; 31:24 # beacons, 19:0 additional usec,
2534 * 4965; 31:22 # beacons, 21:0 additional usec.
2535 */
2536 __le32 flags; /* RXON_FLG_* */
2537 __le32 filter_flags; /* RXON_FILTER_* */
2538
2539 /* For active scans (set to all-0s for passive scans).
2540 * Does not include payload. Must specify Tx rate; no rate scaling. */
2541 struct iwl3945_tx_cmd tx_cmd;
2542
2543 /* For directed active scans (set to all-0s otherwise) */
2544 struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX_API1];
2545
2546 /*
2547 * Probe request frame, followed by channel list.
2548 *
2549 * Size of probe request frame is specified by byte count in tx_cmd.
2550 * Channel list follows immediately after probe request frame.
2551 * Number of channels in list is specified by channel_count.
2552 * Each channel in list is of type:
2553 *
2554 * struct iwl3945_scan_channel channels[0];
2555 *
2556 * NOTE: Only one band of channels can be scanned per pass. You
2557 * must not mix 2.4GHz channels and 5.2GHz channels, and you must wait
2558 * for one scan to complete (i.e. receive SCAN_COMPLETE_NOTIFICATION)
2559 * before requesting another scan.
2560 */
2561 u8 data[0];
2562} __attribute__ ((packed));
2563
2252struct iwl_scan_cmd { 2564struct iwl_scan_cmd {
2253 __le16 len; 2565 __le16 len;
2254 u8 reserved0; 2566 u8 reserved0;
@@ -2356,6 +2668,14 @@ struct iwl_scancomplete_notification {
2356/* 2668/*
2357 * BEACON_NOTIFICATION = 0x90 (notification only, not a command) 2669 * BEACON_NOTIFICATION = 0x90 (notification only, not a command)
2358 */ 2670 */
2671
2672struct iwl3945_beacon_notif {
2673 struct iwl3945_tx_resp beacon_notify_hdr;
2674 __le32 low_tsf;
2675 __le32 high_tsf;
2676 __le32 ibss_mgr_status;
2677} __attribute__ ((packed));
2678
2359struct iwl4965_beacon_notif { 2679struct iwl4965_beacon_notif {
2360 struct iwl4965_tx_resp beacon_notify_hdr; 2680 struct iwl4965_tx_resp beacon_notify_hdr;
2361 __le32 low_tsf; 2681 __le32 low_tsf;
@@ -2366,6 +2686,15 @@ struct iwl4965_beacon_notif {
2366/* 2686/*
2367 * REPLY_TX_BEACON = 0x91 (command, has simple generic response) 2687 * REPLY_TX_BEACON = 0x91 (command, has simple generic response)
2368 */ 2688 */
2689
2690struct iwl3945_tx_beacon_cmd {
2691 struct iwl3945_tx_cmd tx;
2692 __le16 tim_idx;
2693 u8 tim_size;
2694 u8 reserved1;
2695 struct ieee80211_hdr frame[0]; /* beacon frame */
2696} __attribute__ ((packed));
2697
2369struct iwl_tx_beacon_cmd { 2698struct iwl_tx_beacon_cmd {
2370 struct iwl_tx_cmd tx; 2699 struct iwl_tx_cmd tx;
2371 __le16 tim_idx; 2700 __le16 tim_idx;
@@ -2402,6 +2731,76 @@ struct rate_histogram {
2402 2731
2403/* statistics command response */ 2732/* statistics command response */
2404 2733
2734struct iwl39_statistics_rx_phy {
2735 __le32 ina_cnt;
2736 __le32 fina_cnt;
2737 __le32 plcp_err;
2738 __le32 crc32_err;
2739 __le32 overrun_err;
2740 __le32 early_overrun_err;
2741 __le32 crc32_good;
2742 __le32 false_alarm_cnt;
2743 __le32 fina_sync_err_cnt;
2744 __le32 sfd_timeout;
2745 __le32 fina_timeout;
2746 __le32 unresponded_rts;
2747 __le32 rxe_frame_limit_overrun;
2748 __le32 sent_ack_cnt;
2749 __le32 sent_cts_cnt;
2750} __attribute__ ((packed));
2751
2752struct iwl39_statistics_rx_non_phy {
2753 __le32 bogus_cts; /* CTS received when not expecting CTS */
2754 __le32 bogus_ack; /* ACK received when not expecting ACK */
2755 __le32 non_bssid_frames; /* number of frames with BSSID that
2756 * doesn't belong to the STA BSSID */
2757 __le32 filtered_frames; /* count frames that were dumped in the
2758 * filtering process */
2759 __le32 non_channel_beacons; /* beacons with our bss id but not on
2760 * our serving channel */
2761} __attribute__ ((packed));
2762
2763struct iwl39_statistics_rx {
2764 struct iwl39_statistics_rx_phy ofdm;
2765 struct iwl39_statistics_rx_phy cck;
2766 struct iwl39_statistics_rx_non_phy general;
2767} __attribute__ ((packed));
2768
2769struct iwl39_statistics_tx {
2770 __le32 preamble_cnt;
2771 __le32 rx_detected_cnt;
2772 __le32 bt_prio_defer_cnt;
2773 __le32 bt_prio_kill_cnt;
2774 __le32 few_bytes_cnt;
2775 __le32 cts_timeout;
2776 __le32 ack_timeout;
2777 __le32 expected_ack_cnt;
2778 __le32 actual_ack_cnt;
2779} __attribute__ ((packed));
2780
2781struct statistics_dbg {
2782 __le32 burst_check;
2783 __le32 burst_count;
2784 __le32 reserved[4];
2785} __attribute__ ((packed));
2786
2787struct iwl39_statistics_div {
2788 __le32 tx_on_a;
2789 __le32 tx_on_b;
2790 __le32 exec_time;
2791 __le32 probe_time;
2792} __attribute__ ((packed));
2793
2794struct iwl39_statistics_general {
2795 __le32 temperature;
2796 struct statistics_dbg dbg;
2797 __le32 sleep_time;
2798 __le32 slots_out;
2799 __le32 slots_idle;
2800 __le32 ttl_timestamp;
2801 struct iwl39_statistics_div div;
2802} __attribute__ ((packed));
2803
2405struct statistics_rx_phy { 2804struct statistics_rx_phy {
2406 __le32 ina_cnt; 2805 __le32 ina_cnt;
2407 __le32 fina_cnt; 2806 __le32 fina_cnt;
@@ -2513,11 +2912,6 @@ struct statistics_tx {
2513 struct statistics_tx_non_phy_agg agg; 2912 struct statistics_tx_non_phy_agg agg;
2514} __attribute__ ((packed)); 2913} __attribute__ ((packed));
2515 2914
2516struct statistics_dbg {
2517 __le32 burst_check;
2518 __le32 burst_count;
2519 __le32 reserved[4];
2520} __attribute__ ((packed));
2521 2915
2522struct statistics_div { 2916struct statistics_div {
2523 __le32 tx_on_a; 2917 __le32 tx_on_a;
@@ -2581,6 +2975,14 @@ struct iwl_statistics_cmd {
2581 */ 2975 */
2582#define STATISTICS_REPLY_FLG_BAND_24G_MSK cpu_to_le32(0x2) 2976#define STATISTICS_REPLY_FLG_BAND_24G_MSK cpu_to_le32(0x2)
2583#define STATISTICS_REPLY_FLG_FAT_MODE_MSK cpu_to_le32(0x8) 2977#define STATISTICS_REPLY_FLG_FAT_MODE_MSK cpu_to_le32(0x8)
2978
2979struct iwl3945_notif_statistics {
2980 __le32 flag;
2981 struct iwl39_statistics_rx rx;
2982 struct iwl39_statistics_tx tx;
2983 struct iwl39_statistics_general general;
2984} __attribute__ ((packed));
2985
2584struct iwl_notif_statistics { 2986struct iwl_notif_statistics {
2585 __le32 flag; 2987 __le32 flag;
2586 struct statistics_rx rx; 2988 struct statistics_rx rx;
@@ -3032,6 +3434,10 @@ struct iwl_rx_packet {
3032 __le32 len; 3434 __le32 len;
3033 struct iwl_cmd_header hdr; 3435 struct iwl_cmd_header hdr;
3034 union { 3436 union {
3437 struct iwl3945_rx_frame rx_frame;
3438 struct iwl3945_tx_resp tx_resp;
3439 struct iwl3945_beacon_notif beacon_status;
3440
3035 struct iwl_alive_resp alive_frame; 3441 struct iwl_alive_resp alive_frame;
3036 struct iwl_spectrum_notification spectrum_notif; 3442 struct iwl_spectrum_notification spectrum_notif;
3037 struct iwl_csa_notification csa_notif; 3443 struct iwl_csa_notification csa_notif;