00001
00013 #ifndef _ME_TASK_H_
00014 #define _ME_TASK_H_
00015
00016 #include "co_int.h"
00017
00018 #include "ke_task.h"
00019
00020 #include "mac.h"
00021 #include "scan.h"
00022
00023 #include "rc.h"
00024
00031
00032 #define ME_IDX_MAX 1
00033
00035 enum
00036 {
00038 ME_IDLE,
00040 ME_BUSY,
00042 ME_STATE_MAX
00043 };
00044
00046 enum
00047 {
00049 ME_CONFIG_REQ = KE_FIRST_MSG(TASK_ME),
00051 ME_CONFIG_CFM,
00053 ME_CHAN_CONFIG_REQ,
00055 ME_CHAN_CONFIG_CFM,
00057 ME_SET_CONTROL_PORT_REQ,
00059 ME_SET_CONTROL_PORT_CFM,
00061 ME_TKIP_MIC_FAILURE_IND,
00063 ME_STA_ADD_REQ,
00065 ME_STA_ADD_CFM,
00067 ME_STA_DEL_REQ,
00069 ME_STA_DEL_CFM,
00071 ME_TX_CREDITS_UPDATE_IND,
00073 ME_TRAFFIC_IND_REQ,
00075 ME_TRAFFIC_IND_CFM,
00077 ME_RC_STATS_REQ,
00079 ME_RC_STATS_CFM,
00081 ME_RC_SET_RATE_REQ,
00083 ME_CONFIG_MONITOR_REQ,
00085 ME_CONFIG_MONITOR_CFM,
00087 ME_SET_PS_MODE_REQ,
00089 ME_SET_PS_MODE_CFM,
00090
00091
00092
00093
00095 ME_SET_ACTIVE_REQ,
00097 ME_SET_ACTIVE_CFM,
00099 ME_SET_PS_DISABLE_REQ,
00101 ME_SET_PS_DISABLE_CFM,
00102 };
00103
00105 struct me_config_req
00106 {
00108 struct mac_htcapability ht_cap;
00110 struct mac_vhtcapability vht_cap;
00112 struct mac_hecapability he_cap;
00114 uint16_t tx_lft;
00116 uint8_t phy_bw_max;
00118 bool ht_supp;
00120 bool vht_supp;
00122 bool he_supp;
00124 bool he_ul_on;
00126 bool ps_on;
00128 bool ant_div_on;
00130 bool dpsm;
00131 };
00132
00134 struct me_chan_config_req
00135 {
00137 struct mac_chan_def chan2G4[MAC_DOMAINCHANNEL_24G_MAX];
00139 struct mac_chan_def chan5G[MAC_DOMAINCHANNEL_5G_MAX];
00141 uint8_t chan2G4_cnt;
00143 uint8_t chan5G_cnt;
00144 };
00145
00147 struct me_set_control_port_req
00148 {
00150 uint8_t sta_idx;
00152 bool control_port_open;
00153 };
00154
00156 struct me_tkip_mic_failure_ind
00157 {
00159 struct mac_addr addr;
00161 uint64_t tsc;
00163 bool ga;
00165 uint8_t keyid;
00167 uint8_t vif_idx;
00168 };
00169
00171 struct me_sta_add_req
00172 {
00174 struct mac_addr mac_addr;
00176 struct mac_rateset rate_set;
00178 struct mac_htcapability ht_cap;
00180 struct mac_vhtcapability vht_cap;
00182 struct mac_hecapability he_cap;
00184 uint32_t flags;
00186 uint16_t aid;
00188 uint8_t uapsd_queues;
00190 uint8_t max_sp_len;
00193 uint8_t opmode;
00195 uint8_t vif_idx;
00197 bool tdls_sta;
00199 bool tdls_initiator;
00201 bool tdls_chsw_allowed;
00202 };
00203
00205 struct me_sta_add_cfm
00206 {
00208 uint8_t sta_idx;
00210 uint8_t status;
00212 uint8_t pm_state;
00213 };
00214
00216 struct me_sta_del_req
00217 {
00219 uint8_t sta_idx;
00221 bool tdls_sta;
00222 };
00223
00225 struct me_tx_credits_update_ind
00226 {
00228 uint8_t sta_idx;
00230 uint8_t tid;
00232 int8_t credits;
00233 };
00234
00236 struct me_set_active_req
00237 {
00239 bool active;
00241 uint8_t vif_idx;
00242 };
00243
00245 struct me_set_ps_disable_req
00246 {
00248 bool ps_disable;
00250 uint8_t vif_idx;
00251 };
00252
00254 struct me_traffic_ind_req
00255 {
00257 uint8_t sta_idx;
00259 uint8_t tx_avail;
00261 bool uapsd;
00262 };
00263
00265 struct me_rc_stats_req
00266 {
00268 uint8_t sta_idx;
00269 };
00270
00272 struct me_rc_stats_cfm
00273 {
00275 uint8_t sta_idx;
00277 uint16_t no_samples;
00279 uint16_t ampdu_len;
00281 uint16_t ampdu_packets;
00283 uint32_t avg_ampdu_len;
00285 uint8_t sw_retry_step;
00287 uint8_t sample_wait;
00289 uint16_t retry_step_idx[RATE_CONTROL_STEPS];
00291 struct rc_rate_stats rate_stats[RC_MAX_N_SAMPLE + 1];
00293 uint32_t tp[RC_MAX_N_SAMPLE + 1];
00294 };
00295
00297 struct me_rc_set_rate_req
00298 {
00300 uint8_t sta_idx;
00302 uint16_t fixed_rate_cfg;
00303 };
00304
00306 struct me_config_monitor_req
00307 {
00309 struct mac_chan_op chan;
00311 bool chan_set;
00313 bool uf;
00314 };
00315
00317 struct me_config_monitor_cfm
00318 {
00320 uint8_t chan_index;
00322 struct mac_chan_op chan;
00323 };
00324
00325 #if NX_POWERSAVE
00327 struct me_set_ps_mode_req
00328 {
00330 uint8_t ps_state;
00331 };
00332 #endif
00333
00334 extern const struct ke_state_handler me_default_handler;
00335
00336 extern ke_state_t me_state[ME_IDX_MAX];
00337
00339
00340 #endif // _ME_TASK_H_
00341
00342