[RAMEN9610-20413][9610] wlbt: SCSC Driver version 10.6.1.0
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / drivers / net / wireless / scsc / nl80211_vendor_nan.h
1 /*****************************************************************************
2 *
3 * Copyright (c) 2012 - 2019 Samsung Electronics Co., Ltd. All rights reserved
4 *
5 ****************************************************************************/
6 #ifndef __SLSI_NL80211_VENDOR_NAN_H_
7 #define __SLSI_NL80211_VENDOR_NAN_H_
8
9 #define SLSI_NAN_TLV_TAG_CONFIGURATION 0x0101
10 #define SLSI_NAN_TLV_TAG_2G4_BAND_SPECIFIC_CONFIG 0x0102
11 #define SLSI_NAN_TLV_TAG_5G_BAND_SPECIFIC_CONFIG 0x0103
12 #define SLSI_NAN_TLV_TAG_SUBSCRIBE_SPECIFIC 0x0104
13 #define SLSI_NAN_TLV_TAG_DISCOVERY_COMMON_SPECIFIC 0x0105
14 #define SLSI_NAN_TLV_TAG_SERVICE_NAME 0x0106
15 #define SLSI_NAN_TLV_TAG_SERVICE_SPECIFIC_INFO 0x0107
16 #define SLSI_NAN_TLV_TAG_EXT_SERVICE_SPECIFIC_INFO 0x0108
17 #define SLSI_NAN_TLV_TAG_RX_MATCH_FILTER 0x0109
18 #define SLSI_NAN_TLV_TAG_TX_MATCH_FILTER 0x010a
19 #define SLSI_NAN_TLV_TAG_MATCH_FILTER 0x010b
20 #define SLSI_NAN_TLV_TAG_INTERFACE_ADDRESS_SET 0x010c
21 #define SLSI_NAN_TLV_TAG_MATCH_IND 0x010d
22 #define SLSI_NAN_TLV_TAG_DATA_PATH_SECURITY 0x010e
23 #define SLSI_NAN_TLV_TAG_APP_INFO 0x010f
24 #define SLSI_NAN_TLV_TAG_RANGING 0x0110
25
26 enum SLSI_NAN_REPLY_ATTRIBUTES {
27 NAN_REPLY_ATTR_STATUS_TYPE,
28 NAN_REPLY_ATTR_VALUE,
29 NAN_REPLY_ATTR_RESPONSE_TYPE,
30 NAN_REPLY_ATTR_PUBLISH_SUBSCRIBE_TYPE,
31 NAN_REPLY_ATTR_CAP_MAX_CONCURRENT_CLUSTER,
32 NAN_REPLY_ATTR_CAP_MAX_PUBLISHES,
33 NAN_REPLY_ATTR_CAP_MAX_SUBSCRIBES,
34 NAN_REPLY_ATTR_CAP_MAX_SERVICE_NAME_LEN,
35 NAN_REPLY_ATTR_CAP_MAX_MATCH_FILTER_LEN,
36 NAN_REPLY_ATTR_CAP_MAX_TOTAL_MATCH_FILTER_LEN,
37 NAN_REPLY_ATTR_CAP_MAX_SERVICE_SPECIFIC_INFO_LEN,
38 NAN_REPLY_ATTR_CAP_MAX_VSA_DATA_LEN,
39 NAN_REPLY_ATTR_CAP_MAX_MESH_DATA_LEN,
40 NAN_REPLY_ATTR_CAP_MAX_NDI_INTERFACES,
41 NAN_REPLY_ATTR_CAP_MAX_NDP_SESSIONS,
42 NAN_REPLY_ATTR_CAP_MAX_APP_INFO_LEN
43 };
44
45 enum SLSI_NAN_REQ_ATTRIBUTES {
46 NAN_REQ_ATTR_MASTER_PREF,
47 NAN_REQ_ATTR_CLUSTER_LOW,
48 NAN_REQ_ATTR_CLUSTER_HIGH,
49 NAN_REQ_ATTR_HOP_COUNT_LIMIT_VAL,
50 NAN_REQ_ATTR_SID_BEACON_VAL,
51 NAN_REQ_ATTR_SUPPORT_2G4_VAL,
52 NAN_REQ_ATTR_SUPPORT_5G_VAL,
53 NAN_REQ_ATTR_RSSI_CLOSE_2G4_VAL,
54 NAN_REQ_ATTR_RSSI_MIDDLE_2G4_VAL,
55 NAN_REQ_ATTR_RSSI_PROXIMITY_2G4_VAL,
56 NAN_REQ_ATTR_BEACONS_2G4_VAL = 10,
57 NAN_REQ_ATTR_SDF_2G4_VAL,
58 NAN_REQ_ATTR_CHANNEL_2G4_MHZ_VAL,
59 NAN_REQ_ATTR_RSSI_PROXIMITY_VAL,
60 NAN_REQ_ATTR_RSSI_CLOSE_5G_VAL,
61 NAN_REQ_ATTR_RSSI_CLOSE_PROXIMITY_5G_VAL,
62 NAN_REQ_ATTR_RSSI_MIDDLE_5G_VAL,
63 NAN_REQ_ATTR_RSSI_PROXIMITY_5G_VAL,
64 NAN_REQ_ATTR_BEACON_5G_VAL,
65 NAN_REQ_ATTR_SDF_5G_VAL,
66 NAN_REQ_ATTR_CHANNEL_5G_MHZ_VAL = 20,
67 NAN_REQ_ATTR_RSSI_WINDOW_SIZE_VAL,
68 NAN_REQ_ATTR_OUI_VAL,
69 NAN_REQ_ATTR_MAC_ADDR_VAL,
70 NAN_REQ_ATTR_CLUSTER_VAL,
71 NAN_REQ_ATTR_SOCIAL_CH_SCAN_DWELL_TIME,
72 NAN_REQ_ATTR_SOCIAL_CH_SCAN_PERIOD,
73 NAN_REQ_ATTR_RANDOM_FACTOR_FORCE_VAL,
74 NAN_REQ_ATTR_HOP_COUNT_FORCE_VAL,
75 NAN_REQ_ATTR_CONN_CAPABILITY_PAYLOAD_TX,
76 NAN_REQ_ATTR_CONN_CAPABILITY_IBSS = 30,
77 NAN_REQ_ATTR_CONN_CAPABILITY_WFD,
78 NAN_REQ_ATTR_CONN_CAPABILITY_WFDS,
79 NAN_REQ_ATTR_CONN_CAPABILITY_TDLS,
80 NAN_REQ_ATTR_CONN_CAPABILITY_MESH,
81 NAN_REQ_ATTR_CONN_CAPABILITY_WLAN_INFRA,
82 NAN_REQ_ATTR_DISCOVERY_ATTR_NUM_ENTRIES,
83 NAN_REQ_ATTR_DISCOVERY_ATTR_VAL,
84 NAN_REQ_ATTR_CONN_TYPE,
85 NAN_REQ_ATTR_NAN_ROLE,
86 NAN_REQ_ATTR_TRANSMIT_FREQ = 40,
87 NAN_REQ_ATTR_AVAILABILITY_DURATION,
88 NAN_REQ_ATTR_AVAILABILITY_INTERVAL,
89 NAN_REQ_ATTR_MESH_ID_LEN,
90 NAN_REQ_ATTR_MESH_ID,
91 NAN_REQ_ATTR_INFRASTRUCTURE_SSID_LEN,
92 NAN_REQ_ATTR_INFRASTRUCTURE_SSID,
93 NAN_REQ_ATTR_FURTHER_AVAIL_NUM_ENTRIES,
94 NAN_REQ_ATTR_FURTHER_AVAIL_VAL,
95 NAN_REQ_ATTR_FURTHER_AVAIL_ENTRY_CTRL,
96 NAN_REQ_ATTR_FURTHER_AVAIL_CHAN_CLASS = 50,
97 NAN_REQ_ATTR_FURTHER_AVAIL_CHAN,
98 NAN_REQ_ATTR_FURTHER_AVAIL_CHAN_MAPID,
99 NAN_REQ_ATTR_FURTHER_AVAIL_INTERVAL_BITMAP,
100 NAN_REQ_ATTR_PUBLISH_ID,
101 NAN_REQ_ATTR_PUBLISH_TTL,
102 NAN_REQ_ATTR_PUBLISH_PERIOD,
103 NAN_REQ_ATTR_PUBLISH_TYPE,
104 NAN_REQ_ATTR_PUBLISH_TX_TYPE,
105 NAN_REQ_ATTR_PUBLISH_COUNT,
106 NAN_REQ_ATTR_PUBLISH_SERVICE_NAME_LEN = 60,
107 NAN_REQ_ATTR_PUBLISH_SERVICE_NAME,
108 NAN_REQ_ATTR_PUBLISH_MATCH_ALGO,
109 NAN_REQ_ATTR_PUBLISH_SERVICE_INFO_LEN,
110 NAN_REQ_ATTR_PUBLISH_SERVICE_INFO,
111 NAN_REQ_ATTR_PUBLISH_RX_MATCH_FILTER_LEN,
112 NAN_REQ_ATTR_PUBLISH_RX_MATCH_FILTER,
113 NAN_REQ_ATTR_PUBLISH_TX_MATCH_FILTER_LEN,
114 NAN_REQ_ATTR_PUBLISH_TX_MATCH_FILTER,
115 NAN_REQ_ATTR_PUBLISH_RSSI_THRESHOLD_FLAG,
116 NAN_REQ_ATTR_PUBLISH_CONN_MAP = 70,
117 NAN_REQ_ATTR_PUBLISH_RECV_IND_CFG,
118 NAN_REQ_ATTR_SUBSCRIBE_ID,
119 NAN_REQ_ATTR_SUBSCRIBE_TTL,
120 NAN_REQ_ATTR_SUBSCRIBE_PERIOD,
121 NAN_REQ_ATTR_SUBSCRIBE_TYPE,
122 NAN_REQ_ATTR_SUBSCRIBE_RESP_FILTER_TYPE,
123 NAN_REQ_ATTR_SUBSCRIBE_RESP_INCLUDE,
124 NAN_REQ_ATTR_SUBSCRIBE_USE_RESP_FILTER,
125 NAN_REQ_ATTR_SUBSCRIBE_SSI_REQUIRED,
126 NAN_REQ_ATTR_SUBSCRIBE_MATCH_INDICATOR = 80,
127 NAN_REQ_ATTR_SUBSCRIBE_COUNT,
128 NAN_REQ_ATTR_SUBSCRIBE_SERVICE_NAME_LEN,
129 NAN_REQ_ATTR_SUBSCRIBE_SERVICE_NAME,
130 NAN_REQ_ATTR_SUBSCRIBE_SERVICE_INFO_LEN,
131 NAN_REQ_ATTR_SUBSCRIBE_SERVICE_INFO,
132 NAN_REQ_ATTR_SUBSCRIBE_RX_MATCH_FILTER_LEN,
133 NAN_REQ_ATTR_SUBSCRIBE_RX_MATCH_FILTER,
134 NAN_REQ_ATTR_SUBSCRIBE_TX_MATCH_FILTER_LEN,
135 NAN_REQ_ATTR_SUBSCRIBE_TX_MATCH_FILTER,
136 NAN_REQ_ATTR_SUBSCRIBE_RSSI_THRESHOLD_FLAG = 90,
137 NAN_REQ_ATTR_SUBSCRIBE_CONN_MAP,
138 NAN_REQ_ATTR_SUBSCRIBE_NUM_INTF_ADDR_PRESENT,
139 NAN_REQ_ATTR_SUBSCRIBE_INTF_ADDR,
140 NAN_REQ_ATTR_SUBSCRIBE_RECV_IND_CFG,
141 NAN_REQ_ATTR_FOLLOWUP_ID,
142 NAN_REQ_ATTR_FOLLOWUP_REQUESTOR_ID,
143 NAN_REQ_ATTR_FOLLOWUP_ADDR,
144 NAN_REQ_ATTR_FOLLOWUP_PRIORITY,
145 NAN_REQ_ATTR_FOLLOWUP_SERVICE_NAME_LEN,
146 NAN_REQ_ATTR_FOLLOWUP_SERVICE_NAME = 100,
147 NAN_REQ_ATTR_FOLLOWUP_TX_WINDOW,
148 NAN_REQ_ATTR_FOLLOWUP_RECV_IND_CFG,
149 NAN_REQ_ATTR_SUBSCRIBE_SID_BEACON_VAL,
150 NAN_REQ_ATTR_DW_2G4_INTERVAL,
151 NAN_REQ_ATTR_DW_5G_INTERVAL,
152 NAN_REQ_ATTR_DISC_MAC_ADDR_RANDOM_INTERVAL,
153 NAN_REQ_ATTR_PUBLISH_SDEA_LEN,
154 NAN_REQ_ATTR_PUBLISH_SDEA,
155 NAN_REQ_ATTR_RANGING_AUTO_RESPONSE,
156 NAN_REQ_ATTR_SDEA_PARAM_NDP_TYPE = 110,
157 NAN_REQ_ATTR_SDEA_PARAM_SECURITY_CFG,
158 NAN_REQ_ATTR_SDEA_PARAM_RANGING_STATE,
159 NAN_REQ_ATTR_SDEA_PARAM_RANGE_REPORT,
160 NAN_REQ_ATTR_SDEA_PARAM_QOS_CFG,
161 NAN_REQ_ATTR_RANGING_CFG_INTERVAL,
162 NAN_REQ_ATTR_RANGING_CFG_INDICATION,
163 NAN_REQ_ATTR_RANGING_CFG_INGRESS_MM,
164 NAN_REQ_ATTR_RANGING_CFG_EGRESS_MM,
165 NAN_REQ_ATTR_CIPHER_TYPE,
166 NAN_REQ_ATTR_SCID_LEN = 120,
167 NAN_REQ_ATTR_SCID,
168 NAN_REQ_ATTR_SECURITY_KEY_TYPE,
169 NAN_REQ_ATTR_SECURITY_PMK_LEN,
170 NAN_REQ_ATTR_SECURITY_PMK,
171 NAN_REQ_ATTR_SECURITY_PASSPHRASE_LEN,
172 NAN_REQ_ATTR_SECURITY_PASSPHRASE,
173 NAN_REQ_ATTR_RANGE_RESPONSE_CFG_PUBLISH_ID,
174 NAN_REQ_ATTR_RANGE_RESPONSE_CFG_REQUESTOR_ID,
175 NAN_REQ_ATTR_RANGE_RESPONSE_CFG_PEER_ADDR,
176 NAN_REQ_ATTR_RANGE_RESPONSE_CFG_RANGING_RESPONSE
177 };
178
179 enum SLSI_NAN_RESP_ATTRIBUTES {
180 NAN_RESP_ATTR_MAX_CONCURRENT_NAN_CLUSTERS,
181 NAN_RESP_ATTR_MAX_PUBLISHES,
182 NAN_RESP_ATTR_MAX_SUBSCRIBES,
183 NAN_RESP_ATTR_MAX_SERVICE_NAME_LEN,
184 NAN_RESP_ATTR_MAX_MATCH_FILTER_LEN,
185 NAN_RESP_ATTR_MAX_TOTAL_MATCH_FILTER_LEN,
186 NAN_RESP_ATTR_MAX_SERVICE_SPECIFIC_INFO_LEN,
187 NAN_RESP_ATTR_MAX_VSA_DATA_LEN,
188 NAN_RESP_ATTR_MAX_MESH_DATA_LEN,
189 NAN_RESP_ATTR_MAX_NDI_INTERFACES,
190 NAN_RESP_ATTR_MAX_NDP_SESSIONS,
191 NAN_RESP_ATTR_MAX_APP_INFO_LEN,
192 NAN_RESP_ATTR_SUBSCRIBE_ID,
193 NAN_RESP_ATTR_PUBLISH_ID
194 };
195
196 enum SLSI_NAN_EVT_ATTRIBUTES {
197 NAN_EVT_ATTR_MATCH_PUBLISH_SUBSCRIBE_ID,
198 NAN_EVT_ATTR_MATCH_REQUESTOR_INSTANCE_ID,
199 NAN_EVT_ATTR_MATCH_ADDR,
200 NAN_EVT_ATTR_MATCH_SERVICE_SPECIFIC_INFO_LEN,
201 NAN_EVT_ATTR_MATCH_SERVICE_SPECIFIC_INFO,
202 NAN_EVT_ATTR_MATCH_SDF_MATCH_FILTER_LEN,
203 NAN_EVT_ATTR_MATCH_SDF_MATCH_FILTER,
204 NAN_EVT_ATTR_MATCH_MATCH_OCCURRED_FLAG,
205 NAN_EVT_ATTR_MATCH_OUT_OF_RESOURCE_FLAG,
206 NAN_EVT_ATTR_MATCH_RSSI_VALUE,
207 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_IS_WFD_SUPPORTED = 10,
208 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_IS_WFDS_SUPPORTED,
209 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_IS_TDLS_SUPPORTED,
210 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_IS_IBSS_SUPPORTED,
211 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_IS_MESH_SUPPORTED,
212 NAN_EVT_ATTR_MATCH_CONN_CAPABILITY_WLAN_INFRA_FIELD,
213 NAN_EVT_ATTR_MATCH_NUM_RX_DISCOVERY_ATTR,
214 NAN_EVT_ATTR_MATCH_RX_DISCOVERY_ATTR,
215 NAN_EVT_ATTR_MATCH_DISC_ATTR_TYPE,
216 NAN_EVT_ATTR_MATCH_DISC_ATTR_ROLE,
217 NAN_EVT_ATTR_MATCH_DISC_ATTR_DURATION = 20,
218 NAN_EVT_ATTR_MATCH_DISC_ATTR_AVAIL_INTERVAL_BITMAP,
219 NAN_EVT_ATTR_MATCH_DISC_ATTR_MAPID,
220 NAN_EVT_ATTR_MATCH_DISC_ATTR_ADDR,
221 NAN_EVT_ATTR_MATCH_DISC_ATTR_MESH_ID_LEN,
222 NAN_EVT_ATTR_MATCH_DISC_ATTR_MESH_ID,
223 NAN_EVT_ATTR_MATCH_DISC_ATTR_INFRASTRUCTURE_SSID_LEN,
224 NAN_EVT_ATTR_MATCH_DISC_ATTR_INFRASTRUCTURE_SSID_VAL,
225 NAN_EVT_ATTR_MATCH_NUM_CHANS,
226 NAN_EVT_ATTR_MATCH_FAMCHAN,
227 NAN_EVT_ATTR_MATCH_FAM_ENTRY_CONTROL = 30,
228 NAN_EVT_ATTR_MATCH_FAM_CLASS_VAL,
229 NAN_EVT_ATTR_MATCH_FAM_CHANNEL,
230 NAN_EVT_ATTR_MATCH_FAM_MAPID,
231 NAN_EVT_ATTR_MATCH_FAM_AVAIL_INTERVAL_BITMAP,
232 NAN_EVT_ATTR_MATCH_CLUSTER_ATTRIBUTE_LEN,
233 NAN_EVT_ATTR_MATCH_CLUSTER_ATTRIBUTE,
234 NAN_EVT_ATTR_PUBLISH_ID,
235 NAN_EVT_ATTR_PUBLISH_REASON,
236 NAN_EVT_ATTR_SUBSCRIBE_ID,
237 NAN_EVT_ATTR_SUBSCRIBE_REASON = 40,
238 NAN_EVT_ATTR_DISABLED_REASON,
239 NAN_EVT_ATTR_FOLLOWUP_PUBLISH_SUBSCRIBE_ID,
240 NAN_EVT_ATTR_FOLLOWUP_REQUESTOR_INSTANCE_ID,
241 NAN_EVT_ATTR_FOLLOWUP_ADDR,
242 NAN_EVT_ATTR_FOLLOWUP_DW_OR_FAW,
243 NAN_EVT_ATTR_FOLLOWUP_SERVICE_SPECIFIC_INFO_LEN,
244 NAN_EVT_ATTR_FOLLOWUP_SERVICE_SPECIFIC_INFO,
245 NAN_EVT_ATTR_DISCOVERY_ENGINE_EVT_TYPE,
246 NAN_EVT_ATTR_DISCOVERY_ENGINE_MAC_ADDR,
247 NAN_EVT_ATTR_DISCOVERY_ENGINE_CLUSTER = 50,
248 NAN_EVT_ATTR_SDEA,
249 NAN_EVT_ATTR_SDEA_LEN,
250 NAN_EVT_ATTR_SCID,
251 NAN_EVT_ATTR_SCID_LEN,
252 NAN_EVT_ATTR_SDEA_PARAM_CONFIG_NAN_DATA_PATH,
253 NAN_EVT_ATTR_SDEA_PARAM_NDP_TYPE,
254 NAN_EVT_ATTR_SDEA_PARAM_SECURITY_CONFIG,
255 NAN_EVT_ATTR_SDEA_PARAM_RANGE_STATE,
256 NAN_EVT_ATTR_SDEA_PARAM_RANGE_REPORT,
257 NAN_EVT_ATTR_SDEA_PARAM_QOS_CFG = 60,
258 NAN_EVT_ATTR_RANGE_MEASUREMENT_MM,
259 NAN_EVT_ATTR_RANGEING_EVENT_TYPE,
260 NAN_EVT_ATTR_SECURITY_CIPHER_TYPE,
261 NAN_EVT_ATTR_STATUS
262 };
263
264 #define SLSI_FAPI_NAN_CONFIG_PARAM_SID_BEACON 0X0003
265 #define SLSI_FAPI_NAN_CONFIG_PARAM_2_4_RSSI_CLOSE 0X0004
266 #define SLSI_FAPI_NAN_CONFIG_PARAM_2_4_RSSI_MIDDLE 0X0005
267 #define SLSI_FAPI_NAN_CONFIG_PARAM_2_4_RSSI_PROXIMITY 0X0006
268 #define SLSI_FAPI_NAN_CONFIG_PARAM_BAND_USAGE 0X0007
269 #define SLSI_FAPI_NAN_CONFIG_PARAM_5_RSSI_CLOSE 0X0008
270 #define SLSI_FAPI_NAN_CONFIG_PARAM_5_RSSI_MIDDLE 0X0009
271 #define SLSI_FAPI_NAN_CONFIG_PARAM_5_RSSI_PROXIMITY 0X000A
272 #define SLSI_FAPI_NAN_CONFIG_PARAM_HOP_COUNT_LIMIT 0X000B
273 #define SLSI_FAPI_NAN_CONFIG_PARAM_RSSI_WINDOW_SIZE 0X000C
274 #define SLSI_FAPI_NAN_CONFIG_PARAM_SCAN_PARAMETER_2_4 0X000D
275 #define SLSI_FAPI_NAN_CONFIG_PARAM_SCAN_PARAMETER_5 0X000E
276 #define SLSI_FAPI_NAN_CONFIG_PARAM_MASTER_PREFERENCE 0X000F
277 #define SLSI_FAPI_NAN_CONFIG_PARAM_CONNECTION_CAPAB 0X0010
278 #define SLSI_FAPI_NAN_CONFIG_PARAM_POST_DISCOVER_PARAM 0X0011
279 #define SLSI_FAPI_NAN_CONFIG_PARAM_FURTHER_AVAIL_CHANNEL_MAP 0X0012
280 #define SLSI_FAPI_NAN_CONFIG_PARAM_ADDR_RANDOM_INTERVAL 0X0013
281 #define SLSI_FAPI_NAN_SERVICE_NAME 0X0020
282 #define SLSI_FAPI_NAN_SERVICE_SPECIFIC_INFO 0X0021
283 #define SLSI_FAPI_NAN_RX_MATCH_FILTER 0X0022
284 #define SLSI_FAPI_NAN_TX_MATCH_FILTER 0X0023
285 #define SLSI_FAPI_NAN_SDF_MATCH_FILTER 0X0024
286 #define SLSI_FAPI_NAN_CLUSTER_ATTRIBUTE 0X0025
287 #define SLSI_FAPI_NAN_INTERFACE_ADDRESS_SET 0X0026
288 #define SLSI_FAPI_NAN_SDEA 0X0027
289
290 #define SLSI_HAL_NAN_MAX_SOCIAL_CHANNELS 3
291 #define SLSI_HAL_NAN_MAX_SERVICE_NAME_LEN 255
292 #define SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN 1024
293 #define SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN 255
294 #define SLSI_HAL_NAN_MAX_SUBSCRIBE_MAX_ADDRESS 42
295 #define SLSI_HAL_NAN_MAX_POSTDISCOVERY_LEN 5
296 #define SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN 1024
297
298 enum slsi_wifi_hal_nan_status_type {
299 /* NAN Protocol Response Codes */
300 SLSI_HAL_NAN_STATUS_SUCCESS = 0,
301 /* NAN Discovery Engine/Host driver failures */
302 SLSI_HAL_NAN_STATUS_INTERNAL_FAILURE = 1,
303 /* NAN OTA failures */
304 SLSI_HAL_NAN_STATUS_PROTOCOL_FAILURE = 2,
305 /* if the publish/subscribe id is invalid */
306 SLSI_HAL_NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID = 3,
307 /* If we run out of resources allocated */
308 SLSI_HAL_NAN_STATUS_NO_RESOURCE_AVAILABLE = 4,
309 /* if invalid params are passed */
310 SLSI_HAL_NAN_STATUS_INVALID_PARAM = 5,
311 /* if the requestor instance id is invalid */
312 SLSI_HAL_NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID = 6,
313 /* if the ndp id is invalid */
314 SLSI_HAL_NAN_STATUS_INVALID_NDP_ID = 7,
315 /* if NAN is enabled when wifi is turned off */
316 SLSI_HAL_NAN_STATUS_NAN_NOT_ALLOWED = 8,
317 /* if over the air ack is not received */
318 SLSI_HAL_NAN_STATUS_NO_OTA_ACK = 9,
319 /* If NAN is already enabled and we are try to re-enable the same */
320 SLSI_HAL_NAN_STATUS_ALREADY_ENABLED = 10,
321 /* If followup message internal queue is full */
322 SLSI_HAL_NAN_STATUS_FOLLOWUP_QUEUE_FULL = 11,
323 /* Unsupported concurrency session enabled, NAN disabled notified */
324 SLSI_HAL_NAN_STATUS_UNSUPPORTED_CONCURRENCY_NAN_DISABLED = 12
325 };
326
327 enum slsi_nan_status_type {
328 /* NAN Protocol Response Codes */
329 NAN_STATUS_SUCCESS = 0,
330 NAN_STATUS_TIMEOUT = 1,
331 NAN_STATUS_DE_FAILURE = 2,
332 NAN_STATUS_INVALID_MSG_VERSION = 3,
333 NAN_STATUS_INVALID_MSG_LEN = 4,
334 NAN_STATUS_INVALID_MSG_ID = 5,
335 NAN_STATUS_INVALID_HANDLE = 6,
336 NAN_STATUS_NO_SPACE_AVAILABLE = 7,
337 NAN_STATUS_INVALID_PUBLISH_TYPE = 8,
338 NAN_STATUS_INVALID_TX_TYPE = 9,
339 NAN_STATUS_INVALID_MATCH_ALGORITHM = 10,
340 NAN_STATUS_DISABLE_IN_PROGRESS = 11,
341 NAN_STATUS_INVALID_TLV_LEN = 12,
342 NAN_STATUS_INVALID_TLV_TYPE = 13,
343 NAN_STATUS_MISSING_TLV_TYPE = 14,
344 NAN_STATUS_INVALID_TOTAL_TLVS_LEN = 15,
345 NAN_STATUS_INVALID_MATCH_HANDLE = 16,
346 NAN_STATUS_INVALID_TLV_VALUE = 17,
347 NAN_STATUS_INVALID_TX_PRIORITY = 18,
348 NAN_STATUS_INVALID_CONNECTION_MAP = 19,
349 NAN_STATUS_INVALID_TCA_ID = 20,
350 NAN_STATUS_INVALID_STATS_ID = 21,
351 NAN_STATUS_NAN_NOT_ALLOWED = 22,
352 NAN_STATUS_NO_OTA_ACK = 23,
353 NAN_STATUS_TX_FAIL = 24,
354 /* 25-4095 Reserved */
355 /* NAN Configuration Response codes */
356 NAN_STATUS_INVALID_RSSI_CLOSE_VALUE = 4096,
357 NAN_STATUS_INVALID_RSSI_MIDDLE_VALUE = 4097,
358 NAN_STATUS_INVALID_HOP_COUNT_LIMIT = 4098,
359 NAN_STATUS_INVALID_MASTER_PREFERENCE_VALUE = 4099,
360 NAN_STATUS_INVALID_LOW_CLUSTER_ID_VALUE = 4100,
361 NAN_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE = 4101,
362 NAN_STATUS_INVALID_BACKGROUND_SCAN_PERIOD = 4102,
363 NAN_STATUS_INVALID_RSSI_PROXIMITY_VALUE = 4103,
364 NAN_STATUS_INVALID_SCAN_CHANNEL = 4104,
365 NAN_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP = 4105,
366 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106,
367 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107,
368 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108,
369 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109,
370 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110,
371 NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111,
372 NAN_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE = 4112,
373 NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE = 4113,
374 NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE = 4114,
375 NAN_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE = 4115,
376 NAN_STATUS_MISSING_FUTHER_AVAILABILITY_MAP = 4116,
377 NAN_STATUS_INVALID_BAND_CONFIG_FLAGS = 4117,
378 NAN_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118,
379 NAN_STATUS_INVALID_ONGOING_SCAN_PERIOD = 4119,
380 NAN_STATUS_INVALID_DW_INTERVAL_VALUE = 4120,
381 NAN_STATUS_INVALID_DB_INTERVAL_VALUE = 4121,
382 /* 4122-8191 RESERVED */
383 NAN_TERMINATED_REASON_INVALID = 8192,
384 NAN_TERMINATED_REASON_TIMEOUT = 8193,
385 NAN_TERMINATED_REASON_USER_REQUEST = 8194,
386 NAN_TERMINATED_REASON_FAILURE = 8195,
387 NAN_TERMINATED_REASON_COUNT_REACHED = 8196,
388 NAN_TERMINATED_REASON_DE_SHUTDOWN = 8197,
389 NAN_TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198,
390 NAN_TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199,
391 NAN_TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200,
392 NAN_TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201
393 };
394
395 enum slsi_nan_response_type {
396 NAN_RESPONSE_ENABLED = 0,
397 NAN_RESPONSE_DISABLED = 1,
398 NAN_RESPONSE_PUBLISH = 2,
399 NAN_RESPONSE_PUBLISH_CANCEL = 3,
400 NAN_RESPONSE_TRANSMIT_FOLLOWUP = 4,
401 NAN_RESPONSE_SUBSCRIBE = 5,
402 NAN_RESPONSE_SUBSCRIBE_CANCEL = 6,
403 NAN_RESPONSE_STATS = 7,
404 NAN_RESPONSE_CONFIG = 8,
405 NAN_RESPONSE_TCA = 9,
406 NAN_RESPONSE_ERROR = 10,
407 NAN_RESPONSE_BEACON_SDF_PAYLOAD = 11,
408 NAN_RESPONSE_GET_CAPABILITIES = 12
409 };
410
411 enum slsi_nan_disc_event_type {
412 NAN_EVENT_ID_DISC_MAC_ADDR = 0,
413 NAN_EVENT_ID_STARTED_CLUSTER,
414 NAN_EVENT_ID_JOINED_CLUSTER
415 };
416
417 struct slsi_hal_nan_social_channel_scan_params {
418 u8 dwell_time[SLSI_HAL_NAN_MAX_SOCIAL_CHANNELS];
419 u16 scan_period[SLSI_HAL_NAN_MAX_SOCIAL_CHANNELS];
420 };
421
422 struct slsi_hal_nan_connectivity_capability {
423 u8 payload_transmit_flag;
424 u8 is_wfd_supported;
425 u8 is_wfds_supported;
426 u8 is_tdls_supported;
427 u8 is_ibss_supported;
428 u8 is_mesh_supported;
429 u8 wlan_infra_field;
430 };
431
432 struct slsi_hal_nan_post_discovery_param {
433 u8 type; /* NanConnectionType */
434 u8 role; /* NanDeviceRole */
435 u8 transmit_freq;
436 u8 duration; /* NanAvailDuration */
437 u32 avail_interval_bitmap;
438 u8 addr[ETH_ALEN];
439 u16 mesh_id_len;
440 u8 mesh_id[32];
441 u16 infrastructure_ssid_len;
442 u8 infrastructure_ssid_val[32];
443 };
444
445 struct slsi_hal_nan_further_availability_channel {
446 /* struct slsi_hal_nan_further_availability_channel*/
447 u8 entry_control;
448 u8 class_val;
449 u8 channel;
450 u8 mapid;
451 u32 avail_interval_bitmap;
452 };
453
454 struct slsi_hal_nan_further_availability_map {
455 u8 numchans;
456 struct slsi_hal_nan_further_availability_channel famchan[32];
457 };
458
459 struct slsi_hal_nan_receive_post_discovery {
460 u8 type;
461 u8 role;
462 u8 duration;
463 u32 avail_interval_bitmap;
464 u8 mapid;
465 u8 addr[ETH_ALEN];
466 u16 mesh_id_len;
467 u8 mesh_id[32];
468 u16 infrastructure_ssid_len;
469 u8 infrastructure_ssid_val[32];
470 };
471
472 struct slsi_nan_sdea_ctrl_params {
473 u8 config_nan_data_path;
474 u8 ndp_type;
475 u8 security_cfg;
476 u8 ranging_state;
477 u8 range_report;
478 u8 qos_cfg;
479 };
480
481 struct slsi_nan_ranging_cfg {
482 u32 ranging_interval_msec;
483 u32 config_ranging_indications;
484 u32 distance_ingress_mm;
485 u32 distance_egress_mm;
486 };
487
488 struct slsi_nan_range_response_cfg {
489 u16 publish_id;
490 u32 requestor_instance_id;
491 u8 peer_addr[ETH_ALEN];
492 u8 ranging_response;
493 };
494
495 #define SLSI_NAN_PMK_INFO_LEN 32
496 #define SLSI_NAN_SECURITY_MAX_PASSPHRASE_LEN 63
497 #define SLSI_NAN_MAX_SCID_BUF_LEN 1024
498 struct slsi_nan_security_pmk {
499 u32 pmk_len;
500 u8 pmk[SLSI_NAN_PMK_INFO_LEN];
501 };
502
503 struct slsi_nan_security_passphrase {
504 u32 passphrase_len;
505 u8 passphrase[SLSI_NAN_SECURITY_MAX_PASSPHRASE_LEN];
506 };
507
508 struct slsi_nan_security_key_info {
509 u8 key_type;
510 union {
511 struct slsi_nan_security_pmk pmk_info;
512 struct slsi_nan_security_passphrase passphrase_info;
513 } body;
514 };
515
516 struct slsi_nan_security_info {
517 u32 cipher_type;
518 u32 scid_len;
519 u8 scid[SLSI_NAN_MAX_SCID_BUF_LEN];
520 struct slsi_nan_security_key_info key_info;
521 };
522
523 struct slsi_hal_nan_enable_req {
524 /* Mandatory parameters below */
525 u8 master_pref;
526 u16 cluster_low;
527 u16 cluster_high;
528
529 u8 config_support_5g;
530 u8 support_5g_val;
531 u8 config_sid_beacon;
532 u8 sid_beacon_val;
533 u8 config_2dot4g_rssi_close;
534 u8 rssi_close_2dot4g_val;
535
536 u8 config_2dot4g_rssi_middle;
537 u8 rssi_middle_2dot4g_val;
538
539 u8 config_2dot4g_rssi_proximity;
540 u8 rssi_proximity_2dot4g_val;
541
542 u8 config_hop_count_limit;
543 u8 hop_count_limit_val;
544
545 u8 config_2dot4g_support;
546 u8 support_2dot4g_val;
547
548 u8 config_2dot4g_beacons;
549 u8 beacon_2dot4g_val;
550 u8 config_2dot4g_sdf;
551 u8 sdf_2dot4g_val;
552 u8 config_5g_beacons;
553 u8 beacon_5g_val;
554 u8 config_5g_sdf;
555 u8 sdf_5g_val;
556 u8 config_5g_rssi_close;
557 u8 rssi_close_5g_val;
558 u8 config_5g_rssi_middle;
559 u8 rssi_middle_5g_val;
560 u8 config_5g_rssi_close_proximity;
561 u8 rssi_close_proximity_5g_val;
562 u8 config_rssi_window_size;
563 u8 rssi_window_size_val;
564 /* The 24 bit Organizationally Unique ID + the 8 bit Network Id. */
565 u8 config_oui;
566 u32 oui_val;
567 u8 config_intf_addr;
568 u8 intf_addr_val[ETH_ALEN];
569
570 u8 config_cluster_attribute_val;
571 u8 config_scan_params;
572 struct slsi_hal_nan_social_channel_scan_params scan_params_val;
573 u8 config_random_factor_force;
574 u8 random_factor_force_val;
575 u8 config_hop_count_force;
576 u8 hop_count_force_val;
577
578 /* channel frequency in MHz to enable Nan on */
579 u8 config_24g_channel;
580 u32 channel_24g_val;
581
582 u8 config_5g_channel;
583 int channel_5g_val;
584 u8 config_subscribe_sid_beacon;
585 u32 subscribe_sid_beacon_val;
586
587 /*NanConfigDW config_dw*/
588 u8 config_2dot4g_dw_band;
589 u32 dw_2dot4g_interval_val;
590 u8 config_5g_dw_band;
591 u32 dw_5g_interval_val;
592 u32 disc_mac_addr_rand_interval_sec;
593 };
594
595 struct slsi_hal_nan_publish_req {
596 /* id 0 means new publish, any other id is existing publish */
597 u16 publish_id;
598 /* how many seconds to run for. 0 means forever until canceled */
599 u16 ttl;
600 /* periodicity of OTA unsolicited publish.
601 * Specified in increments of 500 ms
602 */
603 u16 period;
604 u8 publish_type;/* 0= unsolicited, solicited = 1, 2= both */
605 u8 tx_type; /* 0 = broadcast, 1= unicast if solicited publish */
606 /* number of OTA Publish, 0 means forever until canceled */
607 u8 publish_count;
608 u16 service_name_len;
609 u8 service_name[SLSI_HAL_NAN_MAX_SERVICE_NAME_LEN];
610 u8 publish_match_indicator;
611
612 u16 service_specific_info_len;
613 u8 service_specific_info[SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN];
614
615 u16 rx_match_filter_len;
616 u8 rx_match_filter[SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN];
617
618 u16 tx_match_filter_len;
619 u8 tx_match_filter[SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN];
620
621 u8 rssi_threshold_flag;
622
623 /* 8-bit bitmap which allows the Host to associate this publish
624 * with a particular Post-NAN Connectivity attribute
625 * which has been sent down in a NanConfigureRequest/NanEnableRequest
626 * message. If the DE fails to find a configured Post-NAN
627 * connectivity attributes referenced by the bitmap,
628 * the DE will return an error code to the Host.
629 * If the Publish is configured to use a Post-NAN Connectivity
630 * attribute and the Host does not refresh the Post-NAN Connectivity
631 * attribute the Publish will be canceled and the Host will be sent
632 * a PublishTerminatedIndication message.
633 */
634 u8 connmap;
635 /* Set/Enable corresponding bits to disable any
636 * indications that follow a publish.
637 * BIT0 - Disable publish termination indication.
638 * BIT1 - Disable match expired indication.
639 * BIT2 - Disable followUp indication received (OTA).
640 */
641 u8 recv_indication_cfg;
642
643 u8 service_responder_policy;
644 struct slsi_nan_security_info sec_info;
645 struct slsi_nan_sdea_ctrl_params sdea_params;
646 struct slsi_nan_ranging_cfg ranging_cfg;
647 u8 ranging_auto_response;
648 struct slsi_nan_range_response_cfg range_response_cfg;
649
650 u16 sdea_service_specific_info_len;
651 u8 sdea_service_specific_info[SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN];
652 };
653
654 struct slsi_hal_nan_subscribe_req {
655 /* id 0 means new subscribe, non zero is existing subscribe */
656 u16 subscribe_id;
657 /* how many seconds to run for. 0 means forever until canceled */
658 u16 ttl;
659 /* periodicity of OTA Active Subscribe. Units in increments
660 * of 500 ms , 0 = attempt every DW
661 */
662 u16 period;
663
664 /* Flag which specifies how the Subscribe request shall be processed. */
665 u8 subscribe_type; /* 0 - PASSIVE , 1- ACTIVE */
666
667 /* Flag which specifies on Active Subscribes how the Service Response
668 * Filter attribute is populated.
669 */
670 u8 service_response_filter; /* 0 - Bloom Filter, 1 - MAC Addr */
671
672 /* Flag which specifies how the Service Response Filter Include
673 * bit is populated.
674 * 0=Do not respond if in the Address Set, 1= Respond
675 */
676 u8 service_response_include;
677
678 /* Flag which specifies if the Service Response Filter
679 * should be used when creating Subscribes.
680 * 0=Do not send the Service Response Filter,1= send
681 */
682 u8 use_service_response_filter;
683
684 /* Flag which specifies if the Service Specific Info is needed in
685 * the Publish message before creating the MatchIndication
686 */
687 u8 ssi_required_for_match_indication; /* 0=Not needed, 1= Required */
688
689 /* Field which specifies how matching indication to host is controlled.
690 * 0 - Match and Indicate Once
691 * 1 - Match and Indicate continuous
692 * 2 - Match and Indicate never. This means don't
693 * indicate match to host.
694 * 3 - Reserved
695 */
696 u8 subscribe_match_indicator;
697
698 /* The number of Subscribe Matches which should occur
699 * before the Subscribe request is automatically terminated.
700 */
701 /* If this value is 0 this field is not used by DE.*/
702 u8 subscribe_count;
703
704 /* length of service name */
705 /* UTF-8 encoded string identifying the service */
706 u16 service_name_len;
707 u8 service_name[SLSI_HAL_NAN_MAX_SERVICE_NAME_LEN];
708
709 /* Sequence of values which further specify the published service
710 * beyond the service name
711 */
712 u16 service_specific_info_len;
713 u8 service_specific_info[SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN];
714
715 /* Ordered sequence of <length, value> pairs used to filter out
716 * received publish discovery messages.
717 * This can be sent both for a Passive or an Active Subscribe
718 */
719 u16 rx_match_filter_len;
720 u8 rx_match_filter[SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN];
721
722 /* Ordered sequence of <length, value> pairs included in the
723 * Discovery Frame when an Active Subscribe is used.
724 */
725 u16 tx_match_filter_len;
726 u8 tx_match_filter[SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN];
727 u8 rssi_threshold_flag;
728
729 u8 connmap;
730 /* NAN Interface Address, conforming to the format as described in
731 * 8.2.4.3.2 of IEEE Std. 802.11-2012.
732 */
733 u8 num_intf_addr_present;
734 u8 intf_addr[SLSI_HAL_NAN_MAX_SUBSCRIBE_MAX_ADDRESS][ETH_ALEN];
735 /* Set/Enable corresponding bits to disable
736 * indications that follow a subscribe.
737 * BIT0 - Disable subscribe termination indication.
738 * BIT1 - Disable match expired indication.
739 * BIT2 - Disable followUp indication received (OTA).
740 */
741 u8 recv_indication_cfg;
742
743 struct slsi_nan_security_info sec_info;
744 struct slsi_nan_sdea_ctrl_params sdea_params;
745 struct slsi_nan_ranging_cfg ranging_cfg;
746 u8 ranging_auto_response;
747 struct slsi_nan_range_response_cfg range_response_cfg;
748
749 u16 sdea_service_specific_info_len;
750 u8 sdea_service_specific_info[SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN];
751 };
752
753 struct slsi_hal_nan_transmit_followup_req {
754 /* Publish or Subscribe Id of an earlier Publish/Subscribe */
755 u16 publish_subscribe_id;
756
757 /* This Id is the Requestor Instance that is passed as
758 * part of earlier MatchInd/FollowupInd message.
759 */
760 u32 requestor_instance_id;
761 u8 addr[ETH_ALEN]; /* Unicast address */
762 u8 priority; /* priority of the request 2=high */
763 u8 dw_or_faw; /* 0= send in a DW, 1=send in FAW */
764
765 /* Sequence of values which further specify the published service beyond
766 * the service name.
767 */
768 u16 service_specific_info_len;
769 u8 service_specific_info[SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN];
770 /* Set/Enable corresponding bits to disable
771 * responses after followUp.
772 * BIT0 - Disable followUp response from FW.
773 */
774 u8 recv_indication_cfg;
775
776 u16 sdea_service_specific_info_len;
777 u8 sdea_service_specific_info[SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN];
778 };
779
780 struct slsi_hal_nan_config_req {
781 u8 config_sid_beacon;
782 u8 sid_beacon;
783 u8 config_rssi_proximity;
784 u8 rssi_proximity;
785 u8 config_master_pref;
786 u8 master_pref;
787 /* 1 byte value which defines the RSSI filter threshold.
788 * Any Service Descriptors received above this value
789 * that are configured for RSSI filtering will be dropped.
790 * The rssi values should be specified without sign.
791 * For eg: -70dBm should be specified as 70.
792 */
793 u8 config_5g_rssi_close_proximity;
794 u8 rssi_close_proximity_5g_val;
795 u8 config_rssi_window_size;
796 u16 rssi_window_size_val;
797 /* If set to 1, the Discovery Engine will enclose the Cluster
798 * Attribute only sent in Beacons in a Vendor Specific Attribute
799 * and transmit in a Service Descriptor Frame.
800 */
801 u8 config_cluster_attribute_val;
802 u8 config_scan_params;
803 struct slsi_hal_nan_social_channel_scan_params scan_params_val;
804 /* 1 byte quantity which forces the Random Factor to a particular
805 * value for all transmitted Sync/Discovery beacons
806 */
807 u8 config_random_factor_force;
808 u8 random_factor_force_val;
809 /* 1 byte quantity which forces the HC for all transmitted Sync and
810 * Discovery Beacon NO matter the real HC being received over the
811 * air.
812 */
813 u8 config_hop_count_force;
814 u8 hop_count_force_val;
815 /* NAN Post Connectivity Capability */
816 u8 config_conn_capability;
817 struct slsi_hal_nan_connectivity_capability conn_capability_val;
818 /* NAN Post Discover Capability */
819 u8 num_config_discovery_attr;
820 struct slsi_hal_nan_post_discovery_param discovery_attr_val[SLSI_HAL_NAN_MAX_POSTDISCOVERY_LEN];
821 /* NAN Further availability Map */
822 u8 config_fam;
823 struct slsi_hal_nan_further_availability_map fam_val;
824
825 int channel_5g_val;
826 u8 config_subscribe_sid_beacon;
827 u32 subscribe_sid_beacon_val;
828
829 /*NanConfigDW config_dw*/
830 u8 config_2dot4g_dw_band;
831 u32 dw_2dot4g_interval_val;
832 u8 config_5g_dw_band;
833 u32 dw_5g_interval_val;
834 u32 disc_mac_addr_rand_interval_sec;
835
836 };
837
838 struct slsi_hal_nan_capabilities {
839 u32 max_concurrent_nan_clusters;
840 u32 max_publishes;
841 u32 max_subscribes;
842 u32 max_service_name_len;
843 u32 max_match_filter_len;
844 u32 max_total_match_filter_len;
845 u32 max_service_specific_info_len;
846 u32 max_vsa_data_len;
847 u32 max_mesh_data_len;
848 u32 max_ndi_interfaces;
849 u32 max_ndp_sessions;
850 u32 max_app_info_len;
851 };
852
853 struct slsi_hal_nan_followup_ind {
854 u16 publish_subscribe_id;
855 u32 requestor_instance_id;
856 u8 addr[ETH_ALEN];
857 u8 dw_or_faw;
858 u16 service_specific_info_len;
859 u8 service_specific_info[SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN];
860 u16 sdea_service_specific_info_len;
861 u8 sdea_service_specific_info[SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN];
862 };
863
864 struct slsi_hal_nan_match_ind {
865 u16 publish_subscribe_id;
866 u32 requestor_instance_id;
867 u8 addr[ETH_ALEN];
868 u16 service_specific_info_len;
869 u8 service_specific_info[SLSI_HAL_NAN_MAX_SERVICE_SPECIFIC_INFO_LEN];
870 u16 sdf_match_filter_len;
871 u8 sdf_match_filter[SLSI_HAL_NAN_MAX_MATCH_FILTER_LEN];
872 u8 match_occurred_flag;
873 u8 out_of_resource_flag;
874 u8 rssi_value;
875 u8 is_conn_capability_valid;
876 struct slsi_hal_nan_connectivity_capability conn_capability;
877 u8 num_rx_discovery_attr;
878 struct slsi_hal_nan_receive_post_discovery discovery_attr[SLSI_HAL_NAN_MAX_POSTDISCOVERY_LEN];
879 u8 num_chans;
880 struct slsi_hal_nan_further_availability_channel famchan[32];
881 u8 cluster_attribute_len;
882 u8 cluster_attribute[32];
883 struct slsi_nan_security_info sec_info;
884 struct slsi_nan_sdea_ctrl_params peer_sdea_params;
885 u32 range_measurement_mm;
886 u32 ranging_event_type;
887 u16 sdea_service_specific_info_len;
888 u8 sdea_service_specific_info[SLSI_HAL_NAN_MAX_SDEA_SERVICE_SPEC_INFO_LEN];
889 };
890
891 void slsi_nan_event(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb);
892 void slsi_nan_followup_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb);
893 void slsi_nan_service_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb);
894 void slsi_nan_get_mac(struct slsi_dev *sdev, char *nan_mac_addr);
895 struct net_device *slsi_nan_get_netdev(struct slsi_dev *sdev);
896 int slsi_nan_enable(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
897 int slsi_nan_disable(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
898 int slsi_nan_publish(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
899 int slsi_nan_publish_cancel(struct wiphy *wiphy, struct wireless_dev *wdev,
900 const void *data, int len);
901 int slsi_nan_subscribe(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
902 int slsi_nan_subscribe_cancel(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
903 int slsi_nan_transmit_followup(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
904 int slsi_nan_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
905 int slsi_nan_get_capabilities(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len);
906 #endif