1 /* 2 * Copyright (c) 2017 Intel Corporation. 3 * Copyright 2024 NXP 4 * Copyright (c) 2024 Nordic Semiconductor ASA 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 /** 10 * @file 11 * @brief WiFi L2 stack public header 12 */ 13 14 #ifndef ZEPHYR_INCLUDE_NET_WIFI_MGMT_H_ 15 #define ZEPHYR_INCLUDE_NET_WIFI_MGMT_H_ 16 17 #include <zephyr/net/net_mgmt.h> 18 #include <zephyr/net/wifi.h> 19 #include <zephyr/net/ethernet.h> 20 #include <zephyr/net/offloaded_netdev.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /** 27 * @addtogroup wifi_mgmt 28 * @{ 29 */ 30 31 /* Management part definitions */ 32 33 /** @cond INTERNAL_HIDDEN */ 34 35 #define _NET_WIFI_LAYER NET_MGMT_LAYER_L2 36 #define _NET_WIFI_CODE 0x156 37 #define _NET_WIFI_BASE (NET_MGMT_IFACE_BIT | \ 38 NET_MGMT_LAYER(_NET_WIFI_LAYER) | \ 39 NET_MGMT_LAYER_CODE(_NET_WIFI_CODE)) 40 #define _NET_WIFI_EVENT (_NET_WIFI_BASE | NET_MGMT_EVENT_BIT) 41 42 #ifdef CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX 43 #define WIFI_MGMT_SCAN_SSID_FILT_MAX CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX 44 #else 45 #define WIFI_MGMT_SCAN_SSID_FILT_MAX 1 46 #endif /* CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX */ 47 48 #ifdef CONFIG_WIFI_MGMT_SCAN_CHAN_MAX_MANUAL 49 #define WIFI_MGMT_SCAN_CHAN_MAX_MANUAL CONFIG_WIFI_MGMT_SCAN_CHAN_MAX_MANUAL 50 #else 51 #define WIFI_MGMT_SCAN_CHAN_MAX_MANUAL 1 52 #endif /* CONFIG_WIFI_MGMT_SCAN_CHAN_MAX_MANUAL */ 53 54 #ifdef CONFIG_WIFI_ENT_IDENTITY_MAX_USERS 55 #define WIFI_ENT_IDENTITY_MAX_USERS CONFIG_WIFI_ENT_IDENTITY_MAX_USERS 56 #else 57 #define WIFI_ENT_IDENTITY_MAX_USERS 1 58 #endif /* CONFIG_WIFI_ENT_IDENTITY_MAX_USERS */ 59 60 #define WIFI_MGMT_BAND_STR_SIZE_MAX 8 61 #define WIFI_MGMT_SCAN_MAX_BSS_CNT 65535 62 63 #define WIFI_MGMT_SKIP_INACTIVITY_POLL IS_ENABLED(CONFIG_WIFI_MGMT_AP_STA_SKIP_INACTIVITY_POLL) 64 /** @endcond */ 65 66 /** @brief Wi-Fi management commands */ 67 enum net_request_wifi_cmd { 68 /** Scan for Wi-Fi networks */ 69 NET_REQUEST_WIFI_CMD_SCAN = 1, 70 /** Connect to a Wi-Fi network */ 71 NET_REQUEST_WIFI_CMD_CONNECT, 72 /** Disconnect from a Wi-Fi network */ 73 NET_REQUEST_WIFI_CMD_DISCONNECT, 74 /** Enable AP mode */ 75 NET_REQUEST_WIFI_CMD_AP_ENABLE, 76 /** Disable AP mode */ 77 NET_REQUEST_WIFI_CMD_AP_DISABLE, 78 /** Set AP RTS threshold */ 79 NET_REQUEST_WIFI_CMD_AP_RTS_THRESHOLD, 80 /** Get interface status */ 81 NET_REQUEST_WIFI_CMD_IFACE_STATUS, 82 /** Set or get 11k status */ 83 NET_REQUEST_WIFI_CMD_11K_CONFIG, 84 /** Send 11k neighbor request */ 85 NET_REQUEST_WIFI_CMD_11K_NEIGHBOR_REQUEST, 86 /** Set power save status */ 87 NET_REQUEST_WIFI_CMD_PS, 88 /** Setup or teardown TWT flow */ 89 NET_REQUEST_WIFI_CMD_TWT, 90 /** Setup BTWT flow */ 91 NET_REQUEST_WIFI_CMD_BTWT, 92 /** Get power save config */ 93 NET_REQUEST_WIFI_CMD_PS_CONFIG, 94 /** Set or get regulatory domain */ 95 NET_REQUEST_WIFI_CMD_REG_DOMAIN, 96 /** Set or get Mode of operation */ 97 NET_REQUEST_WIFI_CMD_MODE, 98 /** Set or get packet filter setting for current mode */ 99 NET_REQUEST_WIFI_CMD_PACKET_FILTER, 100 /** Set or get Wi-Fi channel for Monitor or TX-Injection mode */ 101 NET_REQUEST_WIFI_CMD_CHANNEL, 102 /** Disconnect a STA from AP */ 103 NET_REQUEST_WIFI_CMD_AP_STA_DISCONNECT, 104 /** Get Wi-Fi driver and Firmware versions */ 105 NET_REQUEST_WIFI_CMD_VERSION, 106 /** Get Wi-Fi latest connection parameters */ 107 NET_REQUEST_WIFI_CMD_CONN_PARAMS, 108 /** Set RTS threshold */ 109 NET_REQUEST_WIFI_CMD_RTS_THRESHOLD, 110 /** Configure AP parameter */ 111 NET_REQUEST_WIFI_CMD_AP_CONFIG_PARAM, 112 /** DPP actions */ 113 NET_REQUEST_WIFI_CMD_DPP, 114 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM 115 /** BSS transition management query */ 116 NET_REQUEST_WIFI_CMD_BTM_QUERY, 117 #endif 118 /** Flush PMKSA cache entries */ 119 NET_REQUEST_WIFI_CMD_PMKSA_FLUSH, 120 /** Set enterprise mode credential */ 121 NET_REQUEST_WIFI_CMD_ENTERPRISE_CREDS, 122 /** Get RTS threshold */ 123 NET_REQUEST_WIFI_CMD_RTS_THRESHOLD_CONFIG, 124 /** WPS config */ 125 NET_REQUEST_WIFI_CMD_WPS_CONFIG, 126 #ifdef CONFIG_WIFI_CREDENTIALS_CONNECT_STORED 127 /** Connect to APs stored using wifi_credentials library. */ 128 NET_REQUEST_WIFI_CMD_CONNECT_STORED, 129 #endif 130 /** Start roaming */ 131 NET_REQUEST_WIFI_CMD_START_ROAMING, 132 /** Neighbor report complete */ 133 NET_REQUEST_WIFI_CMD_NEIGHBOR_REP_COMPLETE, 134 /** Specific scan */ 135 NET_REQUEST_WIFI_CMD_CANDIDATE_SCAN, 136 /** AP WPS config */ 137 NET_REQUEST_WIFI_CMD_AP_WPS_CONFIG, 138 /** @cond INTERNAL_HIDDEN */ 139 NET_REQUEST_WIFI_CMD_MAX 140 /** @endcond */ 141 }; 142 143 /** Request a Wi-Fi scan */ 144 #define NET_REQUEST_WIFI_SCAN \ 145 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_SCAN) 146 147 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_SCAN); 148 149 /** Request a Wi-Fi connect */ 150 #define NET_REQUEST_WIFI_CONNECT \ 151 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CONNECT) 152 153 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CONNECT); 154 155 /** Request a Wi-Fi disconnect */ 156 #define NET_REQUEST_WIFI_DISCONNECT \ 157 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_DISCONNECT) 158 159 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_DISCONNECT); 160 161 /** Request a Wi-Fi access point enable */ 162 #define NET_REQUEST_WIFI_AP_ENABLE \ 163 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_AP_ENABLE) 164 165 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_ENABLE); 166 167 /** Request a Wi-Fi access point disable */ 168 #define NET_REQUEST_WIFI_AP_DISABLE \ 169 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_AP_DISABLE) 170 171 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_DISABLE); 172 173 /** Request a Wi-Fi RTS threshold */ 174 #define NET_REQUEST_WIFI_AP_RTS_THRESHOLD \ 175 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_AP_RTS_THRESHOLD) 176 177 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_RTS_THRESHOLD); 178 179 /** Request a Wi-Fi network interface status */ 180 #define NET_REQUEST_WIFI_IFACE_STATUS \ 181 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_IFACE_STATUS) 182 183 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_IFACE_STATUS); 184 185 #define NET_REQUEST_WIFI_11K_CONFIG \ 186 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_11K_CONFIG) 187 188 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_11K_CONFIG); 189 190 #define NET_REQUEST_WIFI_11K_NEIGHBOR_REQUEST \ 191 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_11K_NEIGHBOR_REQUEST) 192 193 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_11K_NEIGHBOR_REQUEST); 194 195 /** Request a Wi-Fi power save */ 196 #define NET_REQUEST_WIFI_PS \ 197 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PS) 198 199 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_PS); 200 201 /** Request a Wi-Fi TWT */ 202 #define NET_REQUEST_WIFI_TWT \ 203 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_TWT) 204 205 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_TWT); 206 207 #define NET_REQUEST_WIFI_BTWT \ 208 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_BTWT) 209 210 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_BTWT); 211 212 /** Request a Wi-Fi power save configuration */ 213 #define NET_REQUEST_WIFI_PS_CONFIG \ 214 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PS_CONFIG) 215 216 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_PS_CONFIG); 217 218 /** Request a Wi-Fi regulatory domain */ 219 #define NET_REQUEST_WIFI_REG_DOMAIN \ 220 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_REG_DOMAIN) 221 222 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_REG_DOMAIN); 223 224 /** Request current Wi-Fi mode */ 225 #define NET_REQUEST_WIFI_MODE \ 226 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_MODE) 227 228 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_MODE); 229 230 /** Request Wi-Fi packet filter */ 231 #define NET_REQUEST_WIFI_PACKET_FILTER \ 232 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PACKET_FILTER) 233 234 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_PACKET_FILTER); 235 236 /** Request a Wi-Fi channel */ 237 #define NET_REQUEST_WIFI_CHANNEL \ 238 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CHANNEL) 239 240 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CHANNEL); 241 242 /** Request a Wi-Fi access point to disconnect a station */ 243 #define NET_REQUEST_WIFI_AP_STA_DISCONNECT \ 244 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_AP_STA_DISCONNECT) 245 246 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_STA_DISCONNECT); 247 248 /** Request a Wi-Fi version */ 249 #define NET_REQUEST_WIFI_VERSION \ 250 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_VERSION) 251 252 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_VERSION); 253 254 /** Request a Wi-Fi connection parameters */ 255 #define NET_REQUEST_WIFI_CONN_PARAMS \ 256 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CONN_PARAMS) 257 258 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CONN_PARAMS); 259 260 /** Request a Wi-Fi RTS threshold */ 261 #define NET_REQUEST_WIFI_RTS_THRESHOLD \ 262 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_RTS_THRESHOLD) 263 264 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_RTS_THRESHOLD); 265 266 /** Request a Wi-Fi AP parameters configuration */ 267 #define NET_REQUEST_WIFI_AP_CONFIG_PARAM \ 268 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_AP_CONFIG_PARAM) 269 270 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_CONFIG_PARAM); 271 272 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP 273 /** Request a Wi-Fi DPP operation */ 274 #define NET_REQUEST_WIFI_DPP \ 275 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_DPP) 276 277 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_DPP); 278 #endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ 279 280 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM 281 /** Request a Wi-Fi BTM query */ 282 #define NET_REQUEST_WIFI_BTM_QUERY (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_BTM_QUERY) 283 284 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_BTM_QUERY); 285 #endif 286 287 /** Request a Wi-Fi PMKSA cache entries flush */ 288 #define NET_REQUEST_WIFI_PMKSA_FLUSH \ 289 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PMKSA_FLUSH) 290 291 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_PMKSA_FLUSH); 292 293 /** Set Wi-Fi enterprise mode CA/client Cert and key */ 294 #define NET_REQUEST_WIFI_ENTERPRISE_CREDS \ 295 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_ENTERPRISE_CREDS) 296 297 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_ENTERPRISE_CREDS); 298 299 /** Request a Wi-Fi RTS threshold configuration */ 300 #define NET_REQUEST_WIFI_RTS_THRESHOLD_CONFIG \ 301 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_RTS_THRESHOLD_CONFIG) 302 303 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_RTS_THRESHOLD_CONFIG); 304 305 #define NET_REQUEST_WIFI_WPS_CONFIG (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_WPS_CONFIG) 306 307 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_WPS_CONFIG); 308 #ifdef CONFIG_WIFI_CREDENTIALS_CONNECT_STORED 309 #define NET_REQUEST_WIFI_CONNECT_STORED (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CONNECT_STORED) 310 311 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CONNECT_STORED); 312 #endif 313 314 #define NET_REQUEST_WIFI_START_ROAMING \ 315 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_START_ROAMING) 316 317 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_START_ROAMING); 318 319 #define NET_REQUEST_WIFI_NEIGHBOR_REP_COMPLETE \ 320 (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_NEIGHBOR_REP_COMPLETE) 321 322 NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_NEIGHBOR_REP_COMPLETE); 323 324 /** @brief Wi-Fi management events */ 325 enum net_event_wifi_cmd { 326 /** Scan results available */ 327 NET_EVENT_WIFI_CMD_SCAN_RESULT = 1, 328 /** Scan done */ 329 NET_EVENT_WIFI_CMD_SCAN_DONE, 330 /** Connect result */ 331 NET_EVENT_WIFI_CMD_CONNECT_RESULT, 332 /** Disconnect result */ 333 NET_EVENT_WIFI_CMD_DISCONNECT_RESULT, 334 /** Interface status */ 335 NET_EVENT_WIFI_CMD_IFACE_STATUS, 336 /** TWT events */ 337 NET_EVENT_WIFI_CMD_TWT, 338 /** TWT sleep status: awake or sleeping, can be used by application 339 * to determine if it can send data or not. 340 */ 341 NET_EVENT_WIFI_CMD_TWT_SLEEP_STATE, 342 /** Raw scan results available */ 343 NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT, 344 /** Disconnect complete */ 345 NET_EVENT_WIFI_CMD_DISCONNECT_COMPLETE, 346 /** Signal change event */ 347 NET_EVENT_WIFI_CMD_SIGNAL_CHANGE, 348 /** Neighbor Report */ 349 NET_EVENT_WIFI_CMD_NEIGHBOR_REP_RECEIVED, 350 /** Neighbor Report complete */ 351 NET_EVENT_WIFI_CMD_NEIGHBOR_REP_COMPLETE, 352 /** AP mode enable result */ 353 NET_EVENT_WIFI_CMD_AP_ENABLE_RESULT, 354 /** AP mode disable result */ 355 NET_EVENT_WIFI_CMD_AP_DISABLE_RESULT, 356 /** STA connected to AP */ 357 NET_EVENT_WIFI_CMD_AP_STA_CONNECTED, 358 /** STA disconnected from AP */ 359 NET_EVENT_WIFI_CMD_AP_STA_DISCONNECTED, 360 /** Supplicant specific event */ 361 NET_EVENT_WIFI_CMD_SUPPLICANT, 362 }; 363 364 /** Event emitted for Wi-Fi scan result */ 365 #define NET_EVENT_WIFI_SCAN_RESULT \ 366 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_SCAN_RESULT) 367 368 /** Event emitted when Wi-Fi scan is done */ 369 #define NET_EVENT_WIFI_SCAN_DONE \ 370 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_SCAN_DONE) 371 372 /** Event emitted for Wi-Fi connect result */ 373 #define NET_EVENT_WIFI_CONNECT_RESULT \ 374 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_CONNECT_RESULT) 375 376 /** Event emitted for Wi-Fi disconnect result */ 377 #define NET_EVENT_WIFI_DISCONNECT_RESULT \ 378 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_DISCONNECT_RESULT) 379 380 /** Event emitted for Wi-Fi network interface status */ 381 #define NET_EVENT_WIFI_IFACE_STATUS \ 382 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_IFACE_STATUS) 383 384 /** Event emitted for Wi-Fi TWT information */ 385 #define NET_EVENT_WIFI_TWT \ 386 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_TWT) 387 388 /** Event emitted for Wi-Fi TWT sleep state */ 389 #define NET_EVENT_WIFI_TWT_SLEEP_STATE \ 390 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_TWT_SLEEP_STATE) 391 392 /** Event emitted for Wi-Fi raw scan result */ 393 #define NET_EVENT_WIFI_RAW_SCAN_RESULT \ 394 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT) 395 396 /** Event emitted Wi-Fi disconnect is completed */ 397 #define NET_EVENT_WIFI_DISCONNECT_COMPLETE \ 398 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_DISCONNECT_COMPLETE) 399 400 /** Event signal change of connected AP */ 401 #define NET_EVENT_WIFI_SIGNAL_CHANGE \ 402 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_SIGNAL_CHANGE) 403 404 /** Event Neighbor Report Completed */ 405 #define NET_EVENT_WIFI_NEIGHBOR_REP_COMP \ 406 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_NEIGHBOR_REP_COMPLETE) 407 408 /** Event emitted for Wi-Fi access point enable result */ 409 #define NET_EVENT_WIFI_AP_ENABLE_RESULT \ 410 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_AP_ENABLE_RESULT) 411 412 /** Event emitted for Wi-Fi access point disable result */ 413 #define NET_EVENT_WIFI_AP_DISABLE_RESULT \ 414 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_AP_DISABLE_RESULT) 415 416 /** Event emitted when Wi-Fi station is connected in AP mode */ 417 #define NET_EVENT_WIFI_AP_STA_CONNECTED \ 418 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_AP_STA_CONNECTED) 419 420 /** Event emitted Wi-Fi station is disconnected from AP */ 421 #define NET_EVENT_WIFI_AP_STA_DISCONNECTED \ 422 (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_AP_STA_DISCONNECTED) 423 424 /** @brief Wi-Fi version */ 425 struct wifi_version { 426 /** Driver version */ 427 const char *drv_version; 428 /** Firmware version */ 429 const char *fw_version; 430 }; 431 432 /** 433 * @brief Wi-Fi structure to uniquely identify a band-channel pair 434 */ 435 struct wifi_band_channel { 436 /** Frequency band */ 437 uint8_t band; 438 /** Channel */ 439 uint8_t channel; 440 }; 441 442 /** 443 * @brief Wi-Fi scan parameters structure. 444 * Used to specify parameters which can control how the Wi-Fi scan 445 * is performed. 446 */ 447 struct wifi_scan_params { 448 /** Scan type, see enum wifi_scan_type. 449 * 450 * The scan_type is only a hint to the underlying Wi-Fi chip for the 451 * preferred mode of scan. The actual mode of scan can depend on factors 452 * such as the Wi-Fi chip implementation support, regulatory domain 453 * restrictions etc. 454 */ 455 enum wifi_scan_type scan_type; 456 /** Bitmap of bands to be scanned. 457 * Refer to ::wifi_frequency_bands for bit position of each band. 458 */ 459 uint8_t bands; 460 /** Active scan dwell time (in ms) on a channel. 461 */ 462 uint16_t dwell_time_active; 463 /** Passive scan dwell time (in ms) on a channel. 464 */ 465 uint16_t dwell_time_passive; 466 /** Array of SSID strings to scan. 467 */ 468 const char *ssids[WIFI_MGMT_SCAN_SSID_FILT_MAX]; 469 /** Specifies the maximum number of scan results to return. These results would be the 470 * BSSIDS with the best RSSI values, in all the scanned channels. This should only be 471 * used to limit the number of returned scan results, and cannot be counted upon to limit 472 * the scan time, since the underlying Wi-Fi chip might have to scan all the channels to 473 * find the max_bss_cnt number of APs with the best signal strengths. A value of 0 474 * signifies that there is no restriction on the number of scan results to be returned. 475 */ 476 uint16_t max_bss_cnt; 477 /** Channel information array indexed on Wi-Fi frequency bands and channels within that 478 * band. 479 * E.g. to scan channel 6 and 11 on the 2.4 GHz band, channel 36 on the 5 GHz band: 480 * @code{.c} 481 * chan[0] = {WIFI_FREQ_BAND_2_4_GHZ, 6}; 482 * chan[1] = {WIFI_FREQ_BAND_2_4_GHZ, 11}; 483 * chan[2] = {WIFI_FREQ_BAND_5_GHZ, 36}; 484 * @endcode 485 * 486 * This list specifies the channels to be __considered for scan__. The underlying 487 * Wi-Fi chip can silently omit some channels due to various reasons such as channels 488 * not conforming to regulatory restrictions etc. The invoker of the API should 489 * ensure that the channels specified follow regulatory rules. 490 */ 491 struct wifi_band_channel band_chan[WIFI_MGMT_SCAN_CHAN_MAX_MANUAL]; 492 }; 493 494 /** @brief Wi-Fi scan result, each result is provided to the net_mgmt_event_callback 495 * via its info attribute (see net_mgmt.h) 496 */ 497 struct wifi_scan_result { 498 /** SSID */ 499 uint8_t ssid[WIFI_SSID_MAX_LEN + 1]; 500 /** SSID length */ 501 uint8_t ssid_length; 502 /** Frequency band */ 503 uint8_t band; 504 /** Channel */ 505 uint8_t channel; 506 /** Security type */ 507 enum wifi_security_type security; 508 /** MFP options */ 509 enum wifi_mfp_options mfp; 510 /** RSSI */ 511 int8_t rssi; 512 /** BSSID */ 513 uint8_t mac[WIFI_MAC_ADDR_LEN]; 514 /** BSSID length */ 515 uint8_t mac_length; 516 }; 517 518 /** @brief Wi-Fi connect request parameters */ 519 struct wifi_connect_req_params { 520 /** SSID */ 521 const uint8_t *ssid; 522 /** SSID length */ 523 uint8_t ssid_length; /* Max 32 */ 524 /** Pre-shared key */ 525 const uint8_t *psk; 526 /** Pre-shared key length */ 527 uint8_t psk_length; /* Min 8 - Max 64 */ 528 /** SAE password (same as PSK but with no length restrictions), optional */ 529 const uint8_t *sae_password; 530 /** SAE password length */ 531 uint8_t sae_password_length; /* No length restrictions */ 532 /** Frequency band */ 533 uint8_t band; 534 /** Channel */ 535 uint8_t channel; 536 /** Security type */ 537 enum wifi_security_type security; 538 /** MFP options */ 539 enum wifi_mfp_options mfp; 540 /** BSSID */ 541 uint8_t bssid[WIFI_MAC_ADDR_LEN]; 542 /** Connect timeout in seconds, SYS_FOREVER_MS for no timeout */ 543 int timeout; 544 /** anonymous identity */ 545 const uint8_t *anon_id; 546 /** anon_id length, max 64 */ 547 uint8_t aid_length; 548 /** Private key passwd for enterprise mode */ 549 const uint8_t *key_passwd; 550 /** Private key passwd length, max 128 */ 551 uint8_t key_passwd_length; 552 /** private key2 passwd */ 553 const uint8_t *key2_passwd; 554 /** key2 passwd length, max 128 */ 555 uint8_t key2_passwd_length; 556 /** suiteb or suiteb-192 */ 557 uint8_t suiteb_type; 558 /** TLS cipher */ 559 uint8_t TLS_cipher; 560 /** eap version */ 561 int eap_ver; 562 /** Identity for EAP */ 563 const uint8_t *eap_identity; 564 /** eap identity length, max 64 */ 565 uint8_t eap_id_length; 566 /** Password string for EAP. */ 567 const uint8_t *eap_password; 568 /** eap passwd length, max 128 */ 569 uint8_t eap_passwd_length; 570 /** Fast BSS Transition used */ 571 bool ft_used; 572 /** Number of EAP users */ 573 int nusers; 574 /** Number of EAP passwds */ 575 uint8_t passwds; 576 /** User Identities */ 577 const uint8_t *identities[WIFI_ENT_IDENTITY_MAX_USERS]; 578 /** User Passwords */ 579 const uint8_t *passwords[WIFI_ENT_IDENTITY_MAX_USERS]; 580 /** Hidden SSID configure 581 * 0: disabled (default) 582 * 1: send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID 583 * 2: clear SSID, but keep the original length and ignore probe request for broadcast SSID 584 */ 585 uint8_t ignore_broadcast_ssid; 586 /** Parameter used for frequency band */ 587 enum wifi_frequency_bandwidths bandwidth; 588 }; 589 590 /** @brief Wi-Fi connect result codes. To be overlaid on top of \ref wifi_status 591 * in the connect result event for detailed status. 592 */ 593 enum wifi_conn_status { 594 /** Connection successful */ 595 WIFI_STATUS_CONN_SUCCESS = 0, 596 /** Connection failed - generic failure */ 597 WIFI_STATUS_CONN_FAIL, 598 /** Connection failed - wrong password 599 * Few possible reasons for 4-way handshake failure that we can guess are as follows: 600 * 1) Incorrect key 601 * 2) EAPoL frames lost causing timeout 602 * 603 * #1 is the likely cause, so, we convey to the user that it is due to 604 * Wrong passphrase/password. 605 */ 606 WIFI_STATUS_CONN_WRONG_PASSWORD, 607 /** Connection timed out */ 608 WIFI_STATUS_CONN_TIMEOUT, 609 /** Connection failed - AP not found */ 610 WIFI_STATUS_CONN_AP_NOT_FOUND, 611 /** Last connection status */ 612 WIFI_STATUS_CONN_LAST_STATUS, 613 /** Connection disconnected status */ 614 WIFI_STATUS_DISCONN_FIRST_STATUS = WIFI_STATUS_CONN_LAST_STATUS, 615 }; 616 617 /** @brief Wi-Fi disconnect reason codes. To be overlaid on top of \ref wifi_status 618 * in the disconnect result event for detailed reason. 619 */ 620 enum wifi_disconn_reason { 621 /** Success, overload status as reason */ 622 WIFI_REASON_DISCONN_SUCCESS = 0, 623 /** Unspecified reason */ 624 WIFI_REASON_DISCONN_UNSPECIFIED, 625 /** Disconnected due to user request */ 626 WIFI_REASON_DISCONN_USER_REQUEST, 627 /** Disconnected due to AP leaving */ 628 WIFI_REASON_DISCONN_AP_LEAVING, 629 /** Disconnected due to inactivity */ 630 WIFI_REASON_DISCONN_INACTIVITY, 631 }; 632 633 /** @brief Wi-Fi AP mode result codes. To be overlaid on top of \ref wifi_status 634 * in the AP mode enable or disable result event for detailed status. 635 */ 636 enum wifi_ap_status { 637 /** AP mode enable or disable successful */ 638 WIFI_STATUS_AP_SUCCESS = 0, 639 /** AP mode enable or disable failed - generic failure */ 640 WIFI_STATUS_AP_FAIL, 641 /** AP mode enable failed - channel not supported */ 642 WIFI_STATUS_AP_CHANNEL_NOT_SUPPORTED, 643 /** AP mode enable failed - channel not allowed */ 644 WIFI_STATUS_AP_CHANNEL_NOT_ALLOWED, 645 /** AP mode enable failed - SSID not allowed */ 646 WIFI_STATUS_AP_SSID_NOT_ALLOWED, 647 /** AP mode enable failed - authentication type not supported */ 648 WIFI_STATUS_AP_AUTH_TYPE_NOT_SUPPORTED, 649 /** AP mode enable failed - operation not supported */ 650 WIFI_STATUS_AP_OP_NOT_SUPPORTED, 651 /** AP mode enable failed - operation not permitted */ 652 WIFI_STATUS_AP_OP_NOT_PERMITTED, 653 }; 654 655 /** @brief Generic Wi-Fi status for commands and events */ 656 struct wifi_status { 657 union { 658 /** Status value */ 659 int status; 660 /** Connection status */ 661 enum wifi_conn_status conn_status; 662 /** Disconnection reason status */ 663 enum wifi_disconn_reason disconn_reason; 664 /** Access point status */ 665 enum wifi_ap_status ap_status; 666 }; 667 }; 668 669 /** @brief Wi-Fi interface status */ 670 struct wifi_iface_status { 671 /** Interface state, see enum wifi_iface_state */ 672 int state; 673 /** SSID length */ 674 unsigned int ssid_len; 675 /** SSID */ 676 char ssid[WIFI_SSID_MAX_LEN + 1]; 677 /** BSSID */ 678 char bssid[WIFI_MAC_ADDR_LEN]; 679 /** Frequency band */ 680 enum wifi_frequency_bands band; 681 /** Channel */ 682 unsigned int channel; 683 /** Interface mode, see enum wifi_iface_mode */ 684 enum wifi_iface_mode iface_mode; 685 /** Link mode, see enum wifi_link_mode */ 686 enum wifi_link_mode link_mode; 687 /** Security type, see enum wifi_security_type */ 688 enum wifi_security_type security; 689 /** MFP options, see enum wifi_mfp_options */ 690 enum wifi_mfp_options mfp; 691 /** RSSI */ 692 int rssi; 693 /** DTIM period */ 694 unsigned char dtim_period; 695 /** Beacon interval */ 696 unsigned short beacon_interval; 697 /** is TWT capable? */ 698 bool twt_capable; 699 /** The current 802.11 PHY TX data rate (in Mbps) */ 700 int current_phy_tx_rate; 701 }; 702 703 /** @brief Wi-Fi power save parameters */ 704 struct wifi_ps_params { 705 /** Power save state */ 706 enum wifi_ps enabled; 707 /** Listen interval */ 708 unsigned short listen_interval; 709 /** Wi-Fi power save wakeup mode */ 710 enum wifi_ps_wakeup_mode wakeup_mode; 711 /** Wi-Fi power save mode */ 712 enum wifi_ps_mode mode; 713 /** Wi-Fi power save timeout 714 * 715 * This is the time out to wait after sending a TX packet 716 * before going back to power save (in ms) to receive any replies 717 * from the AP. Zero means this feature is disabled. 718 * 719 * It's a tradeoff between power consumption and latency. 720 */ 721 unsigned int timeout_ms; 722 /** Wi-Fi power save type */ 723 enum wifi_ps_param_type type; 724 /** Wi-Fi power save fail reason */ 725 enum wifi_config_ps_param_fail_reason fail_reason; 726 /** Wi-Fi power save exit strategy */ 727 enum wifi_ps_exit_strategy exit_strategy; 728 }; 729 730 /** @brief Wi-Fi TWT parameters */ 731 struct wifi_twt_params { 732 /** TWT operation, see enum wifi_twt_operation */ 733 enum wifi_twt_operation operation; 734 /** TWT negotiation type, see enum wifi_twt_negotiation_type */ 735 enum wifi_twt_negotiation_type negotiation_type; 736 /** TWT setup command, see enum wifi_twt_setup_cmd */ 737 enum wifi_twt_setup_cmd setup_cmd; 738 /** TWT setup response status, see enum wifi_twt_setup_resp_status */ 739 enum wifi_twt_setup_resp_status resp_status; 740 /** TWT teardown cmd status, see enum wifi_twt_teardown_status */ 741 enum wifi_twt_teardown_status teardown_status; 742 /** Dialog token, used to map requests to responses */ 743 uint8_t dialog_token; 744 /** Flow ID, used to map setup with teardown */ 745 uint8_t flow_id; 746 union { 747 /** Setup specific parameters */ 748 struct { 749 /**Interval = Wake up time + Sleeping time */ 750 uint64_t twt_interval; 751 /** Requestor or responder */ 752 bool responder; 753 /** Trigger enabled or disabled */ 754 bool trigger; 755 /** Implicit or explicit */ 756 bool implicit; 757 /** Announced or unannounced */ 758 bool announce; 759 /** Wake up time */ 760 uint32_t twt_wake_interval; 761 /** Wake ahead notification is sent earlier than 762 * TWT Service period (SP) start based on this duration. 763 * This should give applications ample time to 764 * prepare the data before TWT SP starts. 765 */ 766 uint32_t twt_wake_ahead_duration; 767 /** TWT info enabled or disable */ 768 bool twt_info_disable; 769 /** TWT exponent */ 770 uint8_t twt_exponent; 771 /** TWT Mantissa Range: [0-sizeof(UINT16)] */ 772 uint16_t twt_mantissa; 773 } setup; 774 /** Setup specific parameters */ 775 struct { 776 /** Broadcast TWT AP config */ 777 uint16_t sub_id; 778 /** Range 64-255 */ 779 uint8_t nominal_wake; 780 /** Max STA support */ 781 uint8_t max_sta_support; 782 /** TWT mantissa */ 783 uint16_t twt_mantissa; 784 /** TWT offset */ 785 uint16_t twt_offset; 786 /** TWT exponent */ 787 uint8_t twt_exponent; 788 /** SP gap */ 789 uint8_t sp_gap; 790 } btwt; 791 /** Teardown specific parameters */ 792 struct { 793 /** Teardown all flows */ 794 bool teardown_all; 795 } teardown; 796 }; 797 /** TWT fail reason, see enum wifi_twt_fail_reason */ 798 enum wifi_twt_fail_reason fail_reason; 799 }; 800 801 /** @cond INTERNAL_HIDDEN */ 802 803 /* Flow ID is only 3 bits */ 804 #define WIFI_MAX_TWT_FLOWS 8 805 #define WIFI_MAX_TWT_INTERVAL_US (LONG_MAX - 1) 806 /* 256 (u8) * 1TU */ 807 #define WIFI_MAX_TWT_WAKE_INTERVAL_US 262144 808 #define WIFI_MAX_TWT_WAKE_AHEAD_DURATION_US (LONG_MAX - 1) 809 #define WIFI_MAX_TWT_EXPONENT 31 810 811 /** @endcond */ 812 813 /** @brief Wi-Fi TWT flow information */ 814 struct wifi_twt_flow_info { 815 /** Interval = Wake up time + Sleeping time */ 816 uint64_t twt_interval; 817 /** Dialog token, used to map requests to responses */ 818 uint8_t dialog_token; 819 /** Flow ID, used to map setup with teardown */ 820 uint8_t flow_id; 821 /** TWT negotiation type, see enum wifi_twt_negotiation_type */ 822 enum wifi_twt_negotiation_type negotiation_type; 823 /** Requestor or responder */ 824 bool responder; 825 /** Trigger enabled or disabled */ 826 bool trigger; 827 /** Implicit or explicit */ 828 bool implicit; 829 /** Announced or unannounced */ 830 bool announce; 831 /** Wake up time */ 832 uint32_t twt_wake_interval; 833 /** Wake ahead duration */ 834 uint32_t twt_wake_ahead_duration; 835 }; 836 837 /** Wi-Fi enterprise mode credentials */ 838 struct wifi_enterprise_creds_params { 839 /** CA certification */ 840 uint8_t *ca_cert; 841 /** CA certification length */ 842 uint32_t ca_cert_len; 843 /** Client certification */ 844 uint8_t *client_cert; 845 /** Client certification length */ 846 uint32_t client_cert_len; 847 /** Client key */ 848 uint8_t *client_key; 849 /** Client key length */ 850 uint32_t client_key_len; 851 /** CA certification of phase2*/ 852 uint8_t *ca_cert2; 853 /** Phase2 CA certification length */ 854 uint32_t ca_cert2_len; 855 /** Client certification of phase2*/ 856 uint8_t *client_cert2; 857 /** Phase2 Client certification length */ 858 uint32_t client_cert2_len; 859 /** Client key of phase2*/ 860 uint8_t *client_key2; 861 /** Phase2 Client key length */ 862 uint32_t client_key2_len; 863 /** Server certification */ 864 uint8_t *server_cert; 865 /** Server certification length */ 866 uint32_t server_cert_len; 867 /** Server key */ 868 uint8_t *server_key; 869 /** Server key length */ 870 uint32_t server_key_len; 871 /** Diffie–Hellman parameter */ 872 uint8_t *dh_param; 873 /** Diffie–Hellman parameter length */ 874 uint32_t dh_param_len; 875 }; 876 877 /** @brief Wi-Fi power save configuration */ 878 struct wifi_ps_config { 879 /** Number of TWT flows */ 880 char num_twt_flows; 881 /** TWT flow details */ 882 struct wifi_twt_flow_info twt_flows[WIFI_MAX_TWT_FLOWS]; 883 /** Power save configuration */ 884 struct wifi_ps_params ps_params; 885 }; 886 887 /** @brief Generic get/set operation for any command*/ 888 enum wifi_mgmt_op { 889 /** Get operation */ 890 WIFI_MGMT_GET = 0, 891 /** Set operation */ 892 WIFI_MGMT_SET = 1, 893 }; 894 895 /** Wi-Fi 11k parameters */ 896 struct wifi_11k_params { 897 /** 11k command operation */ 898 enum wifi_mgmt_op oper; 899 /** 11k enable/disable */ 900 bool enable_11k; 901 /** SSID */ 902 uint8_t ssid[WIFI_SSID_MAX_LEN + 1]; 903 }; 904 905 /** Max regulatory channel number */ 906 #define MAX_REG_CHAN_NUM 42 907 908 /** @brief Per-channel regulatory attributes */ 909 struct wifi_reg_chan_info { 910 /** Center frequency in MHz */ 911 unsigned short center_frequency; 912 /** Maximum transmission power (in dBm) */ 913 unsigned short max_power:8; 914 /** Is channel supported or not */ 915 unsigned short supported:1; 916 /** Passive transmissions only */ 917 unsigned short passive_only:1; 918 /** Is a DFS channel */ 919 unsigned short dfs:1; 920 } __packed; 921 922 /** @brief Regulatory domain information or configuration */ 923 struct wifi_reg_domain { 924 /** Regulatory domain operation */ 925 enum wifi_mgmt_op oper; 926 /** Ignore all other regulatory hints over this one, the behavior is 927 * implementation specific. 928 */ 929 bool force; 930 /** Country code: ISO/IEC 3166-1 alpha-2 */ 931 uint8_t country_code[WIFI_COUNTRY_CODE_LEN]; 932 /** Number of channels supported */ 933 unsigned int num_channels; 934 /** Channels information */ 935 struct wifi_reg_chan_info *chan_info; 936 }; 937 938 /** @brief Wi-Fi TWT sleep states */ 939 enum wifi_twt_sleep_state { 940 /** TWT sleep state: sleeping */ 941 WIFI_TWT_STATE_SLEEP = 0, 942 /** TWT sleep state: awake */ 943 WIFI_TWT_STATE_AWAKE = 1, 944 }; 945 946 #if defined(CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS) || defined(__DOXYGEN__) 947 /** @brief Wi-Fi raw scan result */ 948 struct wifi_raw_scan_result { 949 /** RSSI */ 950 int8_t rssi; 951 /** Frame length */ 952 int frame_length; 953 /** Frequency */ 954 unsigned short frequency; 955 /** Raw scan data */ 956 uint8_t data[CONFIG_WIFI_MGMT_RAW_SCAN_RESULT_LENGTH]; 957 }; 958 #endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */ 959 960 /** @brief AP mode - connected STA details */ 961 struct wifi_ap_sta_info { 962 /** Link mode, see enum wifi_link_mode */ 963 enum wifi_link_mode link_mode; 964 /** MAC address */ 965 uint8_t mac[WIFI_MAC_ADDR_LEN]; 966 /** MAC address length */ 967 uint8_t mac_length; 968 /** is TWT capable ? */ 969 bool twt_capable; 970 }; 971 972 /** @cond INTERNAL_HIDDEN */ 973 974 /* for use in max info size calculations */ 975 union wifi_mgmt_events { 976 struct wifi_scan_result scan_result; 977 struct wifi_status connect_status; 978 struct wifi_iface_status iface_status; 979 #ifdef CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS 980 struct wifi_raw_scan_result raw_scan_result; 981 #endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */ 982 struct wifi_twt_params twt_params; 983 struct wifi_ap_sta_info ap_sta_info; 984 }; 985 986 /** @endcond */ 987 988 /** @brief Wi-Fi mode setup */ 989 struct wifi_mode_info { 990 /** Mode setting for a specific mode of operation */ 991 uint8_t mode; 992 /** Interface index */ 993 uint8_t if_index; 994 /** Get or set operation */ 995 enum wifi_mgmt_op oper; 996 }; 997 998 /** @brief Wi-Fi filter setting for monitor, prmoiscuous, TX-injection modes */ 999 struct wifi_filter_info { 1000 /** Filter setting */ 1001 uint8_t filter; 1002 /** Interface index */ 1003 uint8_t if_index; 1004 /** Filter buffer size */ 1005 uint16_t buffer_size; 1006 /** Get or set operation */ 1007 enum wifi_mgmt_op oper; 1008 }; 1009 1010 /** @brief Wi-Fi channel setting for monitor and TX-injection modes */ 1011 struct wifi_channel_info { 1012 /** Channel value to set */ 1013 uint16_t channel; 1014 /** Interface index */ 1015 uint8_t if_index; 1016 /** Get or set operation */ 1017 enum wifi_mgmt_op oper; 1018 }; 1019 1020 /** @cond INTERNAL_HIDDEN */ 1021 #define WIFI_AP_STA_MAX_INACTIVITY (LONG_MAX - 1) 1022 #define WIFI_AP_IEEE_80211_CAPAB_MAX_LEN 64 1023 /** @endcond */ 1024 1025 /** @brief Wi-Fi AP configuration parameter */ 1026 struct wifi_ap_config_params { 1027 /** Parameter used to identify the different AP parameters */ 1028 enum wifi_ap_config_param type; 1029 /** Parameter used for setting maximum inactivity duration for stations */ 1030 uint32_t max_inactivity; 1031 /** Parameter used for setting maximum number of stations */ 1032 uint32_t max_num_sta; 1033 /** Parameter used for frequency band */ 1034 enum wifi_frequency_bandwidths bandwidth; 1035 #if defined(CONFIG_WIFI_NM_HOSTAPD_AP) 1036 /** Parameter used for setting HT capabilities */ 1037 char ht_capab[WIFI_AP_IEEE_80211_CAPAB_MAX_LEN + 1]; 1038 /** Parameter used for setting VHT capabilities */ 1039 char vht_capab[WIFI_AP_IEEE_80211_CAPAB_MAX_LEN + 1]; 1040 #endif 1041 }; 1042 1043 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP 1044 /** @brief Wi-Fi DPP configuration parameter */ 1045 /** Wi-Fi DPP QR-CODE in string max len for SHA512 */ 1046 #define WIFI_DPP_QRCODE_MAX_LEN 255 1047 1048 /** Wi-Fi DPP operations */ 1049 enum wifi_dpp_op { 1050 /** Unset invalid operation */ 1051 WIFI_DPP_OP_INVALID = 0, 1052 /** Add configurator */ 1053 WIFI_DPP_CONFIGURATOR_ADD, 1054 /** Start DPP auth as configurator or enrollee */ 1055 WIFI_DPP_AUTH_INIT, 1056 /** Scan qr_code as parameter */ 1057 WIFI_DPP_QR_CODE, 1058 /** Start DPP chirp to send DPP announcement */ 1059 WIFI_DPP_CHIRP, 1060 /** Listen on specific frequency */ 1061 WIFI_DPP_LISTEN, 1062 /** Generate a bootstrap like qrcode */ 1063 WIFI_DPP_BOOTSTRAP_GEN, 1064 /** Get a bootstrap uri for external device to scan */ 1065 WIFI_DPP_BOOTSTRAP_GET_URI, 1066 /** Set configurator parameters */ 1067 WIFI_DPP_SET_CONF_PARAM, 1068 /** Set DPP rx response wait timeout */ 1069 WIFI_DPP_SET_WAIT_RESP_TIME, 1070 /** Reconfigure DPP network */ 1071 WIFI_DPP_RECONFIG 1072 }; 1073 1074 /** Wi-Fi DPP crypto Elliptic Curves */ 1075 enum wifi_dpp_curves { 1076 /** Unset default use P-256 */ 1077 WIFI_DPP_CURVES_DEFAULT = 0, 1078 /** prime256v1 */ 1079 WIFI_DPP_CURVES_P_256, 1080 /** secp384r1 */ 1081 WIFI_DPP_CURVES_P_384, 1082 /** secp521r1 */ 1083 WIFI_DPP_CURVES_P_512, 1084 /** brainpoolP256r1 */ 1085 WIFI_DPP_CURVES_BP_256, 1086 /** brainpoolP384r1 */ 1087 WIFI_DPP_CURVES_BP_384, 1088 /** brainpoolP512r1 */ 1089 WIFI_DPP_CURVES_BP_512 1090 }; 1091 1092 /** Wi-Fi DPP role */ 1093 enum wifi_dpp_role { 1094 /** Unset role */ 1095 WIFI_DPP_ROLE_UNSET = 0, 1096 /** Configurator passes AP config to enrollee */ 1097 WIFI_DPP_ROLE_CONFIGURATOR, 1098 /** Enrollee gets AP config and connect to AP */ 1099 WIFI_DPP_ROLE_ENROLLEE, 1100 /** Both configurator and enrollee might be chosen */ 1101 WIFI_DPP_ROLE_EITHER 1102 }; 1103 1104 /** Wi-Fi DPP security type 1105 * 1106 * current only support DPP only AKM 1107 */ 1108 enum wifi_dpp_conf { 1109 /** Unset conf */ 1110 WIFI_DPP_CONF_UNSET = 0, 1111 /** conf=sta-dpp, AKM DPP only for sta */ 1112 WIFI_DPP_CONF_STA, 1113 /** conf=ap-dpp, AKM DPP only for ap */ 1114 WIFI_DPP_CONF_AP, 1115 /** conf=query, query for AKM */ 1116 WIFI_DPP_CONF_QUERY 1117 }; 1118 1119 /** Wi-Fi DPP bootstrap type 1120 * 1121 * current default and only support QR-CODE 1122 */ 1123 enum wifi_dpp_bootstrap_type { 1124 /** Unset type */ 1125 WIFI_DPP_BOOTSTRAP_TYPE_UNSET = 0, 1126 /** qrcode */ 1127 WIFI_DPP_BOOTSTRAP_TYPE_QRCODE, 1128 /** pkex */ 1129 WIFI_DPP_BOOTSTRAP_TYPE_PKEX, 1130 /** nfc */ 1131 WIFI_DPP_BOOTSTRAP_TYPE_NFC_URI 1132 }; 1133 1134 /** Params to add DPP configurator */ 1135 struct wifi_dpp_configurator_add_params { 1136 /** ECP curves for private key */ 1137 int curve; 1138 /** ECP curves for net access key */ 1139 int net_access_key_curve; 1140 }; 1141 1142 /** Params to initiate a DPP auth procedure */ 1143 struct wifi_dpp_auth_init_params { 1144 /** Peer bootstrap id */ 1145 int peer; 1146 /** Configuration parameter id */ 1147 int configurator; 1148 /** Role configurator or enrollee */ 1149 int role; 1150 /** Security type */ 1151 int conf; 1152 /** SSID in string */ 1153 char ssid[WIFI_SSID_MAX_LEN + 1]; 1154 }; 1155 1156 /** Params to do DPP chirp */ 1157 struct wifi_dpp_chirp_params { 1158 /** Own bootstrap id */ 1159 int id; 1160 /** Chirp on frequency */ 1161 int freq; 1162 }; 1163 1164 /** Params to do DPP listen */ 1165 struct wifi_dpp_listen_params { 1166 /** Listen on frequency */ 1167 int freq; 1168 /** Role configurator or enrollee */ 1169 int role; 1170 }; 1171 1172 /** Params to generate a DPP bootstrap */ 1173 struct wifi_dpp_bootstrap_gen_params { 1174 /** Bootstrap type */ 1175 int type; 1176 /** Own operating class */ 1177 int op_class; 1178 /** Own working channel */ 1179 int chan; 1180 /** ECP curves */ 1181 int curve; 1182 /** Own mac address */ 1183 uint8_t mac[WIFI_MAC_ADDR_LEN]; 1184 }; 1185 1186 /** Params to set specific DPP configurator */ 1187 struct wifi_dpp_configurator_set_params { 1188 /** Peer bootstrap id */ 1189 int peer; 1190 /** Configuration parameter id */ 1191 int configurator; 1192 /** Role configurator or enrollee */ 1193 int role; 1194 /** Security type */ 1195 int conf; 1196 /** ECP curves for private key */ 1197 int curve; 1198 /** ECP curves for net access key */ 1199 int net_access_key_curve; 1200 /** Own mac address */ 1201 char ssid[WIFI_SSID_MAX_LEN + 1]; 1202 }; 1203 1204 /** Wi-Fi DPP params for various operations 1205 */ 1206 struct wifi_dpp_params { 1207 /** Operation enum */ 1208 int action; 1209 union { 1210 /** Params to add DPP configurator */ 1211 struct wifi_dpp_configurator_add_params configurator_add; 1212 /** Params to initiate a DPP auth procedure */ 1213 struct wifi_dpp_auth_init_params auth_init; 1214 /** Params to do DPP chirp */ 1215 struct wifi_dpp_chirp_params chirp; 1216 /** Params to do DPP listen */ 1217 struct wifi_dpp_listen_params listen; 1218 /** Params to generate a DPP bootstrap */ 1219 struct wifi_dpp_bootstrap_gen_params bootstrap_gen; 1220 /** Params to set specific DPP configurator */ 1221 struct wifi_dpp_configurator_set_params configurator_set; 1222 /** Bootstrap get uri id */ 1223 int id; 1224 /** Timeout for DPP frame response rx */ 1225 int dpp_resp_wait_time; 1226 /** network id for reconfig */ 1227 int network_id; 1228 /** DPP QR-CODE, max for SHA512 */ 1229 uint8_t dpp_qr_code[WIFI_DPP_QRCODE_MAX_LEN + 1]; 1230 /** Request response reusing request buffer. 1231 * So once a request is sent, buffer will be 1232 * fulfilled by response 1233 */ 1234 char resp[WIFI_DPP_QRCODE_MAX_LEN + 1]; 1235 }; 1236 }; 1237 #endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ 1238 1239 #define WIFI_WPS_PIN_MAX_LEN 8 1240 1241 /** Operation for WPS */ 1242 enum wifi_wps_op { 1243 /** WPS pbc */ 1244 WIFI_WPS_PBC = 0, 1245 /** Get WPS pin number */ 1246 WIFI_WPS_PIN_GET = 1, 1247 /** Set WPS pin number */ 1248 WIFI_WPS_PIN_SET = 2, 1249 }; 1250 1251 /** Wi-Fi wps setup */ 1252 struct wifi_wps_config_params { 1253 /** wps operation */ 1254 enum wifi_wps_op oper; 1255 /** pin value*/ 1256 char pin[WIFI_WPS_PIN_MAX_LEN + 1]; 1257 }; 1258 1259 /** Wi-Fi AP status 1260 */ 1261 enum wifi_sap_iface_state { 1262 WIFI_SAP_IFACE_UNINITIALIZED, 1263 WIFI_SAP_IFACE_DISABLED, 1264 WIFI_SAP_IFACE_COUNTRY_UPDATE, 1265 WIFI_SAP_IFACE_ACS, 1266 WIFI_SAP_IFACE_HT_SCAN, 1267 WIFI_SAP_IFACE_DFS, 1268 WIFI_SAP_IFACE_NO_IR, 1269 WIFI_SAP_IFACE_ENABLED 1270 }; 1271 1272 /* Extended Capabilities */ 1273 enum wifi_ext_capab { 1274 WIFI_EXT_CAPAB_20_40_COEX = 0, 1275 WIFI_EXT_CAPAB_GLK = 1, 1276 WIFI_EXT_CAPAB_EXT_CHAN_SWITCH = 2, 1277 WIFI_EXT_CAPAB_TIM_BROADCAST = 18, 1278 WIFI_EXT_CAPAB_BSS_TRANSITION = 19, 1279 }; 1280 1281 #include <zephyr/net/net_if.h> 1282 1283 /** Scan result callback 1284 * 1285 * @param iface Network interface 1286 * @param status Scan result status 1287 * @param entry Scan result entry 1288 */ 1289 typedef void (*scan_result_cb_t)(struct net_if *iface, int status, 1290 struct wifi_scan_result *entry); 1291 1292 #ifdef CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS 1293 /** Raw scan result callback 1294 * 1295 * @param iface Network interface 1296 * @param status Raw scan result status 1297 * @param entry Raw scan result entry 1298 */ 1299 typedef void (*raw_scan_result_cb_t)(struct net_if *iface, int status, 1300 struct wifi_raw_scan_result *entry); 1301 #endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */ 1302 1303 /** Wi-Fi management API */ 1304 struct wifi_mgmt_ops { 1305 /** Scan for Wi-Fi networks 1306 * 1307 * @param dev Pointer to the device structure for the driver instance. 1308 * @param params Scan parameters 1309 * @param cb Callback to be called for each result 1310 * cb parameter is the cb that should be called for each 1311 * result by the driver. The wifi mgmt part will take care of 1312 * raising the necessary event etc. 1313 * 1314 * @return 0 if ok, < 0 if error 1315 */ 1316 int (*scan)(const struct device *dev, 1317 struct wifi_scan_params *params, 1318 scan_result_cb_t cb); 1319 /** Connect to a Wi-Fi network 1320 * 1321 * @param dev Pointer to the device structure for the driver instance. 1322 * @param params Connect parameters 1323 * 1324 * @return 0 if ok, < 0 if error 1325 */ 1326 int (*connect)(const struct device *dev, 1327 struct wifi_connect_req_params *params); 1328 /** Disconnect from a Wi-Fi network 1329 * 1330 * @param dev Pointer to the device structure for the driver instance. 1331 * 1332 * @return 0 if ok, < 0 if error 1333 */ 1334 int (*disconnect)(const struct device *dev); 1335 /** Enable AP mode 1336 * 1337 * @param dev Pointer to the device structure for the driver instance. 1338 * @param params AP mode parameters 1339 * 1340 * @return 0 if ok, < 0 if error 1341 */ 1342 int (*ap_enable)(const struct device *dev, 1343 struct wifi_connect_req_params *params); 1344 /** Disable AP mode 1345 * 1346 * @param dev Pointer to the device structure for the driver instance. 1347 * 1348 * @return 0 if ok, < 0 if error 1349 */ 1350 int (*ap_disable)(const struct device *dev); 1351 /** Disconnect a STA from AP 1352 * 1353 * @param dev Pointer to the device structure for the driver instance. 1354 * @param mac MAC address of the STA to disconnect 1355 * 1356 * @return 0 if ok, < 0 if error 1357 */ 1358 int (*ap_sta_disconnect)(const struct device *dev, const uint8_t *mac); 1359 /** Get interface status 1360 * 1361 * @param dev Pointer to the device structure for the driver instance. 1362 * @param status Interface status 1363 * 1364 * @return 0 if ok, < 0 if error 1365 */ 1366 int (*iface_status)(const struct device *dev, struct wifi_iface_status *status); 1367 #if defined(CONFIG_NET_STATISTICS_WIFI) || defined(__DOXYGEN__) 1368 /** Get Wi-Fi statistics 1369 * 1370 * @param dev Pointer to the device structure for the driver instance. 1371 * @param stats Wi-Fi statistics 1372 * 1373 * @return 0 if ok, < 0 if error 1374 */ 1375 int (*get_stats)(const struct device *dev, struct net_stats_wifi *stats); 1376 /** Reset Wi-Fi statistics 1377 * 1378 * @param dev Pointer to the device structure for the driver instance. 1379 * 1380 * @return 0 if ok, < 0 if error 1381 */ 1382 int (*reset_stats)(const struct device *dev); 1383 #endif /* CONFIG_NET_STATISTICS_WIFI */ 1384 /** Set or get 11K status 1385 * 1386 * @param dev Pointer to the device structure for the driver instance. 1387 * @param params 11k parameters 1388 * 1389 * @return 0 if ok, < 0 if error 1390 */ 1391 int (*cfg_11k)(const struct device *dev, struct wifi_11k_params *params); 1392 /** Send 11k neighbor request 1393 * 1394 * @param dev Pointer to the device structure for the driver instance. 1395 * @param params 11k parameters 1396 * 1397 * @return 0 if ok, < 0 if error 1398 */ 1399 int (*send_11k_neighbor_request)(const struct device *dev, struct wifi_11k_params *params); 1400 /** Set power save status 1401 * 1402 * @param dev Pointer to the device structure for the driver instance. 1403 * @param params Power save parameters 1404 * 1405 * @return 0 if ok, < 0 if error 1406 */ 1407 int (*set_power_save)(const struct device *dev, struct wifi_ps_params *params); 1408 /** Setup or teardown TWT flow 1409 * 1410 * @param dev Pointer to the device structure for the driver instance. 1411 * @param params TWT parameters 1412 * 1413 * @return 0 if ok, < 0 if error 1414 */ 1415 int (*set_twt)(const struct device *dev, struct wifi_twt_params *params); 1416 /** Setup BTWT flow 1417 * 1418 * @param dev Pointer to the device structure for the driver instance. 1419 * @param params BTWT parameters 1420 * 1421 * @return 0 if ok, < 0 if error 1422 */ 1423 int (*set_btwt)(const struct device *dev, struct wifi_twt_params *params); 1424 /** Get power save config 1425 * 1426 * @param dev Pointer to the device structure for the driver instance. 1427 * @param config Power save config 1428 * 1429 * @return 0 if ok, < 0 if error 1430 */ 1431 int (*get_power_save_config)(const struct device *dev, struct wifi_ps_config *config); 1432 /** Set or get regulatory domain 1433 * 1434 * @param dev Pointer to the device structure for the driver instance. 1435 * @param reg_domain Regulatory domain 1436 * 1437 * @return 0 if ok, < 0 if error 1438 */ 1439 int (*reg_domain)(const struct device *dev, struct wifi_reg_domain *reg_domain); 1440 /** Set or get packet filter settings for monitor and promiscuous modes 1441 * 1442 * @param dev Pointer to the device structure for the driver instance. 1443 * @param packet filter settings 1444 * 1445 * @return 0 if ok, < 0 if error 1446 */ 1447 int (*filter)(const struct device *dev, struct wifi_filter_info *filter); 1448 /** Set or get mode of operation 1449 * 1450 * @param dev Pointer to the device structure for the driver instance. 1451 * @param mode settings 1452 * 1453 * @return 0 if ok, < 0 if error 1454 */ 1455 int (*mode)(const struct device *dev, struct wifi_mode_info *mode); 1456 /** Set or get current channel of operation 1457 * 1458 * @param dev Pointer to the device structure for the driver instance. 1459 * @param channel settings 1460 * 1461 * @return 0 if ok, < 0 if error 1462 */ 1463 int (*channel)(const struct device *dev, struct wifi_channel_info *channel); 1464 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM 1465 /** Send BTM query 1466 * 1467 * @param dev Pointer to the device structure for the driver instance. 1468 * @param reason query reason 1469 * 1470 * @return 0 if ok, < 0 if error 1471 */ 1472 int (*btm_query)(const struct device *dev, uint8_t reason); 1473 #endif 1474 /** Judge ap whether support the capability 1475 * 1476 * @param dev Pointer to the device structure for the driver instance. 1477 * @param capab is the capability to judge 1478 * 1479 * @return 1 if support, 0 if not support 1480 */ 1481 int (*bss_ext_capab)(const struct device *dev, int capab); 1482 1483 /** Send legacy scan 1484 * 1485 * @param dev Pointer to the device structure for the driver instance. 1486 * 1487 * @return 0 if ok, < 0 if error 1488 */ 1489 int (*legacy_roam)(const struct device *dev); 1490 1491 /** Get Version of WiFi driver and Firmware 1492 * 1493 * The driver that implements the get_version function must not use stack to allocate the 1494 * version information pointers that are returned as params struct members. 1495 * The version pointer parameters should point to a static memory either in ROM (preferred) 1496 * or in RAM. 1497 * 1498 * @param dev Pointer to the device structure for the driver instance 1499 * @param params Version parameters 1500 * 1501 * @return 0 if ok, < 0 if error 1502 */ 1503 int (*get_version)(const struct device *dev, struct wifi_version *params); 1504 /** Get Wi-Fi connection parameters recently used 1505 * 1506 * @param dev Pointer to the device structure for the driver instance 1507 * @param params the Wi-Fi connection parameters recently used 1508 * 1509 * @return 0 if ok, < 0 if error 1510 */ 1511 int (*get_conn_params)(const struct device *dev, struct wifi_connect_req_params *params); 1512 /** Set RTS threshold value 1513 * 1514 * @param dev Pointer to the device structure for the driver instance. 1515 * @param RTS threshold value 1516 * 1517 * @return 0 if ok, < 0 if error 1518 */ 1519 int (*set_rts_threshold)(const struct device *dev, unsigned int rts_threshold); 1520 /** Configure AP parameter 1521 * 1522 * @param dev Pointer to the device structure for the driver instance. 1523 * @param params AP mode parameter configuration parameter info 1524 * 1525 * @return 0 if ok, < 0 if error 1526 */ 1527 int (*ap_config_params)(const struct device *dev, struct wifi_ap_config_params *params); 1528 1529 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP 1530 /** Dispatch DPP operations by action enum, with or without arguments in string format 1531 * 1532 * @param dev Pointer to the device structure for the driver instance 1533 * @param params DPP action enum and parameters in string 1534 * 1535 * @return 0 if ok, < 0 if error 1536 */ 1537 int (*dpp_dispatch)(const struct device *dev, struct wifi_dpp_params *params); 1538 #endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ 1539 /** Flush PMKSA cache entries 1540 * 1541 * @param dev Pointer to the device structure for the driver instance. 1542 * 1543 * @return 0 if ok, < 0 if error 1544 */ 1545 int (*pmksa_flush)(const struct device *dev); 1546 /** Set Wi-Fi enterprise mode CA/client Cert and key 1547 * 1548 * @param dev Pointer to the device structure for the driver instance. 1549 * @param creds Pointer to the CA/client Cert and key. 1550 * 1551 * @return 0 if ok, < 0 if error 1552 */ 1553 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE 1554 int (*enterprise_creds)(const struct device *dev, 1555 struct wifi_enterprise_creds_params *creds); 1556 #endif 1557 /** Get RTS threshold value 1558 * 1559 * @param dev Pointer to the device structure for the driver instance. 1560 * @param rts_threshold Pointer to the RTS threshold value. 1561 * 1562 * @return 0 if ok, < 0 if error 1563 */ 1564 int (*get_rts_threshold)(const struct device *dev, unsigned int *rts_threshold); 1565 /** Start a WPS PBC/PIN connection 1566 * 1567 * @param dev Pointer to the device structure for the driver instance 1568 * @param params wps operarion parameters 1569 * 1570 * @return 0 if ok, < 0 if error 1571 */ 1572 int (*wps_config)(const struct device *dev, struct wifi_wps_config_params *params); 1573 /** Trigger candidate scan 1574 * 1575 * @param dev Pointer to the device structure for the driver instance 1576 * @param params Scan parameters 1577 * 1578 * @return 0 if ok, < 0 if error 1579 */ 1580 int (*candidate_scan)(const struct device *dev, struct wifi_scan_params *params); 1581 /** Start 11r roaming 1582 * 1583 * @param dev Pointer to the device structure for the driver instance 1584 * 1585 * @return 0 if ok, < 0 if error 1586 */ 1587 int (*start_11r_roaming)(const struct device *dev); 1588 }; 1589 1590 /** Wi-Fi management offload API */ 1591 struct net_wifi_mgmt_offload { 1592 /** 1593 * Mandatory to get in first position. 1594 * A network device should indeed provide a pointer on such 1595 * net_if_api structure. So we make current structure pointer 1596 * that can be casted to a net_if_api structure pointer. 1597 */ 1598 #if defined(CONFIG_WIFI_USE_NATIVE_NETWORKING) || defined(__DOXYGEN__) 1599 /** Ethernet API */ 1600 struct ethernet_api wifi_iface; 1601 #else 1602 /** Offloaded network device API */ 1603 struct offloaded_if_api wifi_iface; 1604 #endif 1605 /** Wi-Fi management API */ 1606 const struct wifi_mgmt_ops *const wifi_mgmt_api; 1607 1608 #if defined(CONFIG_WIFI_NM_WPA_SUPPLICANT) || defined(__DOXYGEN__) 1609 /** Wi-Fi supplicant driver API */ 1610 const void *wifi_drv_ops; 1611 #endif 1612 }; 1613 1614 #if defined(CONFIG_WIFI_NM_WPA_SUPPLICANT) 1615 /* Make sure wifi_drv_ops is after wifi_mgmt_api */ 1616 BUILD_ASSERT(offsetof(struct net_wifi_mgmt_offload, wifi_mgmt_api) < 1617 offsetof(struct net_wifi_mgmt_offload, wifi_drv_ops)); 1618 #endif 1619 1620 /* Make sure that the network interface API is properly setup inside 1621 * Wifi mgmt offload API struct (it is the first one). 1622 */ 1623 BUILD_ASSERT(offsetof(struct net_wifi_mgmt_offload, wifi_iface) == 0); 1624 1625 /** Wi-Fi management connect result event 1626 * 1627 * @param iface Network interface 1628 * @param status Connect result status 1629 */ 1630 void wifi_mgmt_raise_connect_result_event(struct net_if *iface, int status); 1631 1632 /** Wi-Fi management disconnect result event 1633 * 1634 * @param iface Network interface 1635 * @param status Disconnect result status 1636 */ 1637 void wifi_mgmt_raise_disconnect_result_event(struct net_if *iface, int status); 1638 1639 /** Wi-Fi management interface status event 1640 * 1641 * @param iface Network interface 1642 * @param iface_status Interface status 1643 */ 1644 void wifi_mgmt_raise_iface_status_event(struct net_if *iface, 1645 struct wifi_iface_status *iface_status); 1646 1647 /** Wi-Fi management TWT event 1648 * 1649 * @param iface Network interface 1650 * @param twt_params TWT parameters 1651 */ 1652 void wifi_mgmt_raise_twt_event(struct net_if *iface, 1653 struct wifi_twt_params *twt_params); 1654 1655 /** Wi-Fi management TWT sleep state event 1656 * 1657 * @param iface Network interface 1658 * @param twt_sleep_state TWT sleep state 1659 */ 1660 void wifi_mgmt_raise_twt_sleep_state(struct net_if *iface, int twt_sleep_state); 1661 1662 #if defined(CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS) || defined(__DOXYGEN__) 1663 /** Wi-Fi management raw scan result event 1664 * 1665 * @param iface Network interface 1666 * @param raw_scan_info Raw scan result 1667 */ 1668 void wifi_mgmt_raise_raw_scan_result_event(struct net_if *iface, 1669 struct wifi_raw_scan_result *raw_scan_info); 1670 #endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */ 1671 1672 /** Wi-Fi management disconnect complete event 1673 * 1674 * @param iface Network interface 1675 * @param status Disconnect complete status 1676 */ 1677 void wifi_mgmt_raise_disconnect_complete_event(struct net_if *iface, int status); 1678 1679 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_ROAMING 1680 /** Wi-Fi management neighbor reports event 1681 * 1682 * @param iface Network interface 1683 * @param inbuf Input buffer of neighbor reports 1684 * @param buf_len Lenghth of input buffer 1685 */ 1686 void wifi_mgmt_raise_neighbor_rep_recv_event(struct net_if *iface, 1687 char *inbuf, size_t buf_len); 1688 #endif 1689 1690 /** Wi-Fi management AP mode enable result event 1691 * 1692 * @param iface Network interface 1693 * @param status AP mode enable result status 1694 */ 1695 void wifi_mgmt_raise_ap_enable_result_event(struct net_if *iface, enum wifi_ap_status status); 1696 1697 /** Wi-Fi management AP mode disable result event 1698 * 1699 * @param iface Network interface 1700 * @param status AP mode disable result status 1701 */ 1702 void wifi_mgmt_raise_ap_disable_result_event(struct net_if *iface, enum wifi_ap_status status); 1703 1704 /** Wi-Fi management AP mode STA connected event 1705 * 1706 * @param iface Network interface 1707 * @param sta_info STA information 1708 */ 1709 void wifi_mgmt_raise_ap_sta_connected_event(struct net_if *iface, 1710 struct wifi_ap_sta_info *sta_info); 1711 1712 /** Wi-Fi management AP mode STA disconnected event 1713 * @param iface Network interface 1714 * @param sta_info STA information 1715 */ 1716 void wifi_mgmt_raise_ap_sta_disconnected_event(struct net_if *iface, 1717 struct wifi_ap_sta_info *sta_info); 1718 1719 /** 1720 * @} 1721 */ 1722 #ifdef __cplusplus 1723 } 1724 #endif 1725 1726 #endif /* ZEPHYR_INCLUDE_NET_WIFI_MGMT_H_ */ 1727