• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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