diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-commands.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-commands.h | 180 |
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 |
3157 | enum { | 3166 | enum { |
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 | */ |
3176 | enum iwl_ucode_calib_cfg { | 3182 | enum 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 | ||
3188 | struct iwl_calib_cfg_elmnt_s { | 3210 | struct 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) */ | ||
3221 | struct 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 | |||
3229 | struct iwl_calib_xtal_freq_cmd { | 3242 | struct 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) |
3237 | struct iwl_calib_temperature_offset_cmd { | 3250 | struct 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 | |||
3780 | struct 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 | |||
3790 | struct iwlagn_wowlan_patterns_cmd { | ||
3791 | __le32 n_patterns; | ||
3792 | struct iwlagn_wowlan_pattern patterns[]; | ||
3793 | } __packed; | ||
3794 | |||
3795 | /* | ||
3796 | * REPLY_WOWLAN_WAKEUP_FILTER | ||
3797 | */ | ||
3798 | enum 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 | |||
3812 | struct 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 | |||
3825 | struct tkip_sc { | ||
3826 | __le16 iv16; | ||
3827 | __le16 pad; | ||
3828 | __le32 iv32; | ||
3829 | } __packed; | ||
3830 | |||
3831 | struct 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 | |||
3837 | struct aes_sc { | ||
3838 | __le64 pn; | ||
3839 | } __packed; | ||
3840 | |||
3841 | struct 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 | |||
3847 | union iwlagn_all_tsc_rsc { | ||
3848 | struct iwlagn_tkip_rsc_tsc tkip; | ||
3849 | struct iwlagn_aes_rsc_tsc aes; | ||
3850 | }; | ||
3851 | |||
3852 | struct 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 | ||
3861 | struct 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 | |||
3867 | struct iwlagn_p1k_cache { | ||
3868 | __le16 p1k[IWLAGN_P1K_SIZE]; | ||
3869 | } __packed; | ||
3870 | |||
3871 | #define IWLAGN_NUM_RX_P1K_CACHE 2 | ||
3872 | |||
3873 | struct 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 | |||
3887 | struct 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: |