00001
00014 #ifndef _ME_MGMTFRAME_H_
00015 #define _ME_MGMTFRAME_H_
00016
00026
00027 #include "co_int.h"
00028 #include "co_bool.h"
00029 #include "co_utils.h"
00030 #include "bam.h"
00031 #include "vif_mgmt.h"
00032
00033
00034 struct mac_frame;
00035 struct mac_addr;
00036 struct mac_rateset;
00037 struct mac_htcapability;
00038 struct mac_htoprnelmt;
00039 struct me_bss_info;
00040 struct sm_connect_req;
00041 struct mac_chan_op;
00042
00058 uint32_t me_add_ie_ssid(uint32_t *frame_addr, uint8_t ssid_len, uint8_t *ssid);
00059
00075 uint32_t me_add_ie_supp_rates(uint32_t *frame_addr, struct mac_rateset *rateset);
00076
00092 uint32_t me_add_ie_ext_supp_rates(uint32_t *frame_addr, struct mac_rateset *rateset);
00093
00094 #if (RW_MESH_EN)
00095
00112 uint32_t me_add_ie_tim(uint32_t *frame_addr, uint8_t dtim_period);
00113
00128 uint32_t me_add_ie_dsss_param(uint32_t *frame_addr, uint8_t chan);
00129 #endif //(RW_MESH_EN)
00130
00141 uint32_t me_add_ie_ht_capa(uint32_t *frame_addr);
00142
00143 #if (RW_MESH_EN)
00144
00156 uint32_t me_add_ie_ht_oper(uint32_t *frame_addr, struct vif_info_tag *vif);
00157 #endif //(RW_MESH_EN)
00158
00159 #if (NX_VHT)
00160
00170 uint32_t me_add_ie_vht_capa(uint32_t *frame_addr);
00171
00172 #if (RW_MESH_EN)
00173
00185 uint32_t me_add_ie_vht_oper(uint32_t *frame_addr, struct vif_info_tag *vif);
00186 #endif //(RW_MESH_EN)
00187
00200 uint32_t me_add_ie_op_mode(uint32_t *frame_addr, uint8_t nss, uint8_t bw);
00201 #endif //(NX_VHT)
00202
00203 #if NX_HE
00204
00214 uint32_t me_add_ie_he_capa(uint32_t *frame_addr);
00215 #endif
00216
00232 uint16_t me_build_authenticate(uint32_t frame,
00233 uint16_t algo_type,
00234 uint16_t seq_nbr,
00235 uint16_t status_code,
00236 uint32_t *challenge_array_ptr);
00237
00249 uint16_t me_build_deauthenticate(uint32_t frame, uint16_t reason_code);
00250
00251
00267 uint16_t me_build_associate_req(uint32_t frame,
00268 struct me_bss_info *bss,
00269 struct mac_addr *old_ap_addr_ptr,
00270 uint8_t vif_idx,
00271 uint32_t *ie_addr,
00272 uint16_t *ie_len,
00273 struct sm_connect_req const *con_par);
00274
00284 void me_extract_rate_set(uint32_t buffer,
00285 uint16_t buflen,
00286 struct mac_rateset* mac_rate_set_ptr);
00287
00298 uint16_t me_build_add_ba_req(uint32_t frame, struct bam_env_tag *bam_env);
00299
00313 uint16_t me_build_add_ba_rsp(uint32_t frame, struct bam_env_tag *bam_env,
00314 uint16_t param,
00315 uint8_t dialog_token,
00316 uint16_t status_code);
00317
00329 uint16_t me_build_del_ba(uint32_t frame, struct bam_env_tag *bam_env, uint16_t reason_code);
00330
00331
00343 void me_extract_power_constraint(uint32_t buffer, uint16_t buflen,
00344 struct me_bss_info *bss);
00345
00361 void me_extract_country_reg(uint32_t buffer, uint16_t buflen,
00362 struct me_bss_info *bss);
00363
00364
00375 void me_extract_mobility_domain(uint32_t buffer, uint16_t buflen,
00376 struct me_bss_info *bss);
00377
00395 int me_extract_csa(uint32_t buffer, uint16_t buflen, uint8_t *mode,
00396 struct mac_chan_op *chan_desc);
00397
00412 bool me_extract_edca_params(uint32_t buffer, uint16_t buflen,
00413 struct mac_edca_param_set *edca_param,
00414 bool *changed);
00415
00427 bool me_extract_ht_capa(uint32_t buffer, uint16_t buflen,
00428 struct mac_htcapability *ht_cap);
00429
00441 bool me_extract_vht_capa(uint32_t buffer, uint16_t buflen,
00442 struct mac_vhtcapability *vht_cap);
00443
00444 #if NX_HE
00445
00456 bool me_extract_he_capa(uint32_t buffer, uint16_t buflen,
00457 struct mac_hecapability *he_cap);
00458
00473 bool me_extract_he_oper(uint32_t buffer, uint16_t buflen,
00474 struct me_bss_info *bss);
00475
00489 bool me_extract_mu_edca_params(uint32_t buffer, uint16_t buflen,
00490 struct mac_mu_edca_param_set *mu_edca_param,
00491 bool *changed);
00492
00504 bool me_extract_uora_params(uint32_t buffer, uint16_t buflen,
00505 struct mm_set_uora_req *uora_param);
00506 #endif // NX_HE
00507
00509
00510 #endif // _ME_MGMTFRAME_H_