1 /* 2 * Copyright (c) 2021, The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 /** 19 * DOC: declare UCFG APIs for TWT exposed by the mlme component 20 */ 21 22 #ifndef _WLAN_MLME_TWT_UCFG_API_H_ 23 #define _WLAN_MLME_TWT_UCFG_API_H_ 24 25 #include <cfg_ucfg_api.h> 26 #include <wlan_mlme_public_struct.h> 27 #include <wlan_mlme_twt_public_struct.h> 28 #include <wlan_objmgr_psoc_obj.h> 29 #include <wlan_objmgr_global_obj.h> 30 #include <wlan_mlme_api.h> 31 #include <wlan_mlme_main.h> 32 #include <wlan_mlme_twt_api.h> 33 34 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) && \ 35 defined(WLAN_TWT_CONV_SUPPORTED) 36 static inline ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)37 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, 38 struct qdf_mac_addr *peer_mac, 39 uint8_t dialog_id) 40 { 41 return QDF_STATUS_E_NOSUPPORT; 42 } 43 44 static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)45 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) 46 { 47 return QDF_STATUS_E_NOSUPPORT; 48 } 49 50 static inline QDF_STATUS ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc * psoc,bool * val)51 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, 52 bool *val) 53 { 54 *val = false; 55 return QDF_STATUS_E_NOSUPPORT; 56 } 57 58 static inline QDF_STATUS ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc * psoc,bool val)59 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, 60 bool val) 61 { 62 return QDF_STATUS_E_NOSUPPORT; 63 } 64 65 static inline QDF_STATUS ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc * psoc,bool * val)66 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, 67 bool *val) 68 { 69 *val = false; 70 return QDF_STATUS_E_NOSUPPORT; 71 } 72 73 static inline QDF_STATUS ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc * psoc,bool val)74 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, 75 bool val) 76 { 77 return QDF_STATUS_E_NOSUPPORT; 78 } 79 80 static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)81 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, 82 struct qdf_mac_addr *peer_mac, uint8_t dialog_id) 83 { 84 return 0; 85 } 86 87 static inline void ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)88 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc, 89 struct qdf_mac_addr *peer_mac, 90 uint8_t dialog_id, bool is_set) 91 {} 92 93 static inline ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)94 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc, 95 struct qdf_mac_addr *peer_mac, 96 uint8_t dialog_id, 97 enum wlan_twt_session_state state) 98 {} 99 100 static inline enum wlan_twt_session_state ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)101 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc, 102 struct qdf_mac_addr *peer_mac, 103 uint8_t dialog_id) 104 { 105 return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; 106 } 107 108 static inline QDF_STATUS ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool val)109 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val) 110 { 111 return QDF_STATUS_E_NOSUPPORT; 112 } 113 114 static inline QDF_STATUS ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool * val)115 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val) 116 { 117 *val = false; 118 return QDF_STATUS_E_NOSUPPORT; 119 } 120 121 static inline QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)122 ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, 123 struct qdf_mac_addr *peer_mac, 124 uint8_t dialog_id) 125 { 126 return QDF_STATUS_E_NOSUPPORT; 127 } 128 129 static inline QDF_STATUS ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)130 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc, 131 struct qdf_mac_addr *peer_mac, 132 uint8_t dialog_id, 133 enum wlan_twt_commands cmd) 134 { 135 return QDF_STATUS_E_FAILURE; 136 } 137 138 #elif defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) 139 /** 140 * ucfg_mlme_get_twt_requestor() - Get twt requestor 141 * @psoc: pointer to psoc object 142 * @val: Pointer to the value which will be filled for the caller 143 * 144 * Return: QDF Status 145 */ 146 QDF_STATUS 147 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, 148 bool *val); 149 150 /** 151 * ucfg_mlme_set_twt_requestor() - Set twt requestor 152 * @psoc: pointer to psoc object 153 * @val: value that needs to set to this config 154 * 155 * Return: QDF Status 156 */ 157 QDF_STATUS 158 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, 159 bool val); 160 161 /** 162 * ucfg_mlme_get_twt_responder() - Get twt responder 163 * @psoc: pointer to psoc object 164 * @val: Pointer to the value which will be filled for the caller 165 * 166 * Return: QDF Status 167 */ 168 QDF_STATUS 169 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, 170 bool *val); 171 172 /** 173 * ucfg_mlme_set_twt_responder() - Set twt responder 174 * @psoc: pointer to psoc object 175 * @val: value that needs to set to this config 176 * 177 * Return: QDF Status 178 */ 179 QDF_STATUS 180 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, 181 bool val); 182 183 /** 184 * ucfg_mlme_get_twt_congestion_timeout() - Get twt congestion timeout 185 * @psoc: pointer to psoc object 186 * @val: Pointer to the value which will be filled for the caller 187 * 188 * Return: QDF Status 189 */ 190 QDF_STATUS 191 ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, 192 uint32_t *val); 193 194 /** 195 * ucfg_mlme_set_twt_congestion_timeout() - Set twt congestion timeout 196 * @psoc: pointer to psoc object 197 * @val: value that needs to set to this config 198 * 199 * Return: QDF Status 200 */ 201 QDF_STATUS 202 ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, 203 uint32_t val); 204 205 /** 206 * ucfg_mlme_is_twt_enabled() - Get global twt config support 207 * @psoc: pointer to psoc object 208 * 209 * Return: True if TWT is enabled else false. 210 */ 211 static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)212 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) 213 { 214 return mlme_is_twt_enabled(psoc); 215 } 216 217 /** 218 * ucfg_mlme_set_enable_twt() - Set global twt config support 219 * @psoc: pointer to psoc object 220 * @val: value that needs to set to this config 221 * 222 * Return: QDF Status 223 */ 224 QDF_STATUS 225 ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc, 226 bool val); 227 228 /* 229 * ucfg_mlme_get_twt_bcast_requestor() - Get twt requestor enabled 230 * @psoc: pointer to psoc object 231 * @val: Pointer to the value which will be filled for the caller 232 * 233 * Return: QDF Status 234 */ 235 QDF_STATUS 236 ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, 237 bool *val); 238 239 /** 240 * ucfg_mlme_get_twt_bcast_responder() - Get twt responder enabled 241 * @psoc: pointer to psoc object 242 * @val: Pointer to the value which will be filled for the caller 243 * 244 * Return: QDF Status 245 */ 246 QDF_STATUS 247 ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, 248 bool *val); 249 /* 250 * 1. If both of the new service caps 251 * WMI_SERVICE_BROADCAST_TWT_REQUESTER And 252 * WMI_SERVICE_BROADCAST_TWT_RESPONDER are enabled then the old 253 * WMI_SERVICE_BROADCAST_TWT will be set to 1. 254 * 255 * 2.a. If any of the new service caps in case of new firmware: 256 * WMI_SERVICE_BROADCAST_TWT_REQUESTER And 257 * WMI_SERVICE_BROADCAST_TWT_RESPONDER is DISABLED then the old 258 * WMI_SERVICE_BROADCAST_TWT will be set to 0. 259 * 260 * 2.b In case of new firmware wants to disable broadcast TWT: 261 * all 3 WMI_SERVICE_BROADCAST_TWT_REQUESTER, 262 * WMI_SERVICE_BROADCAST_TWT_RESPONDER & 263 * WMI_SERVICE_BROADCAST_TWT will be disabled. 264 * 265 * 2.c IN case of old firmware: 266 * WMI_SERVICE_BROADCAST_TWT will be 1 and 267 * WMI_SERVICE_BROADCAST_TWT_REQUESTER, 268 * WMI_SERVICE_BROADCAST_TWT_RESPONDER will be 0. 269 * 270 * bcast_requestor_cfg/bcast_responder_cfg is intersection of 271 * "enable_twt", "twt_bcast_req_resp_config" ini and above target 272 * service cap combination. 273 */ 274 275 /** 276 * ucfg_mlme_set_twt_bcast_requestor() - Set Global twt bcast requestor support 277 * @psoc: pointer to psoc object 278 * @val: Value to be set to config 279 * 280 * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the 281 * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the 282 * WMI_SERVICE_BROADCAST_TWT_REQUESTOR, WMI_SERVICE_BROADCAST_TWT 283 * combination. 284 * 285 * Return: QDF Status 286 */ 287 QDF_STATUS 288 ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, 289 bool val); 290 291 /** 292 * ucfg_mlme_set_twt_bcast_responder() - Set Global twt bcast responder support 293 * @psoc: pointer to psoc object 294 * @val: Value to be set to config 295 * 296 * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the 297 * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the 298 * WMI_SERVICE_BROADCAST_TWT_RESPONDER, WMI_SERVICE_BROADCAST_TWT 299 * combination. 300 * 301 * Return: QDF Status 302 */ 303 QDF_STATUS 304 ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, 305 bool val); 306 307 /** 308 * ucfg_mlme_set_twt_requestor_flag() - Set twt requestor flag 309 * @psoc: pointer to psoc object 310 * @val: Value to be set to config 311 * 312 * Return: QDF Status 313 */ 314 QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc, 315 bool val); 316 317 /** 318 * ucfg_mlme_set_twt_responder_flag() - Set twt responder flag 319 * @psoc: pointer to psoc object 320 * @val: Value to be set to config 321 * 322 * Return: QDF Status 323 */ 324 QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, 325 bool val); 326 /** 327 * ucfg_mlme_set_twt_res_service_cap() - Set twt responder service capability 328 * @psoc: pointer to psoc object 329 * @val: Value to be set to config 330 * 331 * Return: QDF Status 332 */ 333 QDF_STATUS 334 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val); 335 336 /** 337 * ucfg_mlme_get_twt_res_service_cap() - Get twt responder service capability 338 * @psoc: pointer to psoc object 339 * @val: Value to be set to config 340 * 341 * Return: QDF Status 342 */ 343 QDF_STATUS 344 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val); 345 346 /** 347 * ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail 348 * This is to handle back to back command. If ack failed for active 349 * command then reset this command to allow new twt command. 350 * @psoc: pointer to psoc object 351 * @peer_mac: peer mac address 352 * @dialog_id: dialog id 353 * 354 * Return: QDF Status 355 */ 356 QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, 357 struct qdf_mac_addr *peer_mac, 358 uint8_t dialog_id); 359 360 /** 361 * ucfg_mlme_is_twt_setup_in_progress() - Get TWT setup in progress for 362 * given dialog id 363 * @psoc: Pointer to global PSOC object 364 * @peer_mac: Global peer mac address 365 * @dialog_id: Dialog id 366 * 367 * Return: True if already the TWT setup is in progress 368 */ 369 static inline bool ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)370 ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc *psoc, 371 struct qdf_mac_addr *peer_mac, 372 uint8_t dialog_id) 373 { 374 return mlme_is_twt_setup_in_progress(psoc, peer_mac, dialog_id); 375 } 376 377 /** 378 * ucfg_mlme_is_max_twt_sessions_reached() - Check if the maximum number of 379 * TWT sessions reached or not excluding the given dialog_id 380 * @psoc: Pointer to global PSOC object 381 * @peer_mac: Global peer mac address 382 * @dialog_id: dialog id 383 * 384 * Check if the number of active TWT sessions is equal to the maximum number 385 * of TWT sessions supported. Only count the TWT session slot if it not 386 * TWT_ALL_SESSIONS_DIALOG_ID and dialog id is different from input dialog_id, 387 * because if same dialog_id already exists in the TWT sessions, we should 388 * return false since re-negotiation is supported on existing dialog_id. 389 * 390 * Return: True if slot is available for dialog_id, false otherwise 391 */ 392 static inline bool ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)393 ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc *psoc, 394 struct qdf_mac_addr *peer_mac, 395 uint8_t dialog_id) 396 { 397 return mlme_is_max_twt_sessions_reached(psoc, peer_mac, dialog_id); 398 } 399 400 /** 401 * ucfg_mlme_twt_is_command_in_progress() - Check if given command is in 402 * progress 403 * @psoc: Pointer to global PSOC object 404 * @peer_mac: Global peer mac address 405 * @dialog_id: TWT session dialog id 406 * @cmd: TWT command 407 * @active_cmd: Fill active command in this output parameter 408 * 409 * Return: True if given command is in progress 410 */ 411 static inline bool ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd,enum wlan_twt_commands * active_cmd)412 ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc *psoc, 413 struct qdf_mac_addr *peer_mac, 414 uint8_t dialog_id, 415 enum wlan_twt_commands cmd, 416 enum wlan_twt_commands *active_cmd) 417 { 418 return mlme_twt_is_command_in_progress(psoc, peer_mac, dialog_id, 419 cmd, active_cmd); 420 } 421 422 static inline QDF_STATUS ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)423 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc, 424 struct qdf_mac_addr *peer_mac, 425 uint8_t dialog_id, 426 enum wlan_twt_commands cmd) 427 { 428 return mlme_set_twt_command_in_progress(psoc, peer_mac, dialog_id, cmd); 429 } 430 431 /** 432 * ucfg_mlme_set_twt_setup_done() - Set TWT setup done flag 433 * @psoc: Pointer to global PSOC object 434 * @peer_mac: Global peer mac address 435 * @dialog_id: TWT session dialog id 436 * @is_set: true if setup done flag needs to be set 437 * 438 * Return: None 439 */ 440 static inline void ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)441 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc, 442 struct qdf_mac_addr *peer_mac, 443 uint8_t dialog_id, bool is_set) 444 { 445 mlme_set_twt_setup_done(psoc, peer_mac, dialog_id, is_set); 446 } 447 448 /** 449 * ucfg_mlme_is_twt_setup_done() - Get if the TWT setup for given dialog id 450 * is complete. 451 * @psoc: Pointer to global psoc object 452 * @peer_mac: Pointer to peer mac address 453 * @dialog_id: TWT session dialog id 454 * 455 * Return: True if TWT setup is successful for the dialog id 456 */ 457 static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)458 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, 459 struct qdf_mac_addr *peer_mac, uint8_t dialog_id) 460 { 461 return mlme_is_twt_setup_done(psoc, peer_mac, dialog_id); 462 } 463 464 /** 465 * ucfg_mlme_is_flexible_twt_enabled() - Get if flexible TWT is enabled 466 * @psoc: Pointer to global psoc object 467 * 468 * Return: True if flexible TWT is supported 469 */ 470 static inline ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc * psoc)471 bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc) 472 { 473 return mlme_is_flexible_twt_enabled(psoc); 474 } 475 476 /** 477 * ucfg_mlme_get_twt_peer_capabilities() - Get peer capabilities 478 * @psoc: Pointer to global psoc object 479 * @peer_mac: Pointer to peer mac address 480 * 481 * Return: Peer capabilities bitmap 482 */ 483 static inline ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)484 uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc, 485 struct qdf_mac_addr *peer_mac) 486 { 487 return mlme_get_twt_peer_capabilities(psoc, peer_mac); 488 } 489 490 /** 491 * ucfg_mlme_get_twt_peer_bcast_capabilities() - Get peer broadcast capabilities 492 * @psoc: Pointer to global psoc object 493 * @peer_mac: Pointer to peer mac address 494 * 495 * Return: Return True if peer responder capabilities support else False 496 */ 497 bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc, 498 struct qdf_mac_addr *peer_mac); 499 500 /** 501 * ucfg_mlme_get_twt_peer_responder_capabilities() - Get peer responder 502 * capabilities 503 * @psoc: Pointer to global psoc object 504 * @peer_mac: Pointer to peer mac address 505 * 506 * Return: Return True if peer responder capabilities support else False 507 */ 508 bool ucfg_mlme_get_twt_peer_responder_capabilities( 509 struct wlan_objmgr_psoc *psoc, 510 struct qdf_mac_addr *peer_mac); 511 512 /** 513 * ucfg_mlme_init_twt_context() - Initialize TWT context 514 * @psoc: Pointer to global psoc object 515 * @peer_mac: Pointer to peer mac address 516 * @dialog_id: Dialog id 517 * 518 * Return: QDF_STATUS 519 */ 520 static inline ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)521 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, 522 struct qdf_mac_addr *peer_mac, 523 uint8_t dialog_id) 524 { 525 return mlme_init_twt_context(psoc, peer_mac, dialog_id); 526 } 527 528 /** 529 * ucfg_mlme_is_24ghz_twt_enabled() - Get if host triggered TWT is enabled on 530 * 2.4Ghz band. 531 * @psoc: Pointer to global psoc object 532 * 533 * Return: True if host TWT is enabled on 2.4 Ghz band. 534 */ 535 static inline bool ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc * psoc)536 ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc) 537 { 538 return mlme_is_24ghz_twt_enabled(psoc); 539 } 540 541 /** 542 * ucfg_mlme_set_twt_nudge_tgt_cap() - Set TWT nudge target capability. 543 * @psoc: Pointer to global psoc object 544 * @val: Value to set 545 * 546 * Return: QDF_STATUS 547 */ 548 QDF_STATUS 549 ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); 550 551 /** 552 * ucfg_mlme_get_twt_nudge_tgt_cap() - Get TWT Nudge target capability 553 * @psoc: Pointer to global psoc object 554 * @val: Value to set 555 * 556 * Return: QDF_STATUS 557 */ 558 QDF_STATUS 559 ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); 560 561 /** 562 * ucfg_mlme_set_twt_all_twt_tgt_cap() - Set TWT all dialog support target 563 * @psoc: Pointer to global psoc object 564 * @val: Value to set 565 * 566 * Return: QDF_STATUS 567 */ 568 QDF_STATUS 569 ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); 570 571 /** 572 * ucfg_mlme_get_twt_all_twt_tgt_cap() - Get TWT all dialog support target 573 * capability 574 * @psoc: Pointer to global psoc object 575 * @val: Value to set 576 * 577 * Return: QDF_STATUS 578 */ 579 QDF_STATUS 580 ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); 581 582 /** 583 * ucfg_mlme_set_twt_statistics_tgt_cap() - Set TWT statistics target 584 * capability 585 * @psoc: Pointer to global psoc object 586 * @val: Value to set 587 * 588 * Return: QDF_STATUS 589 */ 590 QDF_STATUS 591 ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); 592 593 /** 594 * ucfg_mlme_get_twt_statistics_tgt_cap() - Get TWT statistics target capability 595 * @psoc: Pointer to global psoc object 596 * @val: Value to set 597 * 598 * Return: QDF_STATUS 599 */ 600 QDF_STATUS 601 ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); 602 603 /** 604 * ucfg_mlme_set_twt_session_state() - Set TWT session state 605 * @psoc: Pointer to global psoc object 606 * @peer_mac: Pointer to peer mac address 607 * @dialog_id: TWT session dialog id 608 * @state: TWT state 609 * 610 * Return: None 611 */ 612 static inline ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)613 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc, 614 struct qdf_mac_addr *peer_mac, 615 uint8_t dialog_id, 616 enum wlan_twt_session_state state) 617 { 618 mlme_set_twt_session_state(psoc, peer_mac, dialog_id, state); 619 } 620 621 /** 622 * ucfg_mlme_get_twt_session_state() - Get TWT session state 623 * @psoc: Pointer to global psoc object 624 * @peer_mac: Pointer to peer mac address 625 * @dialog_id: TWT session dialog id 626 * 627 * Return: enum wlan_twt_session_state 628 */ 629 static inline enum wlan_twt_session_state ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)630 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc, 631 struct qdf_mac_addr *peer_mac, 632 uint8_t dialog_id) 633 { 634 return mlme_get_twt_session_state(psoc, peer_mac, dialog_id); 635 } 636 #else 637 static inline QDF_STATUS ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc * psoc,bool * val)638 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, 639 bool *val) 640 { 641 *val = false; 642 return QDF_STATUS_E_NOSUPPORT; 643 } 644 645 static inline QDF_STATUS ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc * psoc,bool val)646 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, 647 bool val) 648 { 649 return QDF_STATUS_E_NOSUPPORT; 650 } 651 652 static inline QDF_STATUS ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc * psoc,bool * val)653 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, 654 bool *val) 655 { 656 *val = false; 657 return QDF_STATUS_E_NOSUPPORT; 658 } 659 660 static inline QDF_STATUS ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc * psoc,bool val)661 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, 662 bool val) 663 { 664 return QDF_STATUS_E_NOSUPPORT; 665 } 666 667 static inline QDF_STATUS ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t * val)668 ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, 669 uint32_t *val) 670 { 671 *val = 0; 672 return QDF_STATUS_E_NOSUPPORT; 673 } 674 675 static inline QDF_STATUS ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t val)676 ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, 677 uint32_t val) 678 { 679 return QDF_STATUS_E_NOSUPPORT; 680 } 681 682 static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)683 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) 684 { 685 return QDF_STATUS_E_NOSUPPORT; 686 } 687 688 static inline QDF_STATUS ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc * psoc,bool val)689 ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc, 690 bool val) 691 { 692 return QDF_STATUS_E_NOSUPPORT; 693 } 694 695 static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)696 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, 697 struct qdf_mac_addr *peer_mac, uint8_t dialog_id) 698 { 699 return 0; 700 } 701 702 static inline void ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)703 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc, 704 struct qdf_mac_addr *peer_mac, 705 uint8_t dialog_id, bool is_set) 706 {} 707 708 static inline bool ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)709 ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc *psoc, 710 struct qdf_mac_addr *peer_mac, 711 uint8_t dialog_id) 712 { 713 return false; 714 } 715 716 static inline bool ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)717 ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc *psoc, 718 struct qdf_mac_addr *peer_mac, 719 uint8_t dialog_id) 720 { 721 return false; 722 } 723 724 static inline QDF_STATUS ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)725 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc, 726 struct qdf_mac_addr *peer_mac, 727 uint8_t dialog_id, 728 enum wlan_twt_commands cmd) 729 { 730 return QDF_STATUS_E_FAILURE; 731 } 732 733 static inline bool ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd,enum wlan_twt_commands * active_cmd)734 ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc *psoc, 735 struct qdf_mac_addr *peer_mac, 736 uint8_t dialog_id, 737 enum wlan_twt_commands cmd, 738 enum wlan_twt_commands *active_cmd) 739 { 740 return false; 741 } 742 743 static inline QDF_STATUS ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc * psoc,bool * val)744 ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, 745 bool *val) 746 { 747 *val = false; 748 return QDF_STATUS_E_NOSUPPORT; 749 } 750 751 static inline QDF_STATUS ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc * psoc,bool val)752 ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, 753 bool val) 754 { 755 return QDF_STATUS_E_NOSUPPORT; 756 } 757 758 static inline QDF_STATUS ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc * psoc,bool * val)759 ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, 760 bool *val) 761 { 762 *val = false; 763 return QDF_STATUS_E_NOSUPPORT; 764 } 765 766 static inline QDF_STATUS ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc * psoc,bool val)767 ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, 768 bool val) 769 { 770 return QDF_STATUS_E_NOSUPPORT; 771 } 772 773 static inline QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc * psoc,bool val)774 ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc, 775 bool val) 776 { 777 return QDF_STATUS_E_NOSUPPORT; 778 } 779 780 static inline QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc * psoc,bool val)781 ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, 782 bool val) 783 { 784 return QDF_STATUS_E_NOSUPPORT; 785 } 786 787 static inline ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc * psoc)788 bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc) 789 { 790 return false; 791 } 792 793 static inline ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)794 uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc, 795 struct qdf_mac_addr *peer_mac) 796 { 797 return 0; 798 } 799 800 static inline ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)801 bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc, 802 struct qdf_mac_addr *peer_mac) 803 { 804 return false; 805 } 806 807 static inline ucfg_mlme_get_twt_peer_responder_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)808 bool ucfg_mlme_get_twt_peer_responder_capabilities( 809 struct wlan_objmgr_psoc *psoc, 810 struct qdf_mac_addr *peer_mac) 811 { 812 return false; 813 } 814 815 static inline ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)816 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, 817 struct qdf_mac_addr *peer_mac, 818 uint8_t dialog_id) 819 { 820 return QDF_STATUS_E_NOSUPPORT; 821 } 822 823 static inline bool ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc * psoc)824 ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc) 825 { 826 return false; 827 } 828 829 static inline QDF_STATUS ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)830 ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) 831 { 832 *val = false; 833 return QDF_STATUS_E_NOSUPPORT; 834 } 835 836 static inline QDF_STATUS ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)837 ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) 838 { 839 *val = false; 840 return QDF_STATUS_E_NOSUPPORT; 841 } 842 843 static inline QDF_STATUS ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)844 ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) 845 { 846 *val = false; 847 return QDF_STATUS_E_NOSUPPORT; 848 } 849 850 static inline QDF_STATUS ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)851 ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) 852 { 853 return QDF_STATUS_E_NOSUPPORT; 854 } 855 856 static inline QDF_STATUS ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)857 ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) 858 { 859 return QDF_STATUS_E_NOSUPPORT; 860 } 861 862 static inline QDF_STATUS ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)863 ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) 864 { 865 return QDF_STATUS_E_NOSUPPORT; 866 } 867 868 static inline ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)869 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc, 870 struct qdf_mac_addr *peer_mac, 871 uint8_t dialog_id, 872 enum wlan_twt_session_state state) 873 {} 874 875 static inline enum wlan_twt_session_state ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)876 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc, 877 struct qdf_mac_addr *peer_mac, 878 uint8_t dialog_id) 879 { 880 return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; 881 } 882 883 static inline QDF_STATUS ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool val)884 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val) 885 { 886 return QDF_STATUS_E_NOSUPPORT; 887 } 888 889 static inline QDF_STATUS ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool * val)890 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val) 891 { 892 *val = false; 893 return QDF_STATUS_E_NOSUPPORT; 894 } 895 896 static inline QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)897 ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, 898 struct qdf_mac_addr *peer_mac, 899 uint8_t dialog_id) 900 { 901 return QDF_STATUS_E_NOSUPPORT; 902 } 903 904 #endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */ 905 #endif /* _WLAN_MLME_TWT_UCFG_API_H_ */ 906