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