aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-commands.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-commands.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h180
1 files changed, 157 insertions, 23 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index ee2563777e8d..5769ca5cebca 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -188,6 +188,13 @@ enum {
188 REPLY_WIPAN_NOA_NOTIFICATION = 0xbc, 188 REPLY_WIPAN_NOA_NOTIFICATION = 0xbc,
189 REPLY_WIPAN_DEACTIVATION_COMPLETE = 0xbd, 189 REPLY_WIPAN_DEACTIVATION_COMPLETE = 0xbd,
190 190
191 REPLY_WOWLAN_PATTERNS = 0xe0,
192 REPLY_WOWLAN_WAKEUP_FILTER = 0xe1,
193 REPLY_WOWLAN_TSC_RSC_PARAMS = 0xe2,
194 REPLY_WOWLAN_TKIP_PARAMS = 0xe3,
195 REPLY_WOWLAN_KEK_KCK_MATERIAL = 0xe4,
196 REPLY_WOWLAN_GET_STATUS = 0xe5,
197
191 REPLY_MAX = 0xff 198 REPLY_MAX = 0xff
192}; 199};
193 200
@@ -832,6 +839,8 @@ struct iwl_qosparam_cmd {
832#define STA_KEY_MULTICAST_MSK cpu_to_le16(0x4000) 839#define STA_KEY_MULTICAST_MSK cpu_to_le16(0x4000)
833#define STA_KEY_MAX_NUM 8 840#define STA_KEY_MAX_NUM 8
834#define STA_KEY_MAX_NUM_PAN 16 841#define STA_KEY_MAX_NUM_PAN 16
842/* must not match WEP_INVALID_OFFSET */
843#define IWLAGN_HW_KEY_DEFAULT 0xfe
835 844
836/* Flags indicate whether to modify vs. don't change various station params */ 845/* Flags indicate whether to modify vs. don't change various station params */
837#define STA_MODIFY_KEY_MASK 0x01 846#define STA_MODIFY_KEY_MASK 0x01
@@ -3155,7 +3164,6 @@ struct iwl_enhance_sensitivity_cmd {
3155/* The default calibrate table size if not specified by firmware */ 3164/* The default calibrate table size if not specified by firmware */
3156#define IWL_DEFAULT_STANDARD_PHY_CALIBRATE_TBL_SIZE 18 3165#define IWL_DEFAULT_STANDARD_PHY_CALIBRATE_TBL_SIZE 18
3157enum { 3166enum {
3158 IWL_PHY_CALIBRATE_DIFF_GAIN_CMD = 7,
3159 IWL_PHY_CALIBRATE_DC_CMD = 8, 3167 IWL_PHY_CALIBRATE_DC_CMD = 8,
3160 IWL_PHY_CALIBRATE_LO_CMD = 9, 3168 IWL_PHY_CALIBRATE_LO_CMD = 9,
3161 IWL_PHY_CALIBRATE_TX_IQ_CMD = 11, 3169 IWL_PHY_CALIBRATE_TX_IQ_CMD = 11,
@@ -3168,22 +3176,36 @@ enum {
3168 3176
3169#define IWL_MAX_PHY_CALIBRATE_TBL_SIZE (253) 3177#define IWL_MAX_PHY_CALIBRATE_TBL_SIZE (253)
3170 3178
3171#define IWL_CALIB_INIT_CFG_ALL cpu_to_le32(0xffffffff)
3172
3173/* This enum defines the bitmap of various calibrations to enable in both 3179/* This enum defines the bitmap of various calibrations to enable in both
3174 * init ucode and runtime ucode through CALIBRATION_CFG_CMD. 3180 * init ucode and runtime ucode through CALIBRATION_CFG_CMD.
3175 */ 3181 */
3176enum iwl_ucode_calib_cfg { 3182enum iwl_ucode_calib_cfg {
3177 IWL_CALIB_CFG_RX_BB_IDX, 3183 IWL_CALIB_CFG_RX_BB_IDX = BIT(0),
3178 IWL_CALIB_CFG_DC_IDX, 3184 IWL_CALIB_CFG_DC_IDX = BIT(1),
3179 IWL_CALIB_CFG_TX_IQ_IDX, 3185 IWL_CALIB_CFG_LO_IDX = BIT(2),
3180 IWL_CALIB_CFG_RX_IQ_IDX, 3186 IWL_CALIB_CFG_TX_IQ_IDX = BIT(3),
3181 IWL_CALIB_CFG_NOISE_IDX, 3187 IWL_CALIB_CFG_RX_IQ_IDX = BIT(4),
3182 IWL_CALIB_CFG_CRYSTAL_IDX, 3188 IWL_CALIB_CFG_NOISE_IDX = BIT(5),
3183 IWL_CALIB_CFG_TEMPERATURE_IDX, 3189 IWL_CALIB_CFG_CRYSTAL_IDX = BIT(6),
3184 IWL_CALIB_CFG_PAPD_IDX, 3190 IWL_CALIB_CFG_TEMPERATURE_IDX = BIT(7),
3191 IWL_CALIB_CFG_PAPD_IDX = BIT(8),
3192 IWL_CALIB_CFG_SENSITIVITY_IDX = BIT(9),
3193 IWL_CALIB_CFG_TX_PWR_IDX = BIT(10),
3185}; 3194};
3186 3195
3196#define IWL_CALIB_INIT_CFG_ALL cpu_to_le32(IWL_CALIB_CFG_RX_BB_IDX | \
3197 IWL_CALIB_CFG_DC_IDX | \
3198 IWL_CALIB_CFG_LO_IDX | \
3199 IWL_CALIB_CFG_TX_IQ_IDX | \
3200 IWL_CALIB_CFG_RX_IQ_IDX | \
3201 IWL_CALIB_CFG_NOISE_IDX | \
3202 IWL_CALIB_CFG_CRYSTAL_IDX | \
3203 IWL_CALIB_CFG_TEMPERATURE_IDX | \
3204 IWL_CALIB_CFG_PAPD_IDX | \
3205 IWL_CALIB_CFG_SENSITIVITY_IDX | \
3206 IWL_CALIB_CFG_TX_PWR_IDX)
3207
3208#define IWL_CALIB_CFG_FLAG_SEND_COMPLETE_NTFY_MSK cpu_to_le32(BIT(0))
3187 3209
3188struct iwl_calib_cfg_elmnt_s { 3210struct iwl_calib_cfg_elmnt_s {
3189 __le32 is_enable; 3211 __le32 is_enable;
@@ -3217,15 +3239,6 @@ struct iwl_calib_cmd {
3217 u8 data[0]; 3239 u8 data[0];
3218} __packed; 3240} __packed;
3219 3241
3220/* IWL_PHY_CALIBRATE_DIFF_GAIN_CMD (7) */
3221struct iwl_calib_diff_gain_cmd {
3222 struct iwl_calib_hdr hdr;
3223 s8 diff_gain_a; /* see above */
3224 s8 diff_gain_b;
3225 s8 diff_gain_c;
3226 u8 reserved1;
3227} __packed;
3228
3229struct iwl_calib_xtal_freq_cmd { 3242struct iwl_calib_xtal_freq_cmd {
3230 struct iwl_calib_hdr hdr; 3243 struct iwl_calib_hdr hdr;
3231 u8 cap_pin1; 3244 u8 cap_pin1;
@@ -3233,11 +3246,11 @@ struct iwl_calib_xtal_freq_cmd {
3233 u8 pad[2]; 3246 u8 pad[2];
3234} __packed; 3247} __packed;
3235 3248
3236#define DEFAULT_RADIO_SENSOR_OFFSET 2700 3249#define DEFAULT_RADIO_SENSOR_OFFSET cpu_to_le16(2700)
3237struct iwl_calib_temperature_offset_cmd { 3250struct iwl_calib_temperature_offset_cmd {
3238 struct iwl_calib_hdr hdr; 3251 struct iwl_calib_hdr hdr;
3239 s16 radio_sensor_offset; 3252 __le16 radio_sensor_offset;
3240 s16 reserved; 3253 __le16 reserved;
3241} __packed; 3254} __packed;
3242 3255
3243/* IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */ 3256/* IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */
@@ -3758,6 +3771,127 @@ struct iwl_bt_coex_prot_env_cmd {
3758 u8 reserved[2]; 3771 u8 reserved[2];
3759} __attribute__((packed)); 3772} __attribute__((packed));
3760 3773
3774/*
3775 * REPLY_WOWLAN_PATTERNS
3776 */
3777#define IWLAGN_WOWLAN_MIN_PATTERN_LEN 16
3778#define IWLAGN_WOWLAN_MAX_PATTERN_LEN 128
3779
3780struct iwlagn_wowlan_pattern {
3781 u8 mask[IWLAGN_WOWLAN_MAX_PATTERN_LEN / 8];
3782 u8 pattern[IWLAGN_WOWLAN_MAX_PATTERN_LEN];
3783 u8 mask_size;
3784 u8 pattern_size;
3785 __le16 reserved;
3786} __packed;
3787
3788#define IWLAGN_WOWLAN_MAX_PATTERNS 20
3789
3790struct iwlagn_wowlan_patterns_cmd {
3791 __le32 n_patterns;
3792 struct iwlagn_wowlan_pattern patterns[];
3793} __packed;
3794
3795/*
3796 * REPLY_WOWLAN_WAKEUP_FILTER
3797 */
3798enum iwlagn_wowlan_wakeup_filters {
3799 IWLAGN_WOWLAN_WAKEUP_MAGIC_PACKET = BIT(0),
3800 IWLAGN_WOWLAN_WAKEUP_PATTERN_MATCH = BIT(1),
3801 IWLAGN_WOWLAN_WAKEUP_BEACON_MISS = BIT(2),
3802 IWLAGN_WOWLAN_WAKEUP_LINK_CHANGE = BIT(3),
3803 IWLAGN_WOWLAN_WAKEUP_GTK_REKEY_FAIL = BIT(4),
3804 IWLAGN_WOWLAN_WAKEUP_RFKILL = BIT(5),
3805 IWLAGN_WOWLAN_WAKEUP_UCODE_ERROR = BIT(6),
3806 IWLAGN_WOWLAN_WAKEUP_EAP_IDENT_REQ = BIT(7),
3807 IWLAGN_WOWLAN_WAKEUP_4WAY_HANDSHAKE = BIT(8),
3808 IWLAGN_WOWLAN_WAKEUP_ALWAYS = BIT(9),
3809 IWLAGN_WOWLAN_WAKEUP_ENABLE_NET_DETECT = BIT(10),
3810};
3811
3812struct iwlagn_wowlan_wakeup_filter_cmd {
3813 __le32 enabled;
3814 __le16 non_qos_seq;
3815 u8 min_sleep_seconds;
3816 u8 reserved;
3817 __le16 qos_seq[8];
3818};
3819
3820/*
3821 * REPLY_WOWLAN_TSC_RSC_PARAMS
3822 */
3823#define IWLAGN_NUM_RSC 16
3824
3825struct tkip_sc {
3826 __le16 iv16;
3827 __le16 pad;
3828 __le32 iv32;
3829} __packed;
3830
3831struct iwlagn_tkip_rsc_tsc {
3832 struct tkip_sc unicast_rsc[IWLAGN_NUM_RSC];
3833 struct tkip_sc multicast_rsc[IWLAGN_NUM_RSC];
3834 struct tkip_sc tsc;
3835} __packed;
3836
3837struct aes_sc {
3838 __le64 pn;
3839} __packed;
3840
3841struct iwlagn_aes_rsc_tsc {
3842 struct aes_sc unicast_rsc[IWLAGN_NUM_RSC];
3843 struct aes_sc multicast_rsc[IWLAGN_NUM_RSC];
3844 struct aes_sc tsc;
3845} __packed;
3846
3847union iwlagn_all_tsc_rsc {
3848 struct iwlagn_tkip_rsc_tsc tkip;
3849 struct iwlagn_aes_rsc_tsc aes;
3850};
3851
3852struct iwlagn_wowlan_rsc_tsc_params_cmd {
3853 union iwlagn_all_tsc_rsc all_tsc_rsc;
3854} __packed;
3855
3856/*
3857 * REPLY_WOWLAN_TKIP_PARAMS
3858 */
3859#define IWLAGN_MIC_KEY_SIZE 8
3860#define IWLAGN_P1K_SIZE 5
3861struct iwlagn_mic_keys {
3862 u8 tx[IWLAGN_MIC_KEY_SIZE];
3863 u8 rx_unicast[IWLAGN_MIC_KEY_SIZE];
3864 u8 rx_mcast[IWLAGN_MIC_KEY_SIZE];
3865} __packed;
3866
3867struct iwlagn_p1k_cache {
3868 __le16 p1k[IWLAGN_P1K_SIZE];
3869} __packed;
3870
3871#define IWLAGN_NUM_RX_P1K_CACHE 2
3872
3873struct iwlagn_wowlan_tkip_params_cmd {
3874 struct iwlagn_mic_keys mic_keys;
3875 struct iwlagn_p1k_cache tx;
3876 struct iwlagn_p1k_cache rx_uni[IWLAGN_NUM_RX_P1K_CACHE];
3877 struct iwlagn_p1k_cache rx_multi[IWLAGN_NUM_RX_P1K_CACHE];
3878} __packed;
3879
3880/*
3881 * REPLY_WOWLAN_KEK_KCK_MATERIAL
3882 */
3883
3884#define IWLAGN_KCK_MAX_SIZE 32
3885#define IWLAGN_KEK_MAX_SIZE 32
3886
3887struct iwlagn_wowlan_kek_kck_material_cmd {
3888 u8 kck[IWLAGN_KCK_MAX_SIZE];
3889 u8 kek[IWLAGN_KEK_MAX_SIZE];
3890 __le16 kck_len;
3891 __le16 kek_len;
3892 __le64 replay_ctr;
3893} __packed;
3894
3761/****************************************************************************** 3895/******************************************************************************
3762 * (13) 3896 * (13)
3763 * Union of all expected notifications/responses: 3897 * Union of all expected notifications/responses: