1 /* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 文 件 名 : hmac_11k.h 15 * 生成日期 : 2017年3月15日 16 * 功能描述 : 11K 17 */ 18 19 #ifndef __HMAC_11K_H__ 20 #define __HMAC_11K_H__ 21 22 /***************************************************************************** 23 1 头文件包含 24 *****************************************************************************/ 25 #include "oal_ext_if.h" 26 #include "mac_vap_ext.h" 27 #include "hmac_user.h" 28 #include "hmac_vap.h" 29 #include "oal_schedule.h" 30 31 #ifdef __cplusplus 32 #if __cplusplus 33 extern "C" { 34 #endif 35 #endif 36 37 #undef THIS_FILE_ID 38 #define THIS_FILE_ID OAM_FILE_ID_HMAC_11K_H 39 40 /***************************************************************************** 41 2 宏定义 42 *****************************************************************************/ 43 #define WAL_WIFI_FEATURE_SUPPORT_11K 0 44 #define MAC_RRM_BCN_REPORTING_DETAIL_LEN 1 45 #define MAC_RRM_BCN_EID_REPORTING_DATAIL 2 46 #define MAC_RRM_BCN_REQ_PASSIVE_SCAN_TIME 120 47 #define MAC_RRM_BCN_RPT_DETAIL_TRU 4 48 #define MAC_RRM_BCN_RPT_DETAIL_TRU_DFS 13 49 #define MAC_RRM_VAP_MEAS_STAUTS_TIME (10 * 1000) 50 #define MAC_BCN_MEASURE_INTERVAL 100 51 #define MAC_11K_SUPPORT_AP_CHAN_RPT_NUM 8 52 #define MAC_MEASUREMENT_RPT_FIX_LEN 5 53 #define MAC_BEACON_RPT_FIX_LEN 26 54 #define MAC_MAX_RPT_DETAIL_LEN 224 /* 255 - 26(bcn fix) - 3(Meas rpt fix) - 2(subid 1) */ 55 56 /* 255 - 26(bcn fix) - 5(Meas rpt fix + hdr) - 2(subid 1) -7(subid 2&164) */ 57 #define MAC_MAX_RPT_MBO_DETAIL_LEN 215 58 59 #define MAC_ACTION_RPT_FIX_LEN 3 60 #define MAC_RADIO_MEAS_ACTION_REQ_FIX_LEN 5 61 #define MAC_NEIGHBOR_REPORT_ACTION_REQ_FIX_LEN 3 62 #define MAC_NEIGHBOR_RPT_FIX_LEN 15 63 64 /***************************************************************************** 65 3 枚举定义 66 *****************************************************************************/ 67 typedef enum { 68 RM_RADIO_MEASUREMENT_BASIC = 0, 69 RM_RADIO_MEAS_CHANNEL_LOAD = 3, 70 RM_RADIO_MEAS_BCN = 5, 71 RM_RADIO_MEAS_FRM = 6, 72 RM_RADIO_MEAS_STA_STATS = 7, 73 RM_RADIO_MEASUREMENT_LCI = 8, 74 RM_RADIO_MEAS_TSC = 9, 75 RM_RADIO_MEASUREMENT_LOCATION_CIVIC = 11, 76 RM_RADIO_MEASUREMENT_FTM_RANGE = 16, 77 RM_RADIO_MEAS_PAUSE = 255 78 } mac_radio_meas_type_enum; 79 typedef osal_u8 mac_radio_meas_type_enum_uint8; 80 81 typedef enum { 82 PHY_TYPE_FHSS = 1, 83 PHY_TYPE_DSSS = 2, 84 PHY_TYPE_IR_BASEBAND = 3, 85 PHY_TYPE_OFDM = 4, 86 PHY_TYPE_HRDSSS = 5, 87 PHY_TYPE_BUTT 88 } phy_type_enum; 89 typedef osal_u8 phy_type_enum_uint8; 90 91 typedef enum { 92 RM_BCN_REQ_MEAS_MODE_PASSIVE = 0, 93 RM_BCN_REQ_MEAS_MODE_ACTIVE = 1, 94 RM_BCN_REQ_MEAS_MODE_TABLE = 2, 95 RM_BCN_REQ_MEAS_MODE_BUTT 96 } rm_bcn_req_meas_mode_enum; 97 typedef osal_u8 rm_bcn_req_meas_mode_enum_uint8; 98 99 /* Beacon Request */ 100 /* Reporting Detail Values */ 101 typedef enum { 102 MAC_BCN_REPORTING_DETAIL_NO_FIXED_FIELD_OR_ELEM = 0, 103 MAC_BCN_REPORTING_DETAIL_FIXED_FILELD_AND_ANY_ELEM = 1, 104 MAC_BCN_REPORTING_DETAIL_FIXED_FIELD_AND_ELEM = 2, 105 MAC_BCN_REPORTING_DETAIL_BUTT 106 } mac_rrm_bcn_reporting_detail; 107 typedef osal_u8 mac_rrm_bcn_reporting_detail_uint8; 108 109 typedef enum { 110 MAC_BCN_RPT_FRAG_NO_LAST_INDICATION = 0, 111 MAC_BCN_RPT_FRAG_WITH_LAST_INDICATION = 1, 112 MAC_BCN_RPT_NO_FRAG = 2 113 } mac_bcn_rpt_frag_type_enum; 114 115 typedef enum { 116 HMAC_RRM_RPT_NOTIFY_HILINK = 0, 117 HMAC_RRM_RPT_NOTIFY_11V = 1, 118 HMAC_RRM_RPT_NOTIFY_CHN_LOAD = 2, 119 120 HMAC_RRM_RPT_NOTIFY_BUTT 121 } mac_rrm_rpt_notify_enum; 122 typedef osal_u8 mac_rrm_rpt_notify_enum_uint8; 123 124 typedef enum { 125 MAC_RRM_STATE_INIT = 0, /* 初始状态 */ 126 MAC_RRM_STATE_WAIT_RSP = 1, /* 等待RSP */ 127 MAC_RRM_STATE_GET_RSP = 2, /* 收到RSP */ 128 MAC_RRM_STATE_RSP_TIMEOUT = 3, /* RSP超时 */ 129 MAC_RRM_STATE_BUTT 130 } mac_rrm_state_enum; 131 typedef osal_u8 mac_rrm_state_enum_uint8; 132 133 typedef enum { 134 /* Radio Measurement Type */ 135 MAC_RRM_TYPE_CHANNEL_LOAD = 0, 136 MAC_RRM_TYPE_BCN = 1, 137 /* Neighbor Report Request */ 138 MAC_RRM_TYPE_NEIGHBOR_RPT = 10, 139 MAC_RRM_MEAS_TYPE_BUTT 140 } mac_rrm_type_enum; 141 typedef osal_u8 mac_rrm_type_enum_uint8; 142 143 /***************************************************************************** 144 4 全局变量声明 145 *****************************************************************************/ 146 147 148 /***************************************************************************** 149 5 消息头定义 150 *****************************************************************************/ 151 152 153 /***************************************************************************** 154 6 消息定义 155 *****************************************************************************/ 156 157 158 /***************************************************************************** 159 7 STRUCT定义 160 *****************************************************************************/ 161 #pragma pack(push, 1) 162 struct oal_rrm_enabled_cap_ie { 163 osal_u8 link_cap : 1, /* bit0: Link Measurement capability enabled */ 164 neighbor_rpt_cap : 1, /* bit1: Neighbor Report capability enabled */ 165 parallel_cap : 1, /* bit2: Parallel Measurements capability enabled */ 166 repeat_cap : 1, /* bit3: Repeated Measurements capability enabled */ 167 bcn_passive_cap : 1, /* bit4: Beacon Passive Measurements capability enabled */ 168 bcn_active_cap : 1, /* bit5: Beacon Active Measurements capability enabled */ 169 bcn_table_cap : 1, /* bit6: Beacon Table Measurements capability enabled */ 170 bcn_meas_rpt_cond_cap : 1; /* bit7: Beacon Measurement Reporting Conditions capability enabled */ 171 osal_u8 frame_cap : 1, /* bit8: Frame Measurement capability enabled */ 172 chn_load_cap : 1, /* bit9: Channel Load Measurement capability enabled */ 173 noise_histogram_cap : 1, /* bit10: Noise Histogram Measurement capability enabled */ 174 stat_cap : 1, /* bit11: Statistics Measurement capability enabled */ 175 lci_cap : 1, /* bit12: LCI Measurement capability enabled */ 176 lci_azimuth_cap : 1, /* bit13: LCI Azimuth capability enabled */ 177 tsc_cap : 1, /* bit14: Transmit Stream/Category Measurement capability enabled */ 178 triggered_tsc_cap : 1; /* bit15: Triggered Transmit Stream/Category Measurement capability enabled */ 179 osal_u8 ap_chn_rpt_cap : 1, /* bit16: AP Channel Report capability enabled */ 180 rm_mib_cap : 1, /* bit17: RM MIB capability enabled */ 181 oper_chn_max_meas_duration : 3, /* bit18-20: Operating Channel Max Measurement Duration */ 182 non_oper_chn_max_meas_duration : 3; /* bit21-23: Non-operating Channel Max Measurement Durationg */ 183 osal_u8 meas_pilot_cap : 3, /* bit24-26: Measurement Pilot capability */ 184 meas_pilot_trans_info_cap : 1, /* bit27: Measurement Pilot Transmission Information capability enabled */ 185 neighbor_rpt_tsf_offset_cap : 1, /* bit28: Neighbor Report TSF Offset capability enabled */ 186 rcpi_cap : 1, /* bit29: RCPI Measurement capability enabled */ 187 rsni_cap : 1, /* bit30: RSNI Measurement capability enabled */ 188 bss_avg_access_dly : 1; /* bit31: BSS Average Access Delay capability enabled */ 189 osal_u8 avail_admission_capacity_cap : 1, /* bit32: BSS Available Admission Capacity capability enabled */ 190 antenna_cap : 1, /* bit33: Antenna capability enabled */ 191 ftm_range_report_cap : 1, /* bit34: FTM range report capability enabled */ 192 bit_rsv : 5; /* bit35-39: Reserved */ 193 }; 194 typedef struct oal_rrm_enabled_cap_ie oal_rrm_enabled_cap_ie_stru; 195 typedef struct oal_rrm_enabled_cap_ie mac_rrm_enabled_cap_ie_stru; 196 197 typedef struct { 198 osal_u8 action_code; 199 osal_u8 dialog_token; 200 osal_u8 rsv[1]; 201 } mac_rrm_req_info_stru; 202 203 /* Radio Measurement Request */ 204 typedef struct mac_action_rm_req { 205 osal_u8 category; 206 osal_u8 action_code; 207 osal_u8 dialog_token; 208 osal_u16 num_rpt; 209 osal_u8 req_ies[1]; 210 } mac_action_rm_req_stru; 211 212 /* Neighbor Report Request */ 213 typedef struct mac_action_neighbor_req { 214 osal_u8 category; 215 osal_u8 action_code; 216 osal_u8 dialog_token; 217 osal_u8 subelm[1]; 218 }mac_action_neighbor_req_stru; 219 220 /* Neighbor Report Elements */ 221 typedef struct mac_bssid_info { 222 osal_u32 ap_reachability : 2, 223 security : 1, 224 key_scope : 1, 225 spec_management : 1, 226 qos : 1, 227 apsd : 1, 228 radio_meas : 1, 229 delayed_ba : 1, 230 immediate_ba : 1, 231 bit_rsv : 22; 232 } mac_bssid_info_stru; 233 234 typedef struct mac_neighbor_rpt_ie { 235 osal_u8 eid; /* IEEE80211_ELEMID_MEASRPT */ 236 osal_u8 len; 237 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 238 mac_bssid_info_stru bssid_info; 239 osal_u8 optclass; 240 osal_u8 channum; 241 osal_u8 phy_type; 242 osal_u8 subelm[1]; /* varialbe len sub element fileds */ 243 } mac_neighbor_rpt_ie_stru; 244 245 typedef struct mac_meas_sub_ie { 246 osal_u8 sub_eid; /* IEEE80211_ELEMID_MEASREQ */ 247 osal_u8 len; 248 osal_u8 meas_sub_data[1]; /* varialbe len measurement requet */ 249 } mac_meas_sub_ie_stru; 250 251 /* Beacon report request */ 252 typedef struct mac_bcn_req { 253 osal_u8 optclass; 254 osal_u8 channum; /* 请求测量的信道号 */ 255 osal_u16 random_ivl; 256 osal_u16 duration; 257 rm_bcn_req_meas_mode_enum_uint8 mode; 258 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 259 osal_u8 subelm[]; /* varialbe len sub element fileds */ 260 } mac_bcn_req_stru; 261 262 /* AP Channel Report */ 263 typedef struct mac_ap_chn_rpt { 264 osal_u8 eid; 265 osal_u8 length; 266 osal_u8 oper_class; 267 osal_u8 chan[1]; 268 } mac_ap_chn_rpt_stru; 269 270 typedef struct { 271 osal_u8 ssid[WLAN_SSID_MAX_LEN]; 272 osal_u8 action_dialog_token; 273 osal_u8 meas_token; 274 osal_u8 oper_class; 275 osal_u16 ssid_len; 276 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 277 osal_u16 duration; 278 osal_u8 auc_resv[2]; 279 } mac_vap_rrm_trans_req_info_stru; 280 281 /* Beacon report */ 282 typedef struct mac_bcn_rpt { 283 osal_u8 optclass; 284 osal_u8 channum; 285 osal_u32 act_meas_start_time[2]; 286 osal_u16 duration; 287 osal_u8 condensed_phy_type : 7, 288 rpt_frm_type : 1; 289 osal_u8 rcpi; 290 osal_u8 rsni; 291 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 292 osal_u8 antenna_id; 293 osal_u32 parent_tsf; 294 osal_u8 subelm[]; /* varialbe len sub element fileds */ 295 } mac_bcn_rpt_stru; 296 297 /* Channel Load request */ 298 typedef struct mac_chn_load_req { 299 osal_u8 optclass; 300 osal_u8 channum; /* 请求测量的信道号 */ 301 osal_u16 random_ivl; 302 osal_u16 duration; 303 osal_u8 chn_load; 304 osal_u8 subelm[1]; /* varialbe len sub element fileds */ 305 } mac_chn_load_req_stru; 306 307 /* Channel Load Report */ 308 typedef struct mac_chn_load_rpt { 309 osal_u8 optclass; 310 osal_u8 channum; 311 osal_u32 act_meas_start_time[2]; 312 osal_u16 duration; 313 osal_u8 channel_load; 314 } mac_chn_load_rpt_stru; 315 316 /* Measurement Report Mode */ 317 typedef struct mac_meas_rpt_mode { 318 osal_u8 late : 1, 319 incapable : 1, 320 refused : 1, 321 rsvd : 5; 322 } mac_meas_rpt_mode_stru; 323 324 /* Radio Measurement Report */ 325 typedef struct mac_action_rm_rpt { 326 osal_u8 category; 327 osal_u8 action_code; 328 osal_u8 dialog_token; 329 osal_u8 rpt_ies[1]; 330 } mac_action_rm_rpt_stru; 331 332 /* Measurement Report Elements */ 333 typedef struct mac_meas_rpt_ie { 334 osal_u8 eid; /* IEEE80211_ELEMID_MEASRPT */ 335 osal_u8 len; 336 osal_u8 token; 337 mac_meas_rpt_mode_stru rptmode; 338 osal_u8 rpttype; 339 osal_u8 meas_rpt[1]; /* varialbe len measurement report */ 340 } mac_meas_rpt_ie_stru; 341 342 /* Measurement Report Mode */ 343 typedef struct mac_mr_mode { 344 osal_u8 parallel : 1, 345 enable : 1, 346 request : 1, 347 rpt : 1, 348 duration_mandatory : 1, 349 rsvd : 3; 350 } mac_mr_mode_stru; 351 352 /* Measurement Request Elements */ 353 typedef struct mac_meas_req_ie { 354 osal_u8 eid; /* IEEE80211_ELEMID_MEASREQ */ 355 osal_u8 len; 356 osal_u8 token; 357 mac_mr_mode_stru reqmode; 358 osal_u8 reqtype; 359 osal_u8 meas_req[1]; /* varialbe len measurement requet */ 360 } mac_meas_req_ie_stru; 361 #pragma pack(pop) 362 363 typedef struct { 364 osal_u8 dialog_token; 365 osal_u8 meas_token; 366 osal_u8 meas_type; 367 osal_u8 opt_class; 368 369 osal_u8 rpt_detail : 4; 370 osal_u8 rpt_frag_type : 2; 371 osal_u8 resv : 2; 372 osal_u8 req_ie_num; 373 mac_mr_mode_stru mr_mode; 374 osal_u8 ssid_len; 375 376 osal_u16 meas_duration; 377 osal_u16 repetition; 378 379 osal_u8 *reqinfo_ieid; 380 osal_u8 *ssid; 381 382 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 383 osal_u8 rpt_condition; 384 osal_u8 rpt_ref_val; 385 } mac_bcn_req_info_stru; 386 387 typedef struct { 388 osal_u8 ssid_len; 389 osal_u8 *ssid; 390 } mac_neighbor_req_info_stru; 391 392 typedef struct mac_user_rrm_info_tag { 393 struct osal_list_head meas_rpt_list; /* 接收Report链表 */ 394 frw_timeout_stru timer; /* 发送请求定时器 */ 395 396 osal_u8 dialog_token; /* 保存Request 的Token,与report对应 */ 397 osal_u8 meas_token; /* 保存Request 的Token,与report对应 */ 398 mac_rrm_state_enum meas_status; /* 测量状态 */ 399 mac_rrm_rpt_notify_enum rpt_notify_id; /* 调用模块 */ 400 mac_rrm_type_enum reqtype; /* 测量类型 */ 401 mac_meas_rpt_mode_stru rptmode; /* RPT模式 */ 402 osal_u8 auc_resv1[2]; 403 } mac_user_rrm_info_stru; 404 405 typedef struct mac_rrm_req_tag { 406 mac_rrm_rpt_notify_enum rpt_notify_id; /* 发起模块类型 */ 407 mac_rrm_type_enum reqtype; /* 测量类型 */ 408 osal_u16 rpt_num; /* 重复测量次数 */ 409 osal_u8 req_mode; 410 void *p_arg; 411 osal_u8 auc_resv1[1]; 412 } mac_rrm_req_cfg_stru; 413 414 typedef struct { 415 /* Measurement Report field */ 416 osal_u8 eid; /* IEEE80211_ELEMID_MEASRPT */ 417 osal_u8 len; 418 osal_u8 token; 419 osal_u8 late : 1, 420 incapable : 1, 421 refused : 1, 422 rsvd : 5; 423 424 osal_u8 rpttype; 425 /* beacon report field */ 426 osal_u8 optclass; 427 osal_u8 channum; 428 osal_u8 condensed_phy_type : 7, 429 rpt_frm_type : 1; 430 431 osal_u8 rcpi; 432 osal_u8 rsni; 433 osal_u8 antenna_id; 434 osal_u8 rsv; 435 436 osal_u8 bssid[6]; 437 osal_u32 act_meas_start_time[2]; 438 osal_u16 duration; 439 440 osal_u32 parent_tsf; 441 } mac_meas_rpt_bcn_item_stru; 442 443 typedef struct { 444 struct osal_list_head dlist_head; 445 mac_meas_rpt_bcn_item_stru *meas_rpt_bcn_item; /* 包含bcn rpt的meas rpt */ 446 osal_u8 *rpt_detail_data; 447 osal_u32 rpt_detail_act_len; /* rpt detail data实际长度 */ 448 osal_u8 bit_beacon_report_id; /* beacon report编号 */ 449 osal_u8 bit_fragment_id_number : 7; /* beacon report分段编号 */ 450 osal_u8 bit_more_frame_body_fragments : 1; /* 当前beacon report后续是否还有更多分段,[1:有|0:没有] */ 451 osal_u8 resv[2]; 452 } mac_meas_rpt_bcn_stru; 453 454 typedef struct mac_vap_rrm_info_tag { 455 mac_action_rm_rpt_stru *rm_rpt_action; /* Report Frame Addr */ 456 mac_meas_rpt_ie_stru *meas_rpt_ie; /* Measurement Report IE Addr */ 457 oal_netbuf_stru *rm_rpt_mgmt_buf; /* Report Frame Addr for Transfer */ 458 459 osal_u8 action_code; 460 osal_u8 dialog_token; 461 oal_bool_enum_uint8 is_measuring; 462 osal_u8 rsv1[1]; 463 464 osal_u16 req_user_id; 465 osal_u16 rm_rpt_action_len; /* Report Frame Length for Transfer */ 466 struct osal_list_head meas_rpt_list; /* Report链表 */ 467 mac_meas_req_ie_stru *meas_req_ie; 468 mac_bcn_req_info_stru bcn_req_info; /* 保存发送的bcn请求 */ 469 mac_neighbor_req_info_stru neighbor_req_info; /* 保存发送的neighbor请求 */ 470 osal_u32 act_meas_start_time[2]; 471 472 frw_timeout_stru meas_status_timer; 473 } mac_vap_rrm_info_stru; 474 475 typedef struct { 476 mac_vap_rrm_info_stru *rrm_info; 477 osal_u8 enable_11k; 478 osal_u8 bcn_table_switch; 479 osal_u8 resv[2]; 480 } hmac_11k_vap_info_stru; 481 482 typedef struct { 483 mac_user_rrm_info_stru *user_rrm_info; 484 mac_rrm_enabled_cap_ie_stru rrm_enabled_cap; 485 } hmac_11k_user_info_stru; 486 487 typedef struct { 488 osal_u8 beacon_report_id; 489 osal_u8 fragment_id_num; /* 分片号 */ 490 osal_u16 frame_len_remaining; /* 剩余帧体长度 */ 491 mac_meas_rpt_bcn_stru *meas_rpt_bcn; /* bcn report指针 */ 492 } hmac_rrm_rpt_frag_stru; 493 494 typedef struct { 495 /* Measurement Report field */ 496 osal_u8 eid; /* IEEE80211_ELEMID_MEASRPT */ 497 osal_u8 len; 498 osal_u8 token; 499 mac_meas_rpt_mode_stru rptmode; 500 osal_u8 rpttype; 501 /* chn_load report field */ 502 osal_u8 optclass; 503 osal_u8 channum; 504 osal_u32 act_meas_start_time[2]; 505 osal_u16 duration; 506 osal_u8 chn_load; 507 } mac_meas_rpt_chn_load_item_stru; 508 509 typedef struct { 510 struct osal_list_head dlist_head_chn_load; 511 mac_meas_rpt_chn_load_item_stru *meas_rpt_chn_load_item; /* 包含chn load rpt的meas rpt */ 512 } mac_meas_rpt_chn_load_stru; 513 514 typedef struct { 515 struct osal_list_head dlist_head_neighbor; 516 mac_neighbor_rpt_ie_stru *meas_rpt_neighbor_item; /* 包含neighbor rpt的meas rpt */ 517 } mac_meas_rpt_neighbor_stru; 518 519 typedef struct { 520 osal_u8 action_type; 521 osal_u8 auc_mac_addr[WLAN_MAC_ADDR_LEN]; 522 osal_u16 num_rpt; 523 osal_u16 random_ivl; 524 osal_u16 duration; 525 osal_u8 optclass; 526 osal_u8 req_mode; 527 osal_u8 means_type; 528 osal_u8 channum; 529 osal_u8 bcn_mode; 530 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; 531 } mac_cfg_radio_meas_info_stru; 532 533 /* 通知链钩子指针定义 */ 534 typedef osal_u32 (*p_rrm_rpt_notify_func)(hmac_user_stru *hmac_user, mac_rrm_state_enum rpt_state); 535 /* 钩子函数指针数组结构体 */ 536 typedef struct { 537 p_rrm_rpt_notify_func pa_rrm_rpt_notify_func[HMAC_RRM_RPT_NOTIFY_BUTT][MAC_RRM_MEAS_TYPE_BUTT]; 538 } hmac_rrm_rpt_hook_stru; 539 540 /***************************************************************************** 541 8 UNION定义 542 *****************************************************************************/ 543 544 545 /***************************************************************************** 546 9 OTHERS定义 547 *****************************************************************************/ 548 549 550 /***************************************************************************** 551 10 函数声明 552 *****************************************************************************/ 553 static osal_u32 hmac_11k_init_weakref(osal_void) __attribute__ ((weakref("hmac_11k_init"), used)); 554 static osal_void hmac_11k_deinit_weakref(osal_void) __attribute__ ((weakref("hmac_11k_deinit"), used)); 555 556 typedef osal_u32 (*hmac_sta_up_update_rrm_capability_cb)(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user, 557 osal_u8 *payload, osal_u32 rx_len); 558 typedef osal_u32 (*hmac_ap_up_update_rrm_capability_cb)(hmac_user_stru *hmac_user, osal_u16 us_cap_info, 559 osal_u8 *payload, osal_u32 msg_len); 560 typedef osal_void (*hmac_set_rrm_enabled_cap_field_etc_cb)(osal_void *vap, osal_u8 *buffer, osal_u8 *ie_len); 561 typedef osal_void (*hmac_11k_get_tsf_cb)(hmac_vap_stru *hmac_vap, 562 mac_scanned_result_extend_info_stru *scan_result_ext_info, dmac_rx_ctl_stru *rx_ctrl); 563 typedef osal_void (*hmac_scan_update_bss_list_rrm_cb)(mac_bss_dscr_stru *bss_dscr, osal_u8 *frame_body, 564 osal_u16 frame_len); 565 typedef osal_void (*hmac_11k_set_tsf_cb)(hmac_vap_stru *hmac_vap, mac_bss_dscr_stru *bss_dscr, 566 mac_scanned_result_extend_info_stru *scan_result_extend); 567 typedef osal_void (*hmac_get_11k_cap_cb)(hmac_vap_stru *hmac_vap, osal_s32 *pl_value); 568 569 #ifdef __cplusplus 570 #if __cplusplus 571 } 572 #endif 573 #endif 574 575 #endif 576