diff options
author | John W. Linville <linville@tuxdriver.com> | 2010-07-27 11:59:19 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-07-27 11:59:19 -0400 |
commit | 800f65bba8d2030b3fef62850e203f9f176625a8 (patch) | |
tree | 6507c4fe7a0826c253b4afb29375ab306a0fd9c8 /drivers/net/wireless/iwlwifi | |
parent | 06b3cda0c12986f5bba578b918b188d731c4e191 (diff) | |
parent | b3190df628617c7a4f188a9465aeabe1f5761933 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6
Conflicts:
drivers/net/wireless/iwlwifi/iwl-commands.h
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945-fh.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945-hw.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-commands.h | 244 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 8 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-eeprom.h | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-fh.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-spectrum.h | 10 |
9 files changed, 149 insertions, 149 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-fh.h b/drivers/net/wireless/iwlwifi/iwl-3945-fh.h index 042f6bc0df13..2c9ed2b502a3 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945-fh.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945-fh.h | |||
@@ -175,13 +175,13 @@ | |||
175 | struct iwl3945_tfd_tb { | 175 | struct iwl3945_tfd_tb { |
176 | __le32 addr; | 176 | __le32 addr; |
177 | __le32 len; | 177 | __le32 len; |
178 | } __attribute__ ((packed)); | 178 | } __packed; |
179 | 179 | ||
180 | struct iwl3945_tfd { | 180 | struct iwl3945_tfd { |
181 | __le32 control_flags; | 181 | __le32 control_flags; |
182 | struct iwl3945_tfd_tb tbs[4]; | 182 | struct iwl3945_tfd_tb tbs[4]; |
183 | u8 __pad[28]; | 183 | u8 __pad[28]; |
184 | } __attribute__ ((packed)); | 184 | } __packed; |
185 | 185 | ||
186 | 186 | ||
187 | #endif /* __iwl_3945_fh_h__ */ | 187 | #endif /* __iwl_3945_fh_h__ */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-hw.h b/drivers/net/wireless/iwlwifi/iwl-3945-hw.h index 91bcb4e3cdfb..7c731a793632 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945-hw.h | |||
@@ -96,7 +96,7 @@ struct iwl3945_eeprom_txpower_sample { | |||
96 | u8 gain_index; /* index into power (gain) setup table ... */ | 96 | u8 gain_index; /* index into power (gain) setup table ... */ |
97 | s8 power; /* ... for this pwr level for this chnl group */ | 97 | s8 power; /* ... for this pwr level for this chnl group */ |
98 | u16 v_det; /* PA output voltage */ | 98 | u16 v_det; /* PA output voltage */ |
99 | } __attribute__ ((packed)); | 99 | } __packed; |
100 | 100 | ||
101 | /* | 101 | /* |
102 | * Mappings of Tx power levels -> nominal radio/DSP gain table indexes. | 102 | * Mappings of Tx power levels -> nominal radio/DSP gain table indexes. |
@@ -117,7 +117,7 @@ struct iwl3945_eeprom_txpower_group { | |||
117 | u8 group_channel; /* "representative" channel # in this band */ | 117 | u8 group_channel; /* "representative" channel # in this band */ |
118 | s16 temperature; /* h/w temperature at factory calib this band | 118 | s16 temperature; /* h/w temperature at factory calib this band |
119 | * (signed) */ | 119 | * (signed) */ |
120 | } __attribute__ ((packed)); | 120 | } __packed; |
121 | 121 | ||
122 | /* | 122 | /* |
123 | * Temperature-based Tx-power compensation data, not band-specific. | 123 | * Temperature-based Tx-power compensation data, not band-specific. |
@@ -131,7 +131,7 @@ struct iwl3945_eeprom_temperature_corr { | |||
131 | u32 Tc; | 131 | u32 Tc; |
132 | u32 Td; | 132 | u32 Td; |
133 | u32 Te; | 133 | u32 Te; |
134 | } __attribute__ ((packed)); | 134 | } __packed; |
135 | 135 | ||
136 | /* | 136 | /* |
137 | * EEPROM map | 137 | * EEPROM map |
@@ -215,7 +215,7 @@ struct iwl3945_eeprom { | |||
215 | /* abs.ofs: 512 */ | 215 | /* abs.ofs: 512 */ |
216 | struct iwl3945_eeprom_temperature_corr corrections; /* abs.ofs: 832 */ | 216 | struct iwl3945_eeprom_temperature_corr corrections; /* abs.ofs: 832 */ |
217 | u8 reserved16[172]; /* fill out to full 1024 byte block */ | 217 | u8 reserved16[172]; /* fill out to full 1024 byte block */ |
218 | } __attribute__ ((packed)); | 218 | } __packed; |
219 | 219 | ||
220 | #define IWL3945_EEPROM_IMG_SIZE 1024 | 220 | #define IWL3945_EEPROM_IMG_SIZE 1024 |
221 | 221 | ||
@@ -274,7 +274,7 @@ static inline int iwl3945_hw_valid_rtc_data_addr(u32 addr) | |||
274 | * and &iwl3945_shared.rx_read_ptr[0] is provided to FH_RCSR_RPTR_ADDR(0) */ | 274 | * and &iwl3945_shared.rx_read_ptr[0] is provided to FH_RCSR_RPTR_ADDR(0) */ |
275 | struct iwl3945_shared { | 275 | struct iwl3945_shared { |
276 | __le32 tx_base_ptr[8]; | 276 | __le32 tx_base_ptr[8]; |
277 | } __attribute__ ((packed)); | 277 | } __packed; |
278 | 278 | ||
279 | static inline u8 iwl3945_hw_get_rate(__le16 rate_n_flags) | 279 | static inline u8 iwl3945_hw_get_rate(__le16 rate_n_flags) |
280 | { | 280 | { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h index cd4b61ae25b7..9166794eda0d 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h | |||
@@ -787,6 +787,6 @@ enum { | |||
787 | struct iwl4965_scd_bc_tbl { | 787 | struct iwl4965_scd_bc_tbl { |
788 | __le16 tfd_offset[TFD_QUEUE_BC_SIZE]; | 788 | __le16 tfd_offset[TFD_QUEUE_BC_SIZE]; |
789 | u8 pad[1024 - (TFD_QUEUE_BC_SIZE) * sizeof(__le16)]; | 789 | u8 pad[1024 - (TFD_QUEUE_BC_SIZE) * sizeof(__le16)]; |
790 | } __attribute__ ((packed)); | 790 | } __packed; |
791 | 791 | ||
792 | #endif /* !__iwl_4965_hw_h__ */ | 792 | #endif /* !__iwl_4965_hw_h__ */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hw.h b/drivers/net/wireless/iwlwifi/iwl-agn-hw.h index f9a3fbb6338f..a52b82c8e7a6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hw.h | |||
@@ -112,7 +112,7 @@ | |||
112 | */ | 112 | */ |
113 | struct iwlagn_scd_bc_tbl { | 113 | struct iwlagn_scd_bc_tbl { |
114 | __le16 tfd_offset[TFD_QUEUE_BC_SIZE]; | 114 | __le16 tfd_offset[TFD_QUEUE_BC_SIZE]; |
115 | } __attribute__ ((packed)); | 115 | } __packed; |
116 | 116 | ||
117 | 117 | ||
118 | #endif /* __iwl_agn_hw_h__ */ | 118 | #endif /* __iwl_agn_hw_h__ */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index 9c44ab504dfe..60725a5c1b69 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h | |||
@@ -228,7 +228,7 @@ struct iwl_cmd_header { | |||
228 | 228 | ||
229 | /* command or response/notification data follows immediately */ | 229 | /* command or response/notification data follows immediately */ |
230 | u8 data[0]; | 230 | u8 data[0]; |
231 | } __attribute__ ((packed)); | 231 | } __packed; |
232 | 232 | ||
233 | 233 | ||
234 | /** | 234 | /** |
@@ -248,7 +248,7 @@ struct iwl_cmd_header { | |||
248 | struct iwl3945_tx_power { | 248 | struct iwl3945_tx_power { |
249 | u8 tx_gain; /* gain for analog radio */ | 249 | u8 tx_gain; /* gain for analog radio */ |
250 | u8 dsp_atten; /* gain for DSP */ | 250 | u8 dsp_atten; /* gain for DSP */ |
251 | } __attribute__ ((packed)); | 251 | } __packed; |
252 | 252 | ||
253 | /** | 253 | /** |
254 | * struct iwl3945_power_per_rate | 254 | * struct iwl3945_power_per_rate |
@@ -259,7 +259,7 @@ struct iwl3945_power_per_rate { | |||
259 | u8 rate; /* plcp */ | 259 | u8 rate; /* plcp */ |
260 | struct iwl3945_tx_power tpc; | 260 | struct iwl3945_tx_power tpc; |
261 | u8 reserved; | 261 | u8 reserved; |
262 | } __attribute__ ((packed)); | 262 | } __packed; |
263 | 263 | ||
264 | /** | 264 | /** |
265 | * iwlagn rate_n_flags bit fields | 265 | * iwlagn rate_n_flags bit fields |
@@ -390,7 +390,7 @@ union iwl4965_tx_power_dual_stream { | |||
390 | */ | 390 | */ |
391 | struct tx_power_dual_stream { | 391 | struct tx_power_dual_stream { |
392 | __le32 dw; | 392 | __le32 dw; |
393 | } __attribute__ ((packed)); | 393 | } __packed; |
394 | 394 | ||
395 | /** | 395 | /** |
396 | * struct iwl4965_tx_power_db | 396 | * struct iwl4965_tx_power_db |
@@ -399,7 +399,7 @@ struct tx_power_dual_stream { | |||
399 | */ | 399 | */ |
400 | struct iwl4965_tx_power_db { | 400 | struct iwl4965_tx_power_db { |
401 | struct tx_power_dual_stream power_tbl[POWER_TABLE_NUM_ENTRIES]; | 401 | struct tx_power_dual_stream power_tbl[POWER_TABLE_NUM_ENTRIES]; |
402 | } __attribute__ ((packed)); | 402 | } __packed; |
403 | 403 | ||
404 | /** | 404 | /** |
405 | * Command REPLY_TX_POWER_DBM_CMD = 0x98 | 405 | * Command REPLY_TX_POWER_DBM_CMD = 0x98 |
@@ -413,7 +413,7 @@ struct iwl5000_tx_power_dbm_cmd { | |||
413 | u8 flags; | 413 | u8 flags; |
414 | s8 srv_chan_lmt; /*in half-dBm (e.g. 30 = 15 dBm) */ | 414 | s8 srv_chan_lmt; /*in half-dBm (e.g. 30 = 15 dBm) */ |
415 | u8 reserved; | 415 | u8 reserved; |
416 | } __attribute__ ((packed)); | 416 | } __packed; |
417 | 417 | ||
418 | /** | 418 | /** |
419 | * Command TX_ANT_CONFIGURATION_CMD = 0x98 | 419 | * Command TX_ANT_CONFIGURATION_CMD = 0x98 |
@@ -423,7 +423,7 @@ struct iwl5000_tx_power_dbm_cmd { | |||
423 | */ | 423 | */ |
424 | struct iwl_tx_ant_config_cmd { | 424 | struct iwl_tx_ant_config_cmd { |
425 | __le32 valid; | 425 | __le32 valid; |
426 | } __attribute__ ((packed)); | 426 | } __packed; |
427 | 427 | ||
428 | /****************************************************************************** | 428 | /****************************************************************************** |
429 | * (0a) | 429 | * (0a) |
@@ -479,7 +479,7 @@ struct iwl_init_alive_resp { | |||
479 | __le32 therm_r4[2]; /* signed */ | 479 | __le32 therm_r4[2]; /* signed */ |
480 | __le32 tx_atten[5][2]; /* signed MIMO gain comp, 5 freq groups, | 480 | __le32 tx_atten[5][2]; /* signed MIMO gain comp, 5 freq groups, |
481 | * 2 Tx chains */ | 481 | * 2 Tx chains */ |
482 | } __attribute__ ((packed)); | 482 | } __packed; |
483 | 483 | ||
484 | 484 | ||
485 | /** | 485 | /** |
@@ -571,7 +571,7 @@ struct iwl_alive_resp { | |||
571 | __le32 error_event_table_ptr; /* SRAM address for error log */ | 571 | __le32 error_event_table_ptr; /* SRAM address for error log */ |
572 | __le32 timestamp; | 572 | __le32 timestamp; |
573 | __le32 is_valid; | 573 | __le32 is_valid; |
574 | } __attribute__ ((packed)); | 574 | } __packed; |
575 | 575 | ||
576 | /* | 576 | /* |
577 | * REPLY_ERROR = 0x2 (response only, not a command) | 577 | * REPLY_ERROR = 0x2 (response only, not a command) |
@@ -583,7 +583,7 @@ struct iwl_error_resp { | |||
583 | __le16 bad_cmd_seq_num; | 583 | __le16 bad_cmd_seq_num; |
584 | __le32 error_info; | 584 | __le32 error_info; |
585 | __le64 timestamp; | 585 | __le64 timestamp; |
586 | } __attribute__ ((packed)); | 586 | } __packed; |
587 | 587 | ||
588 | /****************************************************************************** | 588 | /****************************************************************************** |
589 | * (1) | 589 | * (1) |
@@ -719,7 +719,7 @@ struct iwl3945_rxon_cmd { | |||
719 | __le32 filter_flags; | 719 | __le32 filter_flags; |
720 | __le16 channel; | 720 | __le16 channel; |
721 | __le16 reserved5; | 721 | __le16 reserved5; |
722 | } __attribute__ ((packed)); | 722 | } __packed; |
723 | 723 | ||
724 | struct iwl4965_rxon_cmd { | 724 | struct iwl4965_rxon_cmd { |
725 | u8 node_addr[6]; | 725 | u8 node_addr[6]; |
@@ -739,7 +739,7 @@ struct iwl4965_rxon_cmd { | |||
739 | __le16 channel; | 739 | __le16 channel; |
740 | u8 ofdm_ht_single_stream_basic_rates; | 740 | u8 ofdm_ht_single_stream_basic_rates; |
741 | u8 ofdm_ht_dual_stream_basic_rates; | 741 | u8 ofdm_ht_dual_stream_basic_rates; |
742 | } __attribute__ ((packed)); | 742 | } __packed; |
743 | 743 | ||
744 | /* 5000 HW just extend this command */ | 744 | /* 5000 HW just extend this command */ |
745 | struct iwl_rxon_cmd { | 745 | struct iwl_rxon_cmd { |
@@ -764,7 +764,7 @@ struct iwl_rxon_cmd { | |||
764 | u8 reserved5; | 764 | u8 reserved5; |
765 | __le16 acquisition_data; | 765 | __le16 acquisition_data; |
766 | __le16 reserved6; | 766 | __le16 reserved6; |
767 | } __attribute__ ((packed)); | 767 | } __packed; |
768 | 768 | ||
769 | /* | 769 | /* |
770 | * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response) | 770 | * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response) |
@@ -775,7 +775,7 @@ struct iwl3945_rxon_assoc_cmd { | |||
775 | u8 ofdm_basic_rates; | 775 | u8 ofdm_basic_rates; |
776 | u8 cck_basic_rates; | 776 | u8 cck_basic_rates; |
777 | __le16 reserved; | 777 | __le16 reserved; |
778 | } __attribute__ ((packed)); | 778 | } __packed; |
779 | 779 | ||
780 | struct iwl4965_rxon_assoc_cmd { | 780 | struct iwl4965_rxon_assoc_cmd { |
781 | __le32 flags; | 781 | __le32 flags; |
@@ -786,7 +786,7 @@ struct iwl4965_rxon_assoc_cmd { | |||
786 | u8 ofdm_ht_dual_stream_basic_rates; | 786 | u8 ofdm_ht_dual_stream_basic_rates; |
787 | __le16 rx_chain_select_flags; | 787 | __le16 rx_chain_select_flags; |
788 | __le16 reserved; | 788 | __le16 reserved; |
789 | } __attribute__ ((packed)); | 789 | } __packed; |
790 | 790 | ||
791 | struct iwl5000_rxon_assoc_cmd { | 791 | struct iwl5000_rxon_assoc_cmd { |
792 | __le32 flags; | 792 | __le32 flags; |
@@ -801,7 +801,7 @@ struct iwl5000_rxon_assoc_cmd { | |||
801 | __le16 rx_chain_select_flags; | 801 | __le16 rx_chain_select_flags; |
802 | __le16 acquisition_data; | 802 | __le16 acquisition_data; |
803 | __le32 reserved3; | 803 | __le32 reserved3; |
804 | } __attribute__ ((packed)); | 804 | } __packed; |
805 | 805 | ||
806 | #define IWL_CONN_MAX_LISTEN_INTERVAL 10 | 806 | #define IWL_CONN_MAX_LISTEN_INTERVAL 10 |
807 | #define IWL_MAX_UCODE_BEACON_INTERVAL 4 /* 4096 */ | 807 | #define IWL_MAX_UCODE_BEACON_INTERVAL 4 /* 4096 */ |
@@ -817,7 +817,7 @@ struct iwl_rxon_time_cmd { | |||
817 | __le32 beacon_init_val; | 817 | __le32 beacon_init_val; |
818 | __le16 listen_interval; | 818 | __le16 listen_interval; |
819 | __le16 reserved; | 819 | __le16 reserved; |
820 | } __attribute__ ((packed)); | 820 | } __packed; |
821 | 821 | ||
822 | /* | 822 | /* |
823 | * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response) | 823 | * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response) |
@@ -830,7 +830,7 @@ struct iwl3945_channel_switch_cmd { | |||
830 | __le32 rxon_filter_flags; | 830 | __le32 rxon_filter_flags; |
831 | __le32 switch_time; | 831 | __le32 switch_time; |
832 | struct iwl3945_power_per_rate power[IWL_MAX_RATES]; | 832 | struct iwl3945_power_per_rate power[IWL_MAX_RATES]; |
833 | } __attribute__ ((packed)); | 833 | } __packed; |
834 | 834 | ||
835 | struct iwl4965_channel_switch_cmd { | 835 | struct iwl4965_channel_switch_cmd { |
836 | u8 band; | 836 | u8 band; |
@@ -840,7 +840,7 @@ struct iwl4965_channel_switch_cmd { | |||
840 | __le32 rxon_filter_flags; | 840 | __le32 rxon_filter_flags; |
841 | __le32 switch_time; | 841 | __le32 switch_time; |
842 | struct iwl4965_tx_power_db tx_power; | 842 | struct iwl4965_tx_power_db tx_power; |
843 | } __attribute__ ((packed)); | 843 | } __packed; |
844 | 844 | ||
845 | /** | 845 | /** |
846 | * struct iwl5000_channel_switch_cmd | 846 | * struct iwl5000_channel_switch_cmd |
@@ -861,7 +861,7 @@ struct iwl5000_channel_switch_cmd { | |||
861 | __le32 rxon_filter_flags; | 861 | __le32 rxon_filter_flags; |
862 | __le32 switch_time; | 862 | __le32 switch_time; |
863 | __le32 reserved[2][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES]; | 863 | __le32 reserved[2][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES]; |
864 | } __attribute__ ((packed)); | 864 | } __packed; |
865 | 865 | ||
866 | /** | 866 | /** |
867 | * struct iwl6000_channel_switch_cmd | 867 | * struct iwl6000_channel_switch_cmd |
@@ -882,7 +882,7 @@ struct iwl6000_channel_switch_cmd { | |||
882 | __le32 rxon_filter_flags; | 882 | __le32 rxon_filter_flags; |
883 | __le32 switch_time; | 883 | __le32 switch_time; |
884 | __le32 reserved[3][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES]; | 884 | __le32 reserved[3][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES]; |
885 | } __attribute__ ((packed)); | 885 | } __packed; |
886 | 886 | ||
887 | /* | 887 | /* |
888 | * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command) | 888 | * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command) |
@@ -891,7 +891,7 @@ struct iwl_csa_notification { | |||
891 | __le16 band; | 891 | __le16 band; |
892 | __le16 channel; | 892 | __le16 channel; |
893 | __le32 status; /* 0 - OK, 1 - fail */ | 893 | __le32 status; /* 0 - OK, 1 - fail */ |
894 | } __attribute__ ((packed)); | 894 | } __packed; |
895 | 895 | ||
896 | /****************************************************************************** | 896 | /****************************************************************************** |
897 | * (2) | 897 | * (2) |
@@ -921,7 +921,7 @@ struct iwl_ac_qos { | |||
921 | u8 aifsn; | 921 | u8 aifsn; |
922 | u8 reserved1; | 922 | u8 reserved1; |
923 | __le16 edca_txop; | 923 | __le16 edca_txop; |
924 | } __attribute__ ((packed)); | 924 | } __packed; |
925 | 925 | ||
926 | /* QoS flags defines */ | 926 | /* QoS flags defines */ |
927 | #define QOS_PARAM_FLG_UPDATE_EDCA_MSK cpu_to_le32(0x01) | 927 | #define QOS_PARAM_FLG_UPDATE_EDCA_MSK cpu_to_le32(0x01) |
@@ -940,7 +940,7 @@ struct iwl_ac_qos { | |||
940 | struct iwl_qosparam_cmd { | 940 | struct iwl_qosparam_cmd { |
941 | __le32 qos_flags; | 941 | __le32 qos_flags; |
942 | struct iwl_ac_qos ac[AC_NUM]; | 942 | struct iwl_ac_qos ac[AC_NUM]; |
943 | } __attribute__ ((packed)); | 943 | } __packed; |
944 | 944 | ||
945 | /****************************************************************************** | 945 | /****************************************************************************** |
946 | * (3) | 946 | * (3) |
@@ -1015,7 +1015,7 @@ struct iwl4965_keyinfo { | |||
1015 | u8 key_offset; | 1015 | u8 key_offset; |
1016 | u8 reserved2; | 1016 | u8 reserved2; |
1017 | u8 key[16]; /* 16-byte unicast decryption key */ | 1017 | u8 key[16]; /* 16-byte unicast decryption key */ |
1018 | } __attribute__ ((packed)); | 1018 | } __packed; |
1019 | 1019 | ||
1020 | /* 5000 */ | 1020 | /* 5000 */ |
1021 | struct iwl_keyinfo { | 1021 | struct iwl_keyinfo { |
@@ -1029,7 +1029,7 @@ struct iwl_keyinfo { | |||
1029 | __le64 tx_secur_seq_cnt; | 1029 | __le64 tx_secur_seq_cnt; |
1030 | __le64 hw_tkip_mic_rx_key; | 1030 | __le64 hw_tkip_mic_rx_key; |
1031 | __le64 hw_tkip_mic_tx_key; | 1031 | __le64 hw_tkip_mic_tx_key; |
1032 | } __attribute__ ((packed)); | 1032 | } __packed; |
1033 | 1033 | ||
1034 | /** | 1034 | /** |
1035 | * struct sta_id_modify | 1035 | * struct sta_id_modify |
@@ -1049,7 +1049,7 @@ struct sta_id_modify { | |||
1049 | u8 sta_id; | 1049 | u8 sta_id; |
1050 | u8 modify_mask; | 1050 | u8 modify_mask; |
1051 | __le16 reserved2; | 1051 | __le16 reserved2; |
1052 | } __attribute__ ((packed)); | 1052 | } __packed; |
1053 | 1053 | ||
1054 | /* | 1054 | /* |
1055 | * REPLY_ADD_STA = 0x18 (command) | 1055 | * REPLY_ADD_STA = 0x18 (command) |
@@ -1103,7 +1103,7 @@ struct iwl3945_addsta_cmd { | |||
1103 | /* Starting Sequence Number for added block-ack support. | 1103 | /* Starting Sequence Number for added block-ack support. |
1104 | * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */ | 1104 | * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */ |
1105 | __le16 add_immediate_ba_ssn; | 1105 | __le16 add_immediate_ba_ssn; |
1106 | } __attribute__ ((packed)); | 1106 | } __packed; |
1107 | 1107 | ||
1108 | struct iwl4965_addsta_cmd { | 1108 | struct iwl4965_addsta_cmd { |
1109 | u8 mode; /* 1: modify existing, 0: add new station */ | 1109 | u8 mode; /* 1: modify existing, 0: add new station */ |
@@ -1140,7 +1140,7 @@ struct iwl4965_addsta_cmd { | |||
1140 | __le16 sleep_tx_count; | 1140 | __le16 sleep_tx_count; |
1141 | 1141 | ||
1142 | __le16 reserved2; | 1142 | __le16 reserved2; |
1143 | } __attribute__ ((packed)); | 1143 | } __packed; |
1144 | 1144 | ||
1145 | /* 5000 */ | 1145 | /* 5000 */ |
1146 | struct iwl_addsta_cmd { | 1146 | struct iwl_addsta_cmd { |
@@ -1178,7 +1178,7 @@ struct iwl_addsta_cmd { | |||
1178 | __le16 sleep_tx_count; | 1178 | __le16 sleep_tx_count; |
1179 | 1179 | ||
1180 | __le16 reserved2; | 1180 | __le16 reserved2; |
1181 | } __attribute__ ((packed)); | 1181 | } __packed; |
1182 | 1182 | ||
1183 | 1183 | ||
1184 | #define ADD_STA_SUCCESS_MSK 0x1 | 1184 | #define ADD_STA_SUCCESS_MSK 0x1 |
@@ -1190,7 +1190,7 @@ struct iwl_addsta_cmd { | |||
1190 | */ | 1190 | */ |
1191 | struct iwl_add_sta_resp { | 1191 | struct iwl_add_sta_resp { |
1192 | u8 status; /* ADD_STA_* */ | 1192 | u8 status; /* ADD_STA_* */ |
1193 | } __attribute__ ((packed)); | 1193 | } __packed; |
1194 | 1194 | ||
1195 | #define REM_STA_SUCCESS_MSK 0x1 | 1195 | #define REM_STA_SUCCESS_MSK 0x1 |
1196 | /* | 1196 | /* |
@@ -1198,7 +1198,7 @@ struct iwl_add_sta_resp { | |||
1198 | */ | 1198 | */ |
1199 | struct iwl_rem_sta_resp { | 1199 | struct iwl_rem_sta_resp { |
1200 | u8 status; | 1200 | u8 status; |
1201 | } __attribute__ ((packed)); | 1201 | } __packed; |
1202 | 1202 | ||
1203 | /* | 1203 | /* |
1204 | * REPLY_REM_STA = 0x19 (command) | 1204 | * REPLY_REM_STA = 0x19 (command) |
@@ -1208,7 +1208,7 @@ struct iwl_rem_sta_cmd { | |||
1208 | u8 reserved[3]; | 1208 | u8 reserved[3]; |
1209 | u8 addr[ETH_ALEN]; /* MAC addr of the first station */ | 1209 | u8 addr[ETH_ALEN]; /* MAC addr of the first station */ |
1210 | u8 reserved2[2]; | 1210 | u8 reserved2[2]; |
1211 | } __attribute__ ((packed)); | 1211 | } __packed; |
1212 | 1212 | ||
1213 | #define IWL_TX_FIFO_BK_MSK cpu_to_le32(BIT(0)) | 1213 | #define IWL_TX_FIFO_BK_MSK cpu_to_le32(BIT(0)) |
1214 | #define IWL_TX_FIFO_BE_MSK cpu_to_le32(BIT(1)) | 1214 | #define IWL_TX_FIFO_BE_MSK cpu_to_le32(BIT(1)) |
@@ -1257,7 +1257,7 @@ struct iwl_wep_key { | |||
1257 | u8 key_size; | 1257 | u8 key_size; |
1258 | u8 reserved2[3]; | 1258 | u8 reserved2[3]; |
1259 | u8 key[16]; | 1259 | u8 key[16]; |
1260 | } __attribute__ ((packed)); | 1260 | } __packed; |
1261 | 1261 | ||
1262 | struct iwl_wep_cmd { | 1262 | struct iwl_wep_cmd { |
1263 | u8 num_keys; | 1263 | u8 num_keys; |
@@ -1265,7 +1265,7 @@ struct iwl_wep_cmd { | |||
1265 | u8 flags; | 1265 | u8 flags; |
1266 | u8 reserved; | 1266 | u8 reserved; |
1267 | struct iwl_wep_key key[0]; | 1267 | struct iwl_wep_key key[0]; |
1268 | } __attribute__ ((packed)); | 1268 | } __packed; |
1269 | 1269 | ||
1270 | #define WEP_KEY_WEP_TYPE 1 | 1270 | #define WEP_KEY_WEP_TYPE 1 |
1271 | #define WEP_KEYS_MAX 4 | 1271 | #define WEP_KEYS_MAX 4 |
@@ -1319,7 +1319,7 @@ struct iwl3945_rx_frame_stats { | |||
1319 | __le16 sig_avg; | 1319 | __le16 sig_avg; |
1320 | __le16 noise_diff; | 1320 | __le16 noise_diff; |
1321 | u8 payload[0]; | 1321 | u8 payload[0]; |
1322 | } __attribute__ ((packed)); | 1322 | } __packed; |
1323 | 1323 | ||
1324 | struct iwl3945_rx_frame_hdr { | 1324 | struct iwl3945_rx_frame_hdr { |
1325 | __le16 channel; | 1325 | __le16 channel; |
@@ -1328,13 +1328,13 @@ struct iwl3945_rx_frame_hdr { | |||
1328 | u8 rate; | 1328 | u8 rate; |
1329 | __le16 len; | 1329 | __le16 len; |
1330 | u8 payload[0]; | 1330 | u8 payload[0]; |
1331 | } __attribute__ ((packed)); | 1331 | } __packed; |
1332 | 1332 | ||
1333 | struct iwl3945_rx_frame_end { | 1333 | struct iwl3945_rx_frame_end { |
1334 | __le32 status; | 1334 | __le32 status; |
1335 | __le64 timestamp; | 1335 | __le64 timestamp; |
1336 | __le32 beacon_timestamp; | 1336 | __le32 beacon_timestamp; |
1337 | } __attribute__ ((packed)); | 1337 | } __packed; |
1338 | 1338 | ||
1339 | /* | 1339 | /* |
1340 | * REPLY_3945_RX = 0x1b (response only, not a command) | 1340 | * REPLY_3945_RX = 0x1b (response only, not a command) |
@@ -1348,7 +1348,7 @@ struct iwl3945_rx_frame { | |||
1348 | struct iwl3945_rx_frame_stats stats; | 1348 | struct iwl3945_rx_frame_stats stats; |
1349 | struct iwl3945_rx_frame_hdr hdr; | 1349 | struct iwl3945_rx_frame_hdr hdr; |
1350 | struct iwl3945_rx_frame_end end; | 1350 | struct iwl3945_rx_frame_end end; |
1351 | } __attribute__ ((packed)); | 1351 | } __packed; |
1352 | 1352 | ||
1353 | #define IWL39_RX_FRAME_SIZE (4 + sizeof(struct iwl3945_rx_frame)) | 1353 | #define IWL39_RX_FRAME_SIZE (4 + sizeof(struct iwl3945_rx_frame)) |
1354 | 1354 | ||
@@ -1364,7 +1364,7 @@ struct iwl4965_rx_non_cfg_phy { | |||
1364 | __le16 agc_info; /* agc code 0:6, agc dB 7:13, reserved 14:15 */ | 1364 | __le16 agc_info; /* agc code 0:6, agc dB 7:13, reserved 14:15 */ |
1365 | u8 rssi_info[6]; /* we use even entries, 0/2/4 for A/B/C rssi */ | 1365 | u8 rssi_info[6]; /* we use even entries, 0/2/4 for A/B/C rssi */ |
1366 | u8 pad[0]; | 1366 | u8 pad[0]; |
1367 | } __attribute__ ((packed)); | 1367 | } __packed; |
1368 | 1368 | ||
1369 | 1369 | ||
1370 | #define IWL50_RX_RES_PHY_CNT 8 | 1370 | #define IWL50_RX_RES_PHY_CNT 8 |
@@ -1382,7 +1382,7 @@ struct iwl4965_rx_non_cfg_phy { | |||
1382 | 1382 | ||
1383 | struct iwl5000_non_cfg_phy { | 1383 | struct iwl5000_non_cfg_phy { |
1384 | __le32 non_cfg_phy[IWL50_RX_RES_PHY_CNT]; /* up to 8 phy entries */ | 1384 | __le32 non_cfg_phy[IWL50_RX_RES_PHY_CNT]; /* up to 8 phy entries */ |
1385 | } __attribute__ ((packed)); | 1385 | } __packed; |
1386 | 1386 | ||
1387 | 1387 | ||
1388 | /* | 1388 | /* |
@@ -1402,12 +1402,12 @@ struct iwl_rx_phy_res { | |||
1402 | __le32 rate_n_flags; /* RATE_MCS_* */ | 1402 | __le32 rate_n_flags; /* RATE_MCS_* */ |
1403 | __le16 byte_count; /* frame's byte-count */ | 1403 | __le16 byte_count; /* frame's byte-count */ |
1404 | __le16 reserved3; | 1404 | __le16 reserved3; |
1405 | } __attribute__ ((packed)); | 1405 | } __packed; |
1406 | 1406 | ||
1407 | struct iwl_rx_mpdu_res_start { | 1407 | struct iwl_rx_mpdu_res_start { |
1408 | __le16 byte_count; | 1408 | __le16 byte_count; |
1409 | __le16 reserved; | 1409 | __le16 reserved; |
1410 | } __attribute__ ((packed)); | 1410 | } __packed; |
1411 | 1411 | ||
1412 | 1412 | ||
1413 | /****************************************************************************** | 1413 | /****************************************************************************** |
@@ -1606,7 +1606,7 @@ struct iwl3945_tx_cmd { | |||
1606 | */ | 1606 | */ |
1607 | u8 payload[0]; | 1607 | u8 payload[0]; |
1608 | struct ieee80211_hdr hdr[0]; | 1608 | struct ieee80211_hdr hdr[0]; |
1609 | } __attribute__ ((packed)); | 1609 | } __packed; |
1610 | 1610 | ||
1611 | /* | 1611 | /* |
1612 | * REPLY_TX = 0x1c (response) | 1612 | * REPLY_TX = 0x1c (response) |
@@ -1618,7 +1618,7 @@ struct iwl3945_tx_resp { | |||
1618 | u8 rate; | 1618 | u8 rate; |
1619 | __le32 wireless_media_time; | 1619 | __le32 wireless_media_time; |
1620 | __le32 status; /* TX status */ | 1620 | __le32 status; /* TX status */ |
1621 | } __attribute__ ((packed)); | 1621 | } __packed; |
1622 | 1622 | ||
1623 | 1623 | ||
1624 | /* | 1624 | /* |
@@ -1630,7 +1630,7 @@ struct iwl_dram_scratch { | |||
1630 | u8 try_cnt; /* Tx attempts */ | 1630 | u8 try_cnt; /* Tx attempts */ |
1631 | u8 bt_kill_cnt; /* Tx attempts blocked by Bluetooth device */ | 1631 | u8 bt_kill_cnt; /* Tx attempts blocked by Bluetooth device */ |
1632 | __le16 reserved; | 1632 | __le16 reserved; |
1633 | } __attribute__ ((packed)); | 1633 | } __packed; |
1634 | 1634 | ||
1635 | struct iwl_tx_cmd { | 1635 | struct iwl_tx_cmd { |
1636 | /* | 1636 | /* |
@@ -1709,7 +1709,7 @@ struct iwl_tx_cmd { | |||
1709 | */ | 1709 | */ |
1710 | u8 payload[0]; | 1710 | u8 payload[0]; |
1711 | struct ieee80211_hdr hdr[0]; | 1711 | struct ieee80211_hdr hdr[0]; |
1712 | } __attribute__ ((packed)); | 1712 | } __packed; |
1713 | 1713 | ||
1714 | /* TX command response is sent after *3945* transmission attempts. | 1714 | /* TX command response is sent after *3945* transmission attempts. |
1715 | * | 1715 | * |
@@ -1875,7 +1875,7 @@ enum { | |||
1875 | struct agg_tx_status { | 1875 | struct agg_tx_status { |
1876 | __le16 status; | 1876 | __le16 status; |
1877 | __le16 sequence; | 1877 | __le16 sequence; |
1878 | } __attribute__ ((packed)); | 1878 | } __packed; |
1879 | 1879 | ||
1880 | struct iwl4965_tx_resp { | 1880 | struct iwl4965_tx_resp { |
1881 | u8 frame_count; /* 1 no aggregation, >1 aggregation */ | 1881 | u8 frame_count; /* 1 no aggregation, >1 aggregation */ |
@@ -1912,7 +1912,7 @@ struct iwl4965_tx_resp { | |||
1912 | __le32 status; | 1912 | __le32 status; |
1913 | struct agg_tx_status agg_status[0]; /* for each agg frame */ | 1913 | struct agg_tx_status agg_status[0]; /* for each agg frame */ |
1914 | } u; | 1914 | } u; |
1915 | } __attribute__ ((packed)); | 1915 | } __packed; |
1916 | 1916 | ||
1917 | /* | 1917 | /* |
1918 | * definitions for initial rate index field | 1918 | * definitions for initial rate index field |
@@ -1976,7 +1976,7 @@ struct iwl5000_tx_resp { | |||
1976 | */ | 1976 | */ |
1977 | struct agg_tx_status status; /* TX status (in aggregation - | 1977 | struct agg_tx_status status; /* TX status (in aggregation - |
1978 | * status of 1st frame) */ | 1978 | * status of 1st frame) */ |
1979 | } __attribute__ ((packed)); | 1979 | } __packed; |
1980 | /* | 1980 | /* |
1981 | * REPLY_COMPRESSED_BA = 0xc5 (response only, not a command) | 1981 | * REPLY_COMPRESSED_BA = 0xc5 (response only, not a command) |
1982 | * | 1982 | * |
@@ -1994,7 +1994,7 @@ struct iwl_compressed_ba_resp { | |||
1994 | __le64 bitmap; | 1994 | __le64 bitmap; |
1995 | __le16 scd_flow; | 1995 | __le16 scd_flow; |
1996 | __le16 scd_ssn; | 1996 | __le16 scd_ssn; |
1997 | } __attribute__ ((packed)); | 1997 | } __packed; |
1998 | 1998 | ||
1999 | /* | 1999 | /* |
2000 | * REPLY_TX_PWR_TABLE_CMD = 0x97 (command, has simple generic response) | 2000 | * REPLY_TX_PWR_TABLE_CMD = 0x97 (command, has simple generic response) |
@@ -2007,14 +2007,14 @@ struct iwl3945_txpowertable_cmd { | |||
2007 | u8 reserved; | 2007 | u8 reserved; |
2008 | __le16 channel; | 2008 | __le16 channel; |
2009 | struct iwl3945_power_per_rate power[IWL_MAX_RATES]; | 2009 | struct iwl3945_power_per_rate power[IWL_MAX_RATES]; |
2010 | } __attribute__ ((packed)); | 2010 | } __packed; |
2011 | 2011 | ||
2012 | struct iwl4965_txpowertable_cmd { | 2012 | struct iwl4965_txpowertable_cmd { |
2013 | u8 band; /* 0: 5 GHz, 1: 2.4 GHz */ | 2013 | u8 band; /* 0: 5 GHz, 1: 2.4 GHz */ |
2014 | u8 reserved; | 2014 | u8 reserved; |
2015 | __le16 channel; | 2015 | __le16 channel; |
2016 | struct iwl4965_tx_power_db tx_power; | 2016 | struct iwl4965_tx_power_db tx_power; |
2017 | } __attribute__ ((packed)); | 2017 | } __packed; |
2018 | 2018 | ||
2019 | 2019 | ||
2020 | /** | 2020 | /** |
@@ -2036,13 +2036,13 @@ struct iwl3945_rate_scaling_info { | |||
2036 | __le16 rate_n_flags; | 2036 | __le16 rate_n_flags; |
2037 | u8 try_cnt; | 2037 | u8 try_cnt; |
2038 | u8 next_rate_index; | 2038 | u8 next_rate_index; |
2039 | } __attribute__ ((packed)); | 2039 | } __packed; |
2040 | 2040 | ||
2041 | struct iwl3945_rate_scaling_cmd { | 2041 | struct iwl3945_rate_scaling_cmd { |
2042 | u8 table_id; | 2042 | u8 table_id; |
2043 | u8 reserved[3]; | 2043 | u8 reserved[3]; |
2044 | struct iwl3945_rate_scaling_info table[IWL_MAX_RATES]; | 2044 | struct iwl3945_rate_scaling_info table[IWL_MAX_RATES]; |
2045 | } __attribute__ ((packed)); | 2045 | } __packed; |
2046 | 2046 | ||
2047 | 2047 | ||
2048 | /*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */ | 2048 | /*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */ |
@@ -2089,7 +2089,7 @@ struct iwl_link_qual_general_params { | |||
2089 | * TX FIFOs above 3 use same value (typically 0) as TX FIFO 3. | 2089 | * TX FIFOs above 3 use same value (typically 0) as TX FIFO 3. |
2090 | */ | 2090 | */ |
2091 | u8 start_rate_index[LINK_QUAL_AC_NUM]; | 2091 | u8 start_rate_index[LINK_QUAL_AC_NUM]; |
2092 | } __attribute__ ((packed)); | 2092 | } __packed; |
2093 | 2093 | ||
2094 | #define LINK_QUAL_AGG_TIME_LIMIT_DEF (4000) /* 4 milliseconds */ | 2094 | #define LINK_QUAL_AGG_TIME_LIMIT_DEF (4000) /* 4 milliseconds */ |
2095 | #define LINK_QUAL_AGG_TIME_LIMIT_MAX (65535) | 2095 | #define LINK_QUAL_AGG_TIME_LIMIT_MAX (65535) |
@@ -2130,7 +2130,7 @@ struct iwl_link_qual_agg_params { | |||
2130 | u8 agg_frame_cnt_limit; | 2130 | u8 agg_frame_cnt_limit; |
2131 | 2131 | ||
2132 | __le32 reserved; | 2132 | __le32 reserved; |
2133 | } __attribute__ ((packed)); | 2133 | } __packed; |
2134 | 2134 | ||
2135 | /* | 2135 | /* |
2136 | * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response) | 2136 | * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response) |
@@ -2336,7 +2336,7 @@ struct iwl_link_quality_cmd { | |||
2336 | __le32 rate_n_flags; /* RATE_MCS_*, IWL_RATE_* */ | 2336 | __le32 rate_n_flags; /* RATE_MCS_*, IWL_RATE_* */ |
2337 | } rs_table[LINK_QUAL_MAX_RETRY_NUM]; | 2337 | } rs_table[LINK_QUAL_MAX_RETRY_NUM]; |
2338 | __le32 reserved2; | 2338 | __le32 reserved2; |
2339 | } __attribute__ ((packed)); | 2339 | } __packed; |
2340 | 2340 | ||
2341 | /* | 2341 | /* |
2342 | * BT configuration enable flags: | 2342 | * BT configuration enable flags: |
@@ -2377,7 +2377,7 @@ struct iwl_bt_cmd { | |||
2377 | u8 reserved; | 2377 | u8 reserved; |
2378 | __le32 kill_ack_mask; | 2378 | __le32 kill_ack_mask; |
2379 | __le32 kill_cts_mask; | 2379 | __le32 kill_cts_mask; |
2380 | } __attribute__ ((packed)); | 2380 | } __packed; |
2381 | 2381 | ||
2382 | /****************************************************************************** | 2382 | /****************************************************************************** |
2383 | * (6) | 2383 | * (6) |
@@ -2402,7 +2402,7 @@ struct iwl_measure_channel { | |||
2402 | u8 channel; /* channel to measure */ | 2402 | u8 channel; /* channel to measure */ |
2403 | u8 type; /* see enum iwl_measure_type */ | 2403 | u8 type; /* see enum iwl_measure_type */ |
2404 | __le16 reserved; | 2404 | __le16 reserved; |
2405 | } __attribute__ ((packed)); | 2405 | } __packed; |
2406 | 2406 | ||
2407 | /* | 2407 | /* |
2408 | * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (command) | 2408 | * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (command) |
@@ -2421,7 +2421,7 @@ struct iwl_spectrum_cmd { | |||
2421 | __le16 channel_count; /* minimum 1, maximum 10 */ | 2421 | __le16 channel_count; /* minimum 1, maximum 10 */ |
2422 | __le16 reserved3; | 2422 | __le16 reserved3; |
2423 | struct iwl_measure_channel channels[10]; | 2423 | struct iwl_measure_channel channels[10]; |
2424 | } __attribute__ ((packed)); | 2424 | } __packed; |
2425 | 2425 | ||
2426 | /* | 2426 | /* |
2427 | * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (response) | 2427 | * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (response) |
@@ -2432,7 +2432,7 @@ struct iwl_spectrum_resp { | |||
2432 | __le16 status; /* 0 - command will be handled | 2432 | __le16 status; /* 0 - command will be handled |
2433 | * 1 - cannot handle (conflicts with another | 2433 | * 1 - cannot handle (conflicts with another |
2434 | * measurement) */ | 2434 | * measurement) */ |
2435 | } __attribute__ ((packed)); | 2435 | } __packed; |
2436 | 2436 | ||
2437 | enum iwl_measurement_state { | 2437 | enum iwl_measurement_state { |
2438 | IWL_MEASUREMENT_START = 0, | 2438 | IWL_MEASUREMENT_START = 0, |
@@ -2455,13 +2455,13 @@ enum iwl_measurement_status { | |||
2455 | struct iwl_measurement_histogram { | 2455 | struct iwl_measurement_histogram { |
2456 | __le32 ofdm[NUM_ELEMENTS_IN_HISTOGRAM]; /* in 0.8usec counts */ | 2456 | __le32 ofdm[NUM_ELEMENTS_IN_HISTOGRAM]; /* in 0.8usec counts */ |
2457 | __le32 cck[NUM_ELEMENTS_IN_HISTOGRAM]; /* in 1usec counts */ | 2457 | __le32 cck[NUM_ELEMENTS_IN_HISTOGRAM]; /* in 1usec counts */ |
2458 | } __attribute__ ((packed)); | 2458 | } __packed; |
2459 | 2459 | ||
2460 | /* clear channel availability counters */ | 2460 | /* clear channel availability counters */ |
2461 | struct iwl_measurement_cca_counters { | 2461 | struct iwl_measurement_cca_counters { |
2462 | __le32 ofdm; | 2462 | __le32 ofdm; |
2463 | __le32 cck; | 2463 | __le32 cck; |
2464 | } __attribute__ ((packed)); | 2464 | } __packed; |
2465 | 2465 | ||
2466 | enum iwl_measure_type { | 2466 | enum iwl_measure_type { |
2467 | IWL_MEASURE_BASIC = (1 << 0), | 2467 | IWL_MEASURE_BASIC = (1 << 0), |
@@ -2497,7 +2497,7 @@ struct iwl_spectrum_notification { | |||
2497 | struct iwl_measurement_histogram histogram; | 2497 | struct iwl_measurement_histogram histogram; |
2498 | __le32 stop_time; /* lower 32-bits of TSF */ | 2498 | __le32 stop_time; /* lower 32-bits of TSF */ |
2499 | __le32 status; /* see iwl_measurement_status */ | 2499 | __le32 status; /* see iwl_measurement_status */ |
2500 | } __attribute__ ((packed)); | 2500 | } __packed; |
2501 | 2501 | ||
2502 | /****************************************************************************** | 2502 | /****************************************************************************** |
2503 | * (7) | 2503 | * (7) |
@@ -2553,7 +2553,7 @@ struct iwl3945_powertable_cmd { | |||
2553 | __le32 rx_data_timeout; | 2553 | __le32 rx_data_timeout; |
2554 | __le32 tx_data_timeout; | 2554 | __le32 tx_data_timeout; |
2555 | __le32 sleep_interval[IWL_POWER_VEC_SIZE]; | 2555 | __le32 sleep_interval[IWL_POWER_VEC_SIZE]; |
2556 | } __attribute__ ((packed)); | 2556 | } __packed; |
2557 | 2557 | ||
2558 | struct iwl_powertable_cmd { | 2558 | struct iwl_powertable_cmd { |
2559 | __le16 flags; | 2559 | __le16 flags; |
@@ -2563,7 +2563,7 @@ struct iwl_powertable_cmd { | |||
2563 | __le32 tx_data_timeout; | 2563 | __le32 tx_data_timeout; |
2564 | __le32 sleep_interval[IWL_POWER_VEC_SIZE]; | 2564 | __le32 sleep_interval[IWL_POWER_VEC_SIZE]; |
2565 | __le32 keep_alive_beacons; | 2565 | __le32 keep_alive_beacons; |
2566 | } __attribute__ ((packed)); | 2566 | } __packed; |
2567 | 2567 | ||
2568 | /* | 2568 | /* |
2569 | * PM_SLEEP_NOTIFICATION = 0x7A (notification only, not a command) | 2569 | * PM_SLEEP_NOTIFICATION = 0x7A (notification only, not a command) |
@@ -2576,7 +2576,7 @@ struct iwl_sleep_notification { | |||
2576 | __le32 sleep_time; | 2576 | __le32 sleep_time; |
2577 | __le32 tsf_low; | 2577 | __le32 tsf_low; |
2578 | __le32 bcon_timer; | 2578 | __le32 bcon_timer; |
2579 | } __attribute__ ((packed)); | 2579 | } __packed; |
2580 | 2580 | ||
2581 | /* Sleep states. 3945 and 4965 identical. */ | 2581 | /* Sleep states. 3945 and 4965 identical. */ |
2582 | enum { | 2582 | enum { |
@@ -2601,14 +2601,14 @@ enum { | |||
2601 | #define CARD_STATE_CMD_HALT 0x02 /* Power down permanently */ | 2601 | #define CARD_STATE_CMD_HALT 0x02 /* Power down permanently */ |
2602 | struct iwl_card_state_cmd { | 2602 | struct iwl_card_state_cmd { |
2603 | __le32 status; /* CARD_STATE_CMD_* request new power state */ | 2603 | __le32 status; /* CARD_STATE_CMD_* request new power state */ |
2604 | } __attribute__ ((packed)); | 2604 | } __packed; |
2605 | 2605 | ||
2606 | /* | 2606 | /* |
2607 | * CARD_STATE_NOTIFICATION = 0xa1 (notification only, not a command) | 2607 | * CARD_STATE_NOTIFICATION = 0xa1 (notification only, not a command) |
2608 | */ | 2608 | */ |
2609 | struct iwl_card_state_notif { | 2609 | struct iwl_card_state_notif { |
2610 | __le32 flags; | 2610 | __le32 flags; |
2611 | } __attribute__ ((packed)); | 2611 | } __packed; |
2612 | 2612 | ||
2613 | #define HW_CARD_DISABLED 0x01 | 2613 | #define HW_CARD_DISABLED 0x01 |
2614 | #define SW_CARD_DISABLED 0x02 | 2614 | #define SW_CARD_DISABLED 0x02 |
@@ -2619,14 +2619,14 @@ struct iwl_ct_kill_config { | |||
2619 | __le32 reserved; | 2619 | __le32 reserved; |
2620 | __le32 critical_temperature_M; | 2620 | __le32 critical_temperature_M; |
2621 | __le32 critical_temperature_R; | 2621 | __le32 critical_temperature_R; |
2622 | } __attribute__ ((packed)); | 2622 | } __packed; |
2623 | 2623 | ||
2624 | /* 1000, and 6x00 */ | 2624 | /* 1000, and 6x00 */ |
2625 | struct iwl_ct_kill_throttling_config { | 2625 | struct iwl_ct_kill_throttling_config { |
2626 | __le32 critical_temperature_exit; | 2626 | __le32 critical_temperature_exit; |
2627 | __le32 reserved; | 2627 | __le32 reserved; |
2628 | __le32 critical_temperature_enter; | 2628 | __le32 critical_temperature_enter; |
2629 | } __attribute__ ((packed)); | 2629 | } __packed; |
2630 | 2630 | ||
2631 | /****************************************************************************** | 2631 | /****************************************************************************** |
2632 | * (8) | 2632 | * (8) |
@@ -2671,7 +2671,7 @@ struct iwl3945_scan_channel { | |||
2671 | struct iwl3945_tx_power tpc; | 2671 | struct iwl3945_tx_power tpc; |
2672 | __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */ | 2672 | __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */ |
2673 | __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */ | 2673 | __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */ |
2674 | } __attribute__ ((packed)); | 2674 | } __packed; |
2675 | 2675 | ||
2676 | /* set number of direct probes u8 type */ | 2676 | /* set number of direct probes u8 type */ |
2677 | #define IWL39_SCAN_PROBE_MASK(n) ((BIT(n) | (BIT(n) - BIT(1)))) | 2677 | #define IWL39_SCAN_PROBE_MASK(n) ((BIT(n) | (BIT(n) - BIT(1)))) |
@@ -2690,7 +2690,7 @@ struct iwl_scan_channel { | |||
2690 | u8 dsp_atten; /* gain for DSP */ | 2690 | u8 dsp_atten; /* gain for DSP */ |
2691 | __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */ | 2691 | __le16 active_dwell; /* in 1024-uSec TU (time units), typ 5-50 */ |
2692 | __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */ | 2692 | __le16 passive_dwell; /* in 1024-uSec TU (time units), typ 20-500 */ |
2693 | } __attribute__ ((packed)); | 2693 | } __packed; |
2694 | 2694 | ||
2695 | /* set number of direct probes __le32 type */ | 2695 | /* set number of direct probes __le32 type */ |
2696 | #define IWL_SCAN_PROBE_MASK(n) cpu_to_le32((BIT(n) | (BIT(n) - BIT(1)))) | 2696 | #define IWL_SCAN_PROBE_MASK(n) cpu_to_le32((BIT(n) | (BIT(n) - BIT(1)))) |
@@ -2707,7 +2707,7 @@ struct iwl_ssid_ie { | |||
2707 | u8 id; | 2707 | u8 id; |
2708 | u8 len; | 2708 | u8 len; |
2709 | u8 ssid[32]; | 2709 | u8 ssid[32]; |
2710 | } __attribute__ ((packed)); | 2710 | } __packed; |
2711 | 2711 | ||
2712 | #define PROBE_OPTION_MAX_3945 4 | 2712 | #define PROBE_OPTION_MAX_3945 4 |
2713 | #define PROBE_OPTION_MAX 20 | 2713 | #define PROBE_OPTION_MAX 20 |
@@ -2813,7 +2813,7 @@ struct iwl3945_scan_cmd { | |||
2813 | * before requesting another scan. | 2813 | * before requesting another scan. |
2814 | */ | 2814 | */ |
2815 | u8 data[0]; | 2815 | u8 data[0]; |
2816 | } __attribute__ ((packed)); | 2816 | } __packed; |
2817 | 2817 | ||
2818 | struct iwl_scan_cmd { | 2818 | struct iwl_scan_cmd { |
2819 | __le16 len; | 2819 | __le16 len; |
@@ -2857,7 +2857,7 @@ struct iwl_scan_cmd { | |||
2857 | * before requesting another scan. | 2857 | * before requesting another scan. |
2858 | */ | 2858 | */ |
2859 | u8 data[0]; | 2859 | u8 data[0]; |
2860 | } __attribute__ ((packed)); | 2860 | } __packed; |
2861 | 2861 | ||
2862 | /* Can abort will notify by complete notification with abort status. */ | 2862 | /* Can abort will notify by complete notification with abort status. */ |
2863 | #define CAN_ABORT_STATUS cpu_to_le32(0x1) | 2863 | #define CAN_ABORT_STATUS cpu_to_le32(0x1) |
@@ -2869,7 +2869,7 @@ struct iwl_scan_cmd { | |||
2869 | */ | 2869 | */ |
2870 | struct iwl_scanreq_notification { | 2870 | struct iwl_scanreq_notification { |
2871 | __le32 status; /* 1: okay, 2: cannot fulfill request */ | 2871 | __le32 status; /* 1: okay, 2: cannot fulfill request */ |
2872 | } __attribute__ ((packed)); | 2872 | } __packed; |
2873 | 2873 | ||
2874 | /* | 2874 | /* |
2875 | * SCAN_START_NOTIFICATION = 0x82 (notification only, not a command) | 2875 | * SCAN_START_NOTIFICATION = 0x82 (notification only, not a command) |
@@ -2882,7 +2882,7 @@ struct iwl_scanstart_notification { | |||
2882 | u8 band; | 2882 | u8 band; |
2883 | u8 reserved[2]; | 2883 | u8 reserved[2]; |
2884 | __le32 status; | 2884 | __le32 status; |
2885 | } __attribute__ ((packed)); | 2885 | } __packed; |
2886 | 2886 | ||
2887 | #define SCAN_OWNER_STATUS 0x1; | 2887 | #define SCAN_OWNER_STATUS 0x1; |
2888 | #define MEASURE_OWNER_STATUS 0x2; | 2888 | #define MEASURE_OWNER_STATUS 0x2; |
@@ -2898,7 +2898,7 @@ struct iwl_scanresults_notification { | |||
2898 | __le32 tsf_low; | 2898 | __le32 tsf_low; |
2899 | __le32 tsf_high; | 2899 | __le32 tsf_high; |
2900 | __le32 statistics[NUMBER_OF_STATISTICS]; | 2900 | __le32 statistics[NUMBER_OF_STATISTICS]; |
2901 | } __attribute__ ((packed)); | 2901 | } __packed; |
2902 | 2902 | ||
2903 | /* | 2903 | /* |
2904 | * SCAN_COMPLETE_NOTIFICATION = 0x84 (notification only, not a command) | 2904 | * SCAN_COMPLETE_NOTIFICATION = 0x84 (notification only, not a command) |
@@ -2910,7 +2910,7 @@ struct iwl_scancomplete_notification { | |||
2910 | u8 last_channel; | 2910 | u8 last_channel; |
2911 | __le32 tsf_low; | 2911 | __le32 tsf_low; |
2912 | __le32 tsf_high; | 2912 | __le32 tsf_high; |
2913 | } __attribute__ ((packed)); | 2913 | } __packed; |
2914 | 2914 | ||
2915 | 2915 | ||
2916 | /****************************************************************************** | 2916 | /****************************************************************************** |
@@ -2928,14 +2928,14 @@ struct iwl3945_beacon_notif { | |||
2928 | __le32 low_tsf; | 2928 | __le32 low_tsf; |
2929 | __le32 high_tsf; | 2929 | __le32 high_tsf; |
2930 | __le32 ibss_mgr_status; | 2930 | __le32 ibss_mgr_status; |
2931 | } __attribute__ ((packed)); | 2931 | } __packed; |
2932 | 2932 | ||
2933 | struct iwl4965_beacon_notif { | 2933 | struct iwl4965_beacon_notif { |
2934 | struct iwl4965_tx_resp beacon_notify_hdr; | 2934 | struct iwl4965_tx_resp beacon_notify_hdr; |
2935 | __le32 low_tsf; | 2935 | __le32 low_tsf; |
2936 | __le32 high_tsf; | 2936 | __le32 high_tsf; |
2937 | __le32 ibss_mgr_status; | 2937 | __le32 ibss_mgr_status; |
2938 | } __attribute__ ((packed)); | 2938 | } __packed; |
2939 | 2939 | ||
2940 | /* | 2940 | /* |
2941 | * REPLY_TX_BEACON = 0x91 (command, has simple generic response) | 2941 | * REPLY_TX_BEACON = 0x91 (command, has simple generic response) |
@@ -2947,7 +2947,7 @@ struct iwl3945_tx_beacon_cmd { | |||
2947 | u8 tim_size; | 2947 | u8 tim_size; |
2948 | u8 reserved1; | 2948 | u8 reserved1; |
2949 | struct ieee80211_hdr frame[0]; /* beacon frame */ | 2949 | struct ieee80211_hdr frame[0]; /* beacon frame */ |
2950 | } __attribute__ ((packed)); | 2950 | } __packed; |
2951 | 2951 | ||
2952 | struct iwl_tx_beacon_cmd { | 2952 | struct iwl_tx_beacon_cmd { |
2953 | struct iwl_tx_cmd tx; | 2953 | struct iwl_tx_cmd tx; |
@@ -2955,7 +2955,7 @@ struct iwl_tx_beacon_cmd { | |||
2955 | u8 tim_size; | 2955 | u8 tim_size; |
2956 | u8 reserved1; | 2956 | u8 reserved1; |
2957 | struct ieee80211_hdr frame[0]; /* beacon frame */ | 2957 | struct ieee80211_hdr frame[0]; /* beacon frame */ |
2958 | } __attribute__ ((packed)); | 2958 | } __packed; |
2959 | 2959 | ||
2960 | /****************************************************************************** | 2960 | /****************************************************************************** |
2961 | * (10) | 2961 | * (10) |
@@ -2981,7 +2981,7 @@ struct rate_histogram { | |||
2981 | __le32 b[SUP_RATE_11B_MAX_NUM_CHANNELS]; | 2981 | __le32 b[SUP_RATE_11B_MAX_NUM_CHANNELS]; |
2982 | __le32 g[SUP_RATE_11G_MAX_NUM_CHANNELS]; | 2982 | __le32 g[SUP_RATE_11G_MAX_NUM_CHANNELS]; |
2983 | } failed; | 2983 | } failed; |
2984 | } __attribute__ ((packed)); | 2984 | } __packed; |
2985 | 2985 | ||
2986 | /* statistics command response */ | 2986 | /* statistics command response */ |
2987 | 2987 | ||
@@ -3001,7 +3001,7 @@ struct iwl39_statistics_rx_phy { | |||
3001 | __le32 rxe_frame_limit_overrun; | 3001 | __le32 rxe_frame_limit_overrun; |
3002 | __le32 sent_ack_cnt; | 3002 | __le32 sent_ack_cnt; |
3003 | __le32 sent_cts_cnt; | 3003 | __le32 sent_cts_cnt; |
3004 | } __attribute__ ((packed)); | 3004 | } __packed; |
3005 | 3005 | ||
3006 | struct iwl39_statistics_rx_non_phy { | 3006 | struct iwl39_statistics_rx_non_phy { |
3007 | __le32 bogus_cts; /* CTS received when not expecting CTS */ | 3007 | __le32 bogus_cts; /* CTS received when not expecting CTS */ |
@@ -3012,13 +3012,13 @@ struct iwl39_statistics_rx_non_phy { | |||
3012 | * filtering process */ | 3012 | * filtering process */ |
3013 | __le32 non_channel_beacons; /* beacons with our bss id but not on | 3013 | __le32 non_channel_beacons; /* beacons with our bss id but not on |
3014 | * our serving channel */ | 3014 | * our serving channel */ |
3015 | } __attribute__ ((packed)); | 3015 | } __packed; |
3016 | 3016 | ||
3017 | struct iwl39_statistics_rx { | 3017 | struct iwl39_statistics_rx { |
3018 | struct iwl39_statistics_rx_phy ofdm; | 3018 | struct iwl39_statistics_rx_phy ofdm; |
3019 | struct iwl39_statistics_rx_phy cck; | 3019 | struct iwl39_statistics_rx_phy cck; |
3020 | struct iwl39_statistics_rx_non_phy general; | 3020 | struct iwl39_statistics_rx_non_phy general; |
3021 | } __attribute__ ((packed)); | 3021 | } __packed; |
3022 | 3022 | ||
3023 | struct iwl39_statistics_tx { | 3023 | struct iwl39_statistics_tx { |
3024 | __le32 preamble_cnt; | 3024 | __le32 preamble_cnt; |
@@ -3030,21 +3030,21 @@ struct iwl39_statistics_tx { | |||
3030 | __le32 ack_timeout; | 3030 | __le32 ack_timeout; |
3031 | __le32 expected_ack_cnt; | 3031 | __le32 expected_ack_cnt; |
3032 | __le32 actual_ack_cnt; | 3032 | __le32 actual_ack_cnt; |
3033 | } __attribute__ ((packed)); | 3033 | } __packed; |
3034 | 3034 | ||
3035 | struct statistics_dbg { | 3035 | struct statistics_dbg { |
3036 | __le32 burst_check; | 3036 | __le32 burst_check; |
3037 | __le32 burst_count; | 3037 | __le32 burst_count; |
3038 | __le32 wait_for_silence_timeout_cnt; | 3038 | __le32 wait_for_silence_timeout_cnt; |
3039 | __le32 reserved[3]; | 3039 | __le32 reserved[3]; |
3040 | } __attribute__ ((packed)); | 3040 | } __packed; |
3041 | 3041 | ||
3042 | struct iwl39_statistics_div { | 3042 | struct iwl39_statistics_div { |
3043 | __le32 tx_on_a; | 3043 | __le32 tx_on_a; |
3044 | __le32 tx_on_b; | 3044 | __le32 tx_on_b; |
3045 | __le32 exec_time; | 3045 | __le32 exec_time; |
3046 | __le32 probe_time; | 3046 | __le32 probe_time; |
3047 | } __attribute__ ((packed)); | 3047 | } __packed; |
3048 | 3048 | ||
3049 | struct iwl39_statistics_general { | 3049 | struct iwl39_statistics_general { |
3050 | __le32 temperature; | 3050 | __le32 temperature; |
@@ -3054,7 +3054,7 @@ struct iwl39_statistics_general { | |||
3054 | __le32 slots_idle; | 3054 | __le32 slots_idle; |
3055 | __le32 ttl_timestamp; | 3055 | __le32 ttl_timestamp; |
3056 | struct iwl39_statistics_div div; | 3056 | struct iwl39_statistics_div div; |
3057 | } __attribute__ ((packed)); | 3057 | } __packed; |
3058 | 3058 | ||
3059 | struct statistics_rx_phy { | 3059 | struct statistics_rx_phy { |
3060 | __le32 ina_cnt; | 3060 | __le32 ina_cnt; |
@@ -3077,7 +3077,7 @@ struct statistics_rx_phy { | |||
3077 | __le32 mh_format_err; | 3077 | __le32 mh_format_err; |
3078 | __le32 re_acq_main_rssi_sum; | 3078 | __le32 re_acq_main_rssi_sum; |
3079 | __le32 reserved3; | 3079 | __le32 reserved3; |
3080 | } __attribute__ ((packed)); | 3080 | } __packed; |
3081 | 3081 | ||
3082 | struct statistics_rx_ht_phy { | 3082 | struct statistics_rx_ht_phy { |
3083 | __le32 plcp_err; | 3083 | __le32 plcp_err; |
@@ -3090,7 +3090,7 @@ struct statistics_rx_ht_phy { | |||
3090 | __le32 agg_mpdu_cnt; | 3090 | __le32 agg_mpdu_cnt; |
3091 | __le32 agg_cnt; | 3091 | __le32 agg_cnt; |
3092 | __le32 unsupport_mcs; | 3092 | __le32 unsupport_mcs; |
3093 | } __attribute__ ((packed)); | 3093 | } __packed; |
3094 | 3094 | ||
3095 | #define INTERFERENCE_DATA_AVAILABLE cpu_to_le32(1) | 3095 | #define INTERFERENCE_DATA_AVAILABLE cpu_to_le32(1) |
3096 | 3096 | ||
@@ -3125,7 +3125,7 @@ struct statistics_rx_non_phy { | |||
3125 | __le32 beacon_energy_a; | 3125 | __le32 beacon_energy_a; |
3126 | __le32 beacon_energy_b; | 3126 | __le32 beacon_energy_b; |
3127 | __le32 beacon_energy_c; | 3127 | __le32 beacon_energy_c; |
3128 | } __attribute__ ((packed)); | 3128 | } __packed; |
3129 | 3129 | ||
3130 | struct statistics_rx_non_phy_bt { | 3130 | struct statistics_rx_non_phy_bt { |
3131 | struct statistics_rx_non_phy common; | 3131 | struct statistics_rx_non_phy common; |
@@ -3139,7 +3139,7 @@ struct statistics_rx { | |||
3139 | struct statistics_rx_phy cck; | 3139 | struct statistics_rx_phy cck; |
3140 | struct statistics_rx_non_phy general; | 3140 | struct statistics_rx_non_phy general; |
3141 | struct statistics_rx_ht_phy ofdm_ht; | 3141 | struct statistics_rx_ht_phy ofdm_ht; |
3142 | } __attribute__ ((packed)); | 3142 | } __packed; |
3143 | 3143 | ||
3144 | struct statistics_rx_bt { | 3144 | struct statistics_rx_bt { |
3145 | struct statistics_rx_phy ofdm; | 3145 | struct statistics_rx_phy ofdm; |
@@ -3160,7 +3160,7 @@ struct statistics_tx_power { | |||
3160 | u8 ant_b; | 3160 | u8 ant_b; |
3161 | u8 ant_c; | 3161 | u8 ant_c; |
3162 | u8 reserved; | 3162 | u8 reserved; |
3163 | } __attribute__ ((packed)); | 3163 | } __packed; |
3164 | 3164 | ||
3165 | struct statistics_tx_non_phy_agg { | 3165 | struct statistics_tx_non_phy_agg { |
3166 | __le32 ba_timeout; | 3166 | __le32 ba_timeout; |
@@ -3173,7 +3173,7 @@ struct statistics_tx_non_phy_agg { | |||
3173 | __le32 underrun; | 3173 | __le32 underrun; |
3174 | __le32 bt_prio_kill; | 3174 | __le32 bt_prio_kill; |
3175 | __le32 rx_ba_rsp_cnt; | 3175 | __le32 rx_ba_rsp_cnt; |
3176 | } __attribute__ ((packed)); | 3176 | } __packed; |
3177 | 3177 | ||
3178 | struct statistics_tx { | 3178 | struct statistics_tx { |
3179 | __le32 preamble_cnt; | 3179 | __le32 preamble_cnt; |
@@ -3198,7 +3198,7 @@ struct statistics_tx { | |||
3198 | */ | 3198 | */ |
3199 | struct statistics_tx_power tx_power; | 3199 | struct statistics_tx_power tx_power; |
3200 | __le32 reserved1; | 3200 | __le32 reserved1; |
3201 | } __attribute__ ((packed)); | 3201 | } __packed; |
3202 | 3202 | ||
3203 | 3203 | ||
3204 | struct statistics_div { | 3204 | struct statistics_div { |
@@ -3208,7 +3208,7 @@ struct statistics_div { | |||
3208 | __le32 probe_time; | 3208 | __le32 probe_time; |
3209 | __le32 reserved1; | 3209 | __le32 reserved1; |
3210 | __le32 reserved2; | 3210 | __le32 reserved2; |
3211 | } __attribute__ ((packed)); | 3211 | } __packed; |
3212 | 3212 | ||
3213 | struct statistics_general_common { | 3213 | struct statistics_general_common { |
3214 | __le32 temperature; /* radio temperature */ | 3214 | __le32 temperature; /* radio temperature */ |
@@ -3252,7 +3252,7 @@ struct statistics_general_bt { | |||
3252 | struct statistics_bt_activity activity; | 3252 | struct statistics_bt_activity activity; |
3253 | __le32 reserved2; | 3253 | __le32 reserved2; |
3254 | __le32 reserved3; | 3254 | __le32 reserved3; |
3255 | } __attribute__ ((packed)); | 3255 | } __packed; |
3256 | 3256 | ||
3257 | #define UCODE_STATISTICS_CLEAR_MSK (0x1 << 0) | 3257 | #define UCODE_STATISTICS_CLEAR_MSK (0x1 << 0) |
3258 | #define UCODE_STATISTICS_FREQUENCY_MSK (0x1 << 1) | 3258 | #define UCODE_STATISTICS_FREQUENCY_MSK (0x1 << 1) |
@@ -3277,7 +3277,7 @@ struct statistics_general_bt { | |||
3277 | #define IWL_STATS_CONF_DISABLE_NOTIF cpu_to_le32(0x2)/* see above */ | 3277 | #define IWL_STATS_CONF_DISABLE_NOTIF cpu_to_le32(0x2)/* see above */ |
3278 | struct iwl_statistics_cmd { | 3278 | struct iwl_statistics_cmd { |
3279 | __le32 configuration_flags; /* IWL_STATS_CONF_* */ | 3279 | __le32 configuration_flags; /* IWL_STATS_CONF_* */ |
3280 | } __attribute__ ((packed)); | 3280 | } __packed; |
3281 | 3281 | ||
3282 | /* | 3282 | /* |
3283 | * STATISTICS_NOTIFICATION = 0x9d (notification only, not a command) | 3283 | * STATISTICS_NOTIFICATION = 0x9d (notification only, not a command) |
@@ -3302,14 +3302,14 @@ struct iwl3945_notif_statistics { | |||
3302 | struct iwl39_statistics_rx rx; | 3302 | struct iwl39_statistics_rx rx; |
3303 | struct iwl39_statistics_tx tx; | 3303 | struct iwl39_statistics_tx tx; |
3304 | struct iwl39_statistics_general general; | 3304 | struct iwl39_statistics_general general; |
3305 | } __attribute__ ((packed)); | 3305 | } __packed; |
3306 | 3306 | ||
3307 | struct iwl_notif_statistics { | 3307 | struct iwl_notif_statistics { |
3308 | __le32 flag; | 3308 | __le32 flag; |
3309 | struct statistics_rx rx; | 3309 | struct statistics_rx rx; |
3310 | struct statistics_tx tx; | 3310 | struct statistics_tx tx; |
3311 | struct statistics_general general; | 3311 | struct statistics_general general; |
3312 | } __attribute__ ((packed)); | 3312 | } __packed; |
3313 | 3313 | ||
3314 | struct iwl_bt_notif_statistics { | 3314 | struct iwl_bt_notif_statistics { |
3315 | __le32 flag; | 3315 | __le32 flag; |
@@ -3347,7 +3347,7 @@ struct iwl_missed_beacon_notif { | |||
3347 | __le32 total_missed_becons; | 3347 | __le32 total_missed_becons; |
3348 | __le32 num_expected_beacons; | 3348 | __le32 num_expected_beacons; |
3349 | __le32 num_recvd_beacons; | 3349 | __le32 num_recvd_beacons; |
3350 | } __attribute__ ((packed)); | 3350 | } __packed; |
3351 | 3351 | ||
3352 | 3352 | ||
3353 | /****************************************************************************** | 3353 | /****************************************************************************** |
@@ -3584,7 +3584,7 @@ struct iwl_missed_beacon_notif { | |||
3584 | struct iwl_sensitivity_cmd { | 3584 | struct iwl_sensitivity_cmd { |
3585 | __le16 control; /* always use "1" */ | 3585 | __le16 control; /* always use "1" */ |
3586 | __le16 table[HD_TABLE_SIZE]; /* use HD_* as index */ | 3586 | __le16 table[HD_TABLE_SIZE]; /* use HD_* as index */ |
3587 | } __attribute__ ((packed)); | 3587 | } __packed; |
3588 | 3588 | ||
3589 | /* | 3589 | /* |
3590 | * | 3590 | * |
@@ -3673,31 +3673,31 @@ struct iwl_calib_cfg_elmnt_s { | |||
3673 | __le32 send_res; | 3673 | __le32 send_res; |
3674 | __le32 apply_res; | 3674 | __le32 apply_res; |
3675 | __le32 reserved; | 3675 | __le32 reserved; |
3676 | } __attribute__ ((packed)); | 3676 | } __packed; |
3677 | 3677 | ||
3678 | struct iwl_calib_cfg_status_s { | 3678 | struct iwl_calib_cfg_status_s { |
3679 | struct iwl_calib_cfg_elmnt_s once; | 3679 | struct iwl_calib_cfg_elmnt_s once; |
3680 | struct iwl_calib_cfg_elmnt_s perd; | 3680 | struct iwl_calib_cfg_elmnt_s perd; |
3681 | __le32 flags; | 3681 | __le32 flags; |
3682 | } __attribute__ ((packed)); | 3682 | } __packed; |
3683 | 3683 | ||
3684 | struct iwl_calib_cfg_cmd { | 3684 | struct iwl_calib_cfg_cmd { |
3685 | struct iwl_calib_cfg_status_s ucd_calib_cfg; | 3685 | struct iwl_calib_cfg_status_s ucd_calib_cfg; |
3686 | struct iwl_calib_cfg_status_s drv_calib_cfg; | 3686 | struct iwl_calib_cfg_status_s drv_calib_cfg; |
3687 | __le32 reserved1; | 3687 | __le32 reserved1; |
3688 | } __attribute__ ((packed)); | 3688 | } __packed; |
3689 | 3689 | ||
3690 | struct iwl_calib_hdr { | 3690 | struct iwl_calib_hdr { |
3691 | u8 op_code; | 3691 | u8 op_code; |
3692 | u8 first_group; | 3692 | u8 first_group; |
3693 | u8 groups_num; | 3693 | u8 groups_num; |
3694 | u8 data_valid; | 3694 | u8 data_valid; |
3695 | } __attribute__ ((packed)); | 3695 | } __packed; |
3696 | 3696 | ||
3697 | struct iwl_calib_cmd { | 3697 | struct iwl_calib_cmd { |
3698 | struct iwl_calib_hdr hdr; | 3698 | struct iwl_calib_hdr hdr; |
3699 | u8 data[0]; | 3699 | u8 data[0]; |
3700 | } __attribute__ ((packed)); | 3700 | } __packed; |
3701 | 3701 | ||
3702 | /* IWL_PHY_CALIBRATE_DIFF_GAIN_CMD (7) */ | 3702 | /* IWL_PHY_CALIBRATE_DIFF_GAIN_CMD (7) */ |
3703 | struct iwl_calib_diff_gain_cmd { | 3703 | struct iwl_calib_diff_gain_cmd { |
@@ -3706,14 +3706,14 @@ struct iwl_calib_diff_gain_cmd { | |||
3706 | s8 diff_gain_b; | 3706 | s8 diff_gain_b; |
3707 | s8 diff_gain_c; | 3707 | s8 diff_gain_c; |
3708 | u8 reserved1; | 3708 | u8 reserved1; |
3709 | } __attribute__ ((packed)); | 3709 | } __packed; |
3710 | 3710 | ||
3711 | struct iwl_calib_xtal_freq_cmd { | 3711 | struct iwl_calib_xtal_freq_cmd { |
3712 | struct iwl_calib_hdr hdr; | 3712 | struct iwl_calib_hdr hdr; |
3713 | u8 cap_pin1; | 3713 | u8 cap_pin1; |
3714 | u8 cap_pin2; | 3714 | u8 cap_pin2; |
3715 | u8 pad[2]; | 3715 | u8 pad[2]; |
3716 | } __attribute__ ((packed)); | 3716 | } __packed; |
3717 | 3717 | ||
3718 | /* IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */ | 3718 | /* IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */ |
3719 | struct iwl_calib_chain_noise_reset_cmd { | 3719 | struct iwl_calib_chain_noise_reset_cmd { |
@@ -3727,7 +3727,7 @@ struct iwl_calib_chain_noise_gain_cmd { | |||
3727 | u8 delta_gain_1; | 3727 | u8 delta_gain_1; |
3728 | u8 delta_gain_2; | 3728 | u8 delta_gain_2; |
3729 | u8 pad[2]; | 3729 | u8 pad[2]; |
3730 | } __attribute__ ((packed)); | 3730 | } __packed; |
3731 | 3731 | ||
3732 | /****************************************************************************** | 3732 | /****************************************************************************** |
3733 | * (12) | 3733 | * (12) |
@@ -3750,7 +3750,7 @@ struct iwl_led_cmd { | |||
3750 | u8 on; /* # intervals on while blinking; | 3750 | u8 on; /* # intervals on while blinking; |
3751 | * "0", regardless of "off", turns LED off */ | 3751 | * "0", regardless of "off", turns LED off */ |
3752 | u8 reserved; | 3752 | u8 reserved; |
3753 | } __attribute__ ((packed)); | 3753 | } __packed; |
3754 | 3754 | ||
3755 | /* | 3755 | /* |
3756 | * station priority table entries | 3756 | * station priority table entries |
@@ -3886,7 +3886,7 @@ struct iwl_wimax_coex_event_entry { | |||
3886 | u8 win_medium_prio; | 3886 | u8 win_medium_prio; |
3887 | u8 reserved; | 3887 | u8 reserved; |
3888 | u8 flags; | 3888 | u8 flags; |
3889 | } __attribute__ ((packed)); | 3889 | } __packed; |
3890 | 3890 | ||
3891 | /* COEX flag masks */ | 3891 | /* COEX flag masks */ |
3892 | 3892 | ||
@@ -3903,7 +3903,7 @@ struct iwl_wimax_coex_cmd { | |||
3903 | u8 flags; | 3903 | u8 flags; |
3904 | u8 reserved[3]; | 3904 | u8 reserved[3]; |
3905 | struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS]; | 3905 | struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS]; |
3906 | } __attribute__ ((packed)); | 3906 | } __packed; |
3907 | 3907 | ||
3908 | /* | 3908 | /* |
3909 | * Coexistence MEDIUM NOTIFICATION | 3909 | * Coexistence MEDIUM NOTIFICATION |
@@ -3932,7 +3932,7 @@ struct iwl_wimax_coex_cmd { | |||
3932 | struct iwl_coex_medium_notification { | 3932 | struct iwl_coex_medium_notification { |
3933 | __le32 status; | 3933 | __le32 status; |
3934 | __le32 events; | 3934 | __le32 events; |
3935 | } __attribute__ ((packed)); | 3935 | } __packed; |
3936 | 3936 | ||
3937 | /* | 3937 | /* |
3938 | * Coexistence EVENT Command | 3938 | * Coexistence EVENT Command |
@@ -3947,11 +3947,11 @@ struct iwl_coex_event_cmd { | |||
3947 | u8 flags; | 3947 | u8 flags; |
3948 | u8 event; | 3948 | u8 event; |
3949 | __le16 reserved; | 3949 | __le16 reserved; |
3950 | } __attribute__ ((packed)); | 3950 | } __packed; |
3951 | 3951 | ||
3952 | struct iwl_coex_event_resp { | 3952 | struct iwl_coex_event_resp { |
3953 | __le32 status; | 3953 | __le32 status; |
3954 | } __attribute__ ((packed)); | 3954 | } __packed; |
3955 | 3955 | ||
3956 | 3956 | ||
3957 | /****************************************************************************** | 3957 | /****************************************************************************** |
@@ -3996,7 +3996,7 @@ struct iwl_rx_packet { | |||
3996 | __le32 status; | 3996 | __le32 status; |
3997 | u8 raw[0]; | 3997 | u8 raw[0]; |
3998 | } u; | 3998 | } u; |
3999 | } __attribute__ ((packed)); | 3999 | } __packed; |
4000 | 4000 | ||
4001 | int iwl_agn_check_rxon_cmd(struct iwl_priv *priv); | 4001 | int iwl_agn_check_rxon_cmd(struct iwl_priv *priv); |
4002 | 4002 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 5e4745db5dc6..f35bcad56e36 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -138,7 +138,7 @@ struct iwl_queue { | |||
138 | * space more than this */ | 138 | * space more than this */ |
139 | int high_mark; /* high watermark, stop queue if free | 139 | int high_mark; /* high watermark, stop queue if free |
140 | * space less than this */ | 140 | * space less than this */ |
141 | } __attribute__ ((packed)); | 141 | } __packed; |
142 | 142 | ||
143 | /* One for each TFD */ | 143 | /* One for each TFD */ |
144 | struct iwl_tx_info { | 144 | struct iwl_tx_info { |
@@ -324,8 +324,8 @@ struct iwl_device_cmd { | |||
324 | struct iwl_tx_cmd tx; | 324 | struct iwl_tx_cmd tx; |
325 | struct iwl6000_channel_switch_cmd chswitch; | 325 | struct iwl6000_channel_switch_cmd chswitch; |
326 | u8 payload[DEF_CMD_PAYLOAD_SIZE]; | 326 | u8 payload[DEF_CMD_PAYLOAD_SIZE]; |
327 | } __attribute__ ((packed)) cmd; | 327 | } __packed cmd; |
328 | } __attribute__ ((packed)); | 328 | } __packed; |
329 | 329 | ||
330 | #define TFD_MAX_PAYLOAD_SIZE (sizeof(struct iwl_device_cmd)) | 330 | #define TFD_MAX_PAYLOAD_SIZE (sizeof(struct iwl_device_cmd)) |
331 | 331 | ||
@@ -579,7 +579,7 @@ struct iwl_ucode_tlv { | |||
579 | __le16 alternative; /* see comment */ | 579 | __le16 alternative; /* see comment */ |
580 | __le32 length; /* not including type/length fields */ | 580 | __le32 length; /* not including type/length fields */ |
581 | u8 data[0]; | 581 | u8 data[0]; |
582 | } __attribute__ ((packed)); | 582 | } __packed; |
583 | 583 | ||
584 | #define IWL_TLV_UCODE_MAGIC 0x0a4c5749 | 584 | #define IWL_TLV_UCODE_MAGIC 0x0a4c5749 |
585 | 585 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h index 3209b37997b6..a4772aff51fe 100644 --- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h +++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h | |||
@@ -118,7 +118,7 @@ enum { | |||
118 | struct iwl_eeprom_channel { | 118 | struct iwl_eeprom_channel { |
119 | u8 flags; /* EEPROM_CHANNEL_* flags copied from EEPROM */ | 119 | u8 flags; /* EEPROM_CHANNEL_* flags copied from EEPROM */ |
120 | s8 max_power_avg; /* max power (dBm) on this chnl, limit 31 */ | 120 | s8 max_power_avg; /* max power (dBm) on this chnl, limit 31 */ |
121 | } __attribute__ ((packed)); | 121 | } __packed; |
122 | 122 | ||
123 | /** | 123 | /** |
124 | * iwl_eeprom_enhanced_txpwr structure | 124 | * iwl_eeprom_enhanced_txpwr structure |
@@ -144,7 +144,7 @@ struct iwl_eeprom_enhanced_txpwr { | |||
144 | s8 reserved; | 144 | s8 reserved; |
145 | s8 mimo2_max; | 145 | s8 mimo2_max; |
146 | s8 mimo3_max; | 146 | s8 mimo3_max; |
147 | } __attribute__ ((packed)); | 147 | } __packed; |
148 | 148 | ||
149 | /* 3945 Specific */ | 149 | /* 3945 Specific */ |
150 | #define EEPROM_3945_EEPROM_VERSION (0x2f) | 150 | #define EEPROM_3945_EEPROM_VERSION (0x2f) |
@@ -316,7 +316,7 @@ struct iwl_eeprom_calib_measure { | |||
316 | u8 gain_idx; /* Index into gain table */ | 316 | u8 gain_idx; /* Index into gain table */ |
317 | u8 actual_pow; /* Measured RF output power, half-dBm */ | 317 | u8 actual_pow; /* Measured RF output power, half-dBm */ |
318 | s8 pa_det; /* Power amp detector level (not used) */ | 318 | s8 pa_det; /* Power amp detector level (not used) */ |
319 | } __attribute__ ((packed)); | 319 | } __packed; |
320 | 320 | ||
321 | 321 | ||
322 | /* | 322 | /* |
@@ -332,7 +332,7 @@ struct iwl_eeprom_calib_ch_info { | |||
332 | struct iwl_eeprom_calib_measure | 332 | struct iwl_eeprom_calib_measure |
333 | measurements[EEPROM_TX_POWER_TX_CHAINS] | 333 | measurements[EEPROM_TX_POWER_TX_CHAINS] |
334 | [EEPROM_TX_POWER_MEASUREMENTS]; | 334 | [EEPROM_TX_POWER_MEASUREMENTS]; |
335 | } __attribute__ ((packed)); | 335 | } __packed; |
336 | 336 | ||
337 | /* | 337 | /* |
338 | * txpower subband info. | 338 | * txpower subband info. |
@@ -349,7 +349,7 @@ struct iwl_eeprom_calib_subband_info { | |||
349 | u8 ch_to; /* channel number of highest channel in subband */ | 349 | u8 ch_to; /* channel number of highest channel in subband */ |
350 | struct iwl_eeprom_calib_ch_info ch1; | 350 | struct iwl_eeprom_calib_ch_info ch1; |
351 | struct iwl_eeprom_calib_ch_info ch2; | 351 | struct iwl_eeprom_calib_ch_info ch2; |
352 | } __attribute__ ((packed)); | 352 | } __packed; |
353 | 353 | ||
354 | 354 | ||
355 | /* | 355 | /* |
@@ -378,7 +378,7 @@ struct iwl_eeprom_calib_info { | |||
378 | __le16 voltage; /* signed */ | 378 | __le16 voltage; /* signed */ |
379 | struct iwl_eeprom_calib_subband_info | 379 | struct iwl_eeprom_calib_subband_info |
380 | band_info[EEPROM_TX_POWER_BANDS]; | 380 | band_info[EEPROM_TX_POWER_BANDS]; |
381 | } __attribute__ ((packed)); | 381 | } __packed; |
382 | 382 | ||
383 | 383 | ||
384 | #define ADDRESS_MSK 0x0000FFFF | 384 | #define ADDRESS_MSK 0x0000FFFF |
diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h index dd896f28c931..55b8370bc6d4 100644 --- a/drivers/net/wireless/iwlwifi/iwl-fh.h +++ b/drivers/net/wireless/iwlwifi/iwl-fh.h | |||
@@ -444,7 +444,7 @@ struct iwl_rb_status { | |||
444 | __le16 finished_rb_num; | 444 | __le16 finished_rb_num; |
445 | __le16 finished_fr_nam; | 445 | __le16 finished_fr_nam; |
446 | __le32 __unused; /* 3945 only */ | 446 | __le32 __unused; /* 3945 only */ |
447 | } __attribute__ ((packed)); | 447 | } __packed; |
448 | 448 | ||
449 | 449 | ||
450 | #define TFD_QUEUE_SIZE_MAX (256) | 450 | #define TFD_QUEUE_SIZE_MAX (256) |
@@ -470,7 +470,7 @@ static inline u8 iwl_get_dma_hi_addr(dma_addr_t addr) | |||
470 | struct iwl_tfd_tb { | 470 | struct iwl_tfd_tb { |
471 | __le32 lo; | 471 | __le32 lo; |
472 | __le16 hi_n_len; | 472 | __le16 hi_n_len; |
473 | } __attribute__((packed)); | 473 | } __packed; |
474 | 474 | ||
475 | /** | 475 | /** |
476 | * struct iwl_tfd | 476 | * struct iwl_tfd |
@@ -505,7 +505,7 @@ struct iwl_tfd { | |||
505 | u8 num_tbs; | 505 | u8 num_tbs; |
506 | struct iwl_tfd_tb tbs[IWL_NUM_OF_TBS]; | 506 | struct iwl_tfd_tb tbs[IWL_NUM_OF_TBS]; |
507 | __le32 __pad; | 507 | __le32 __pad; |
508 | } __attribute__ ((packed)); | 508 | } __packed; |
509 | 509 | ||
510 | /* Keep Warm Size */ | 510 | /* Keep Warm Size */ |
511 | #define IWL_KW_SIZE 0x1000 /* 4k */ | 511 | #define IWL_KW_SIZE 0x1000 /* 4k */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-spectrum.h b/drivers/net/wireless/iwlwifi/iwl-spectrum.h index af6babee2891..c4ca0b5d77da 100644 --- a/drivers/net/wireless/iwlwifi/iwl-spectrum.h +++ b/drivers/net/wireless/iwlwifi/iwl-spectrum.h | |||
@@ -42,7 +42,7 @@ struct ieee80211_basic_report { | |||
42 | __le64 start_time; | 42 | __le64 start_time; |
43 | __le16 duration; | 43 | __le16 duration; |
44 | u8 map; | 44 | u8 map; |
45 | } __attribute__ ((packed)); | 45 | } __packed; |
46 | 46 | ||
47 | enum { /* ieee80211_measurement_request.mode */ | 47 | enum { /* ieee80211_measurement_request.mode */ |
48 | /* Bit 0 is reserved */ | 48 | /* Bit 0 is reserved */ |
@@ -63,13 +63,13 @@ struct ieee80211_measurement_params { | |||
63 | u8 channel; | 63 | u8 channel; |
64 | __le64 start_time; | 64 | __le64 start_time; |
65 | __le16 duration; | 65 | __le16 duration; |
66 | } __attribute__ ((packed)); | 66 | } __packed; |
67 | 67 | ||
68 | struct ieee80211_info_element { | 68 | struct ieee80211_info_element { |
69 | u8 id; | 69 | u8 id; |
70 | u8 len; | 70 | u8 len; |
71 | u8 data[0]; | 71 | u8 data[0]; |
72 | } __attribute__ ((packed)); | 72 | } __packed; |
73 | 73 | ||
74 | struct ieee80211_measurement_request { | 74 | struct ieee80211_measurement_request { |
75 | struct ieee80211_info_element ie; | 75 | struct ieee80211_info_element ie; |
@@ -77,7 +77,7 @@ struct ieee80211_measurement_request { | |||
77 | u8 mode; | 77 | u8 mode; |
78 | u8 type; | 78 | u8 type; |
79 | struct ieee80211_measurement_params params[0]; | 79 | struct ieee80211_measurement_params params[0]; |
80 | } __attribute__ ((packed)); | 80 | } __packed; |
81 | 81 | ||
82 | struct ieee80211_measurement_report { | 82 | struct ieee80211_measurement_report { |
83 | struct ieee80211_info_element ie; | 83 | struct ieee80211_info_element ie; |
@@ -87,6 +87,6 @@ struct ieee80211_measurement_report { | |||
87 | union { | 87 | union { |
88 | struct ieee80211_basic_report basic[0]; | 88 | struct ieee80211_basic_report basic[0]; |
89 | } u; | 89 | } u; |
90 | } __attribute__ ((packed)); | 90 | } __packed; |
91 | 91 | ||
92 | #endif | 92 | #endif |