1 /** @file mlan_11v.h
2  *
3  *  @brief Interface for the BTM module implemented in mlan_11v.c
4  *
5  *  Driver interface functions and type declarations for the process BTM frame
6  *    module implemented in mlan_11v.c.
7  *
8  *  Copyright 2022-2024 NXP
9  *
10  *  SPDX-License-Identifier: BSD-3-Clause
11  *
12  */
13 
14 /********************************************************
15 Change log:
16     08/11/2022: initial version
17 ********************************************************/
18 
19 #ifndef _MLAN_11V_H_
20 #define _MLAN_11V_H_
21 
22 #if CONFIG_11V
23 
24 #define WLAN_WNM_MAX_NEIGHBOR_REPORT               6
25 #define MGMT_WNM_NEIGHBOR_BSS_TRANSITION_CANDIDATE 3
26 
27 struct wnm_neighbor_report
28 {
29     t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
30     t_u32 bssid_info;
31     t_u8 reg_class;
32     t_u8 channel;
33     t_u8 PhyType;
34     t_u8 prefer;
35     t_u8 prefer_select;
36 };
37 
38 /* IEEE Std 802.11-2016 - Table 9-357 BTM status code definitions */
39 enum wnm_btm_status_code
40 {
41     WNM_BTM_ACCEPT                                 = 0,
42     WNM_BTM_REJECT_UNSPECIFIED                     = 1,
43     WNM_BTM_REJECT_INSUFFICIENT_BEACON_PROBE_RESP  = 2,
44     WNM_BTM_REJECT_INSUFFICIENT_AVAILABLE_CAPABITY = 3,
45     WNM_BTM_REJECT_TERMINATION_UNDESIRED           = 4,
46     WNM_BTM_REJECT_TERMINATION_DELAY_REQUEST       = 5,
47     WNM_BTM_REJECT_STA_CANDIDATE_LIST_PROVIDED     = 6,
48     WNM_BTM_REJECT_NO_SUITABLE_CANDIDATES          = 7,
49     WNM_BTM_REJECT_LEAVING_ESS                     = 8
50 };
51 
52 /** process rx action frame */
53 void wlan_process_mgmt_wnm_btm_req(t_u8 *pos, t_u8 *end, t_u8 *src_addr, t_u8 *dest_addr, bool protect);
54 
55 /* send mgmt bss transition query frame */
56 int wlan_send_mgmt_bss_trans_query(mlan_private *pmpriv, t_u8 query_reason);
57 
58 /* send mgmt bss transition mgmt response */
59 void wlan_send_mgmt_wnm_btm_resp(t_u8 dialog_token,
60                                  enum wnm_btm_status_code status,
61                                  t_u8 *dst_addr,
62                                  t_u8 *src_addr,
63                                  t_u8 *target_bssid,
64                                  t_u8 *tag_nr,
65                                  t_u8 tag_len,
66                                  bool protect);
67 #endif /* CONFIG_11V */
68 
69 #endif /* !_MLAN_11V_H_ */
70