1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (c) 2012 - 2018 Microchip Technology Inc., and its subsidiaries.
4  * All rights reserved.
5  */
6 
7 #ifndef CORECONFIGURATOR_H
8 #define CORECONFIGURATOR_H
9 
10 #include "wilc_wlan_if.h"
11 
12 #define NUM_RSSI                5
13 
14 #define MAC_HDR_LEN             24
15 #define FCS_LEN                 4
16 #define TIME_STAMP_LEN          8
17 #define BEACON_INTERVAL_LEN     2
18 #define CAP_INFO_LEN            2
19 #define STATUS_CODE_LEN         2
20 #define AID_LEN                 2
21 #define IE_HDR_LEN              2
22 
23 #define SET_CFG              0
24 #define GET_CFG              1
25 
26 #define MAX_STRING_LEN               256
27 #define MAX_ASSOC_RESP_FRAME_SIZE    MAX_STRING_LEN
28 
29 #define MAKE_WORD16(lsb, msb) ((((u16)(msb) << 8) & 0xFF00) | (lsb))
30 #define MAKE_WORD32(lsw, msw) ((((u32)(msw) << 16) & 0xFFFF0000) | (lsw))
31 
32 struct rssi_history_buffer {
33 	bool full;
34 	u8 index;
35 	s8 samples[NUM_RSSI];
36 };
37 
38 struct network_info {
39 	s8 rssi;
40 	u16 cap_info;
41 	u8 ssid[MAX_SSID_LEN];
42 	u8 ssid_len;
43 	u8 bssid[6];
44 	u16 beacon_period;
45 	u8 dtim_period;
46 	u8 ch;
47 	unsigned long time_scan_cached;
48 	unsigned long time_scan;
49 	bool new_network;
50 	u8 found;
51 	u32 tsf_lo;
52 	u8 *ies;
53 	u16 ies_len;
54 	void *join_params;
55 	struct rssi_history_buffer rssi_history;
56 	u64 tsf_hi;
57 };
58 
59 struct connect_info {
60 	u8 bssid[6];
61 	u8 *req_ies;
62 	size_t req_ies_len;
63 	u8 *resp_ies;
64 	u16 resp_ies_len;
65 	u16 status;
66 };
67 
68 struct disconnect_info {
69 	u16 reason;
70 	u8 *ie;
71 	size_t ie_len;
72 };
73 
74 s32 wilc_parse_network_info(u8 *msg_buffer,
75 			    struct network_info **ret_network_info);
76 s32 wilc_parse_assoc_resp_info(u8 *buffer, u32 buffer_len,
77 			       struct connect_info *ret_conn_info);
78 void wilc_scan_complete_received(struct wilc *wilc, u8 *buffer, u32 length);
79 void wilc_network_info_received(struct wilc *wilc, u8 *buffer, u32 length);
80 void wilc_gnrl_async_info_received(struct wilc *wilc, u8 *buffer, u32 length);
81 #endif
82