1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 5*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 6*5113495bSYour Name * above copyright notice and this permission notice appear in all 7*5113495bSYour Name * copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 17*5113495bSYour Name */ 18*5113495bSYour Name 19*5113495bSYour Name /** 20*5113495bSYour Name * DOC: wlan_twt_ucfg_api.h 21*5113495bSYour Name * This file provides TWT ucfg apis. 22*5113495bSYour Name */ 23*5113495bSYour Name #ifndef _WLAN_TWT_UCFG_API_H_ 24*5113495bSYour Name #define _WLAN_TWT_UCFG_API_H_ 25*5113495bSYour Name 26*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h> 27*5113495bSYour Name #include <wlan_twt_public_structs.h> 28*5113495bSYour Name 29*5113495bSYour Name /** 30*5113495bSYour Name * ucfg_twt_get_responder() - twt get responder 31*5113495bSYour Name * @psoc: psoc handle 32*5113495bSYour Name * @val: pointer to the output variable 33*5113495bSYour Name * 34*5113495bSYour Name * return: QDF_STATUS 35*5113495bSYour Name */ 36*5113495bSYour Name QDF_STATUS 37*5113495bSYour Name ucfg_twt_get_responder(struct wlan_objmgr_psoc *psoc, bool *val); 38*5113495bSYour Name 39*5113495bSYour Name /** 40*5113495bSYour Name * ucfg_twt_get_twt_nudge_enabled() - get twt nudge enabled 41*5113495bSYour Name * @psoc: psoc handle 42*5113495bSYour Name * @val: pointer to the output variable 43*5113495bSYour Name * 44*5113495bSYour Name * return: QDF_STATUS 45*5113495bSYour Name */ 46*5113495bSYour Name QDF_STATUS 47*5113495bSYour Name ucfg_twt_get_twt_nudge_enabled(struct wlan_objmgr_psoc *psoc, 48*5113495bSYour Name bool *val); 49*5113495bSYour Name 50*5113495bSYour Name /** 51*5113495bSYour Name * ucfg_twt_get_all_twt_enabled() - get all twt enabled 52*5113495bSYour Name * @psoc: psoc handle 53*5113495bSYour Name * @val: pointer to the output variable 54*5113495bSYour Name * 55*5113495bSYour Name * return: QDF_STATUS 56*5113495bSYour Name */ 57*5113495bSYour Name QDF_STATUS 58*5113495bSYour Name ucfg_twt_get_all_twt_enabled(struct wlan_objmgr_psoc *psoc, 59*5113495bSYour Name bool *val); 60*5113495bSYour Name 61*5113495bSYour Name /** 62*5113495bSYour Name * ucfg_twt_check_all_twt_support() - Check if all TWT sessions capability is 63*5113495bSYour Name * supported or not 64*5113495bSYour Name * @psoc: Pointer to psoc object 65*5113495bSYour Name * @dialog_id: dialod id 66*5113495bSYour Name * 67*5113495bSYour Name * Return: QDF Status 68*5113495bSYour Name */ 69*5113495bSYour Name QDF_STATUS 70*5113495bSYour Name ucfg_twt_check_all_twt_support(struct wlan_objmgr_psoc *psoc, 71*5113495bSYour Name uint32_t dialog_id); 72*5113495bSYour Name 73*5113495bSYour Name /** 74*5113495bSYour Name * ucfg_twt_get_twt_stats_enabled() - get twt stats enabled 75*5113495bSYour Name * @psoc: psoc handle 76*5113495bSYour Name * @val: pointer to the output variable 77*5113495bSYour Name * 78*5113495bSYour Name * return: QDF_STATUS 79*5113495bSYour Name */ 80*5113495bSYour Name QDF_STATUS 81*5113495bSYour Name ucfg_twt_get_twt_stats_enabled(struct wlan_objmgr_psoc *psoc, 82*5113495bSYour Name bool *val); 83*5113495bSYour Name 84*5113495bSYour Name /** 85*5113495bSYour Name * ucfg_twt_get_twt_ack_supported() - get twt ack supported 86*5113495bSYour Name * @psoc: psoc handle 87*5113495bSYour Name * @val: pointer to the output variable 88*5113495bSYour Name * 89*5113495bSYour Name * return: QDF_STATUS 90*5113495bSYour Name */ 91*5113495bSYour Name QDF_STATUS 92*5113495bSYour Name ucfg_twt_get_twt_ack_supported(struct wlan_objmgr_psoc *psoc, 93*5113495bSYour Name bool *val); 94*5113495bSYour Name 95*5113495bSYour Name /** 96*5113495bSYour Name * ucfg_twt_requestor_disable() - twt requestor disable 97*5113495bSYour Name * @psoc: psoc handle 98*5113495bSYour Name * @req: twt disable request structure 99*5113495bSYour Name * @context: context 100*5113495bSYour Name * 101*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 102*5113495bSYour Name * filled by the user space/upper layer. if any field is not applicable 103*5113495bSYour Name * then set it to 0. 104*5113495bSYour Name * pdev_id; 105*5113495bSYour Name * mbss_support; 106*5113495bSYour Name * default_slot_size; 107*5113495bSYour Name * congestion_thresh_setup; 108*5113495bSYour Name * congestion_thresh_teardown; 109*5113495bSYour Name * congestion_thresh_critical; 110*5113495bSYour Name * interference_thresh_teardown; 111*5113495bSYour Name * interference_thresh_setup; 112*5113495bSYour Name * min_no_sta_setup; 113*5113495bSYour Name * min_no_sta_teardown; 114*5113495bSYour Name * no_of_bcast_mcast_slots; 115*5113495bSYour Name * min_no_twt_slots; 116*5113495bSYour Name * max_no_sta_twt; 117*5113495bSYour Name * mode_check_interval; 118*5113495bSYour Name * add_sta_slot_interval; 119*5113495bSYour Name * remove_sta_slot_interval; 120*5113495bSYour Name * ext_conf_present; 121*5113495bSYour Name * b_twt_legacy_mbss_enable:1, 122*5113495bSYour Name * b_twt_ax_mbss_enable:1; 123*5113495bSYour Name * 124*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 125*5113495bSYour Name * filled by the UMAC TWT Component itself 126*5113495bSYour Name * sta_cong_timer_ms; 127*5113495bSYour Name * twt_role; 128*5113495bSYour Name * twt_oper; 129*5113495bSYour Name * b_twt_enable; 130*5113495bSYour Name * 131*5113495bSYour Name * return: QDF_STATUS 132*5113495bSYour Name */ 133*5113495bSYour Name QDF_STATUS 134*5113495bSYour Name ucfg_twt_requestor_disable(struct wlan_objmgr_psoc *psoc, 135*5113495bSYour Name struct twt_disable_param *req, 136*5113495bSYour Name void *context); 137*5113495bSYour Name 138*5113495bSYour Name /** 139*5113495bSYour Name * ucfg_twt_responder_disable() - twt responder disable 140*5113495bSYour Name * @psoc: psoc handle 141*5113495bSYour Name * @req: twt disable request structure 142*5113495bSYour Name * @context: context 143*5113495bSYour Name * 144*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 145*5113495bSYour Name * filled by the user space/upper layer. if any field is not applicable 146*5113495bSYour Name * then set it to 0. 147*5113495bSYour Name * pdev_id; 148*5113495bSYour Name * mbss_support; 149*5113495bSYour Name * default_slot_size; 150*5113495bSYour Name * congestion_thresh_setup; 151*5113495bSYour Name * congestion_thresh_teardown; 152*5113495bSYour Name * congestion_thresh_critical; 153*5113495bSYour Name * interference_thresh_teardown; 154*5113495bSYour Name * interference_thresh_setup; 155*5113495bSYour Name * min_no_sta_setup; 156*5113495bSYour Name * min_no_sta_teardown; 157*5113495bSYour Name * no_of_bcast_mcast_slots; 158*5113495bSYour Name * min_no_twt_slots; 159*5113495bSYour Name * max_no_sta_twt; 160*5113495bSYour Name * mode_check_interval; 161*5113495bSYour Name * add_sta_slot_interval; 162*5113495bSYour Name * remove_sta_slot_interval; 163*5113495bSYour Name * ext_conf_present; 164*5113495bSYour Name * b_twt_legacy_mbss_enable:1, 165*5113495bSYour Name * b_twt_ax_mbss_enable:1; 166*5113495bSYour Name * 167*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 168*5113495bSYour Name * filled by the UMAC TWT Component itself 169*5113495bSYour Name * sta_cong_timer_ms; 170*5113495bSYour Name * twt_role; 171*5113495bSYour Name * twt_oper; 172*5113495bSYour Name * b_twt_enable; 173*5113495bSYour Name * 174*5113495bSYour Name * return: QDF_STATUS 175*5113495bSYour Name */ 176*5113495bSYour Name QDF_STATUS 177*5113495bSYour Name ucfg_twt_responder_disable(struct wlan_objmgr_psoc *psoc, 178*5113495bSYour Name struct twt_disable_param *req, 179*5113495bSYour Name void *context); 180*5113495bSYour Name 181*5113495bSYour Name /** 182*5113495bSYour Name * ucfg_twt_requestor_enable() - twt requestor enable 183*5113495bSYour Name * @psoc: psoc handle 184*5113495bSYour Name * @req: twt enable request structure 185*5113495bSYour Name * @context: context 186*5113495bSYour Name * 187*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 188*5113495bSYour Name * filled by the user space/upper layer. if any field is not applicable 189*5113495bSYour Name * then set it to 0. 190*5113495bSYour Name * pdev_id; 191*5113495bSYour Name * mbss_support; 192*5113495bSYour Name * default_slot_size; 193*5113495bSYour Name * congestion_thresh_setup; 194*5113495bSYour Name * congestion_thresh_teardown; 195*5113495bSYour Name * congestion_thresh_critical; 196*5113495bSYour Name * interference_thresh_teardown; 197*5113495bSYour Name * interference_thresh_setup; 198*5113495bSYour Name * min_no_sta_setup; 199*5113495bSYour Name * min_no_sta_teardown; 200*5113495bSYour Name * no_of_bcast_mcast_slots; 201*5113495bSYour Name * min_no_twt_slots; 202*5113495bSYour Name * max_no_sta_twt; 203*5113495bSYour Name * mode_check_interval; 204*5113495bSYour Name * add_sta_slot_interval; 205*5113495bSYour Name * remove_sta_slot_interval; 206*5113495bSYour Name * ext_conf_present; 207*5113495bSYour Name * b_twt_legacy_mbss_enable:1, 208*5113495bSYour Name * b_twt_ax_mbss_enable:1; 209*5113495bSYour Name * 210*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 211*5113495bSYour Name * filled by the UMAC TWT Component itself 212*5113495bSYour Name * sta_cong_timer_ms; 213*5113495bSYour Name * twt_role; 214*5113495bSYour Name * twt_oper; 215*5113495bSYour Name * b_twt_enable; 216*5113495bSYour Name * 217*5113495bSYour Name * return: QDF_STATUS 218*5113495bSYour Name */ 219*5113495bSYour Name QDF_STATUS 220*5113495bSYour Name ucfg_twt_requestor_enable(struct wlan_objmgr_psoc *psoc, 221*5113495bSYour Name struct twt_enable_param *req, 222*5113495bSYour Name void *context); 223*5113495bSYour Name 224*5113495bSYour Name /** 225*5113495bSYour Name * ucfg_twt_responder_enable() - twt responder enable 226*5113495bSYour Name * @psoc: psoc handle 227*5113495bSYour Name * @req: twt enable request structure 228*5113495bSYour Name * @context: context 229*5113495bSYour Name * 230*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 231*5113495bSYour Name * filled by the user space/upper layer. if any field is not applicable 232*5113495bSYour Name * then set it to 0. 233*5113495bSYour Name * pdev_id; 234*5113495bSYour Name * mbss_support; 235*5113495bSYour Name * default_slot_size; 236*5113495bSYour Name * congestion_thresh_setup; 237*5113495bSYour Name * congestion_thresh_teardown; 238*5113495bSYour Name * congestion_thresh_critical; 239*5113495bSYour Name * interference_thresh_teardown; 240*5113495bSYour Name * interference_thresh_setup; 241*5113495bSYour Name * min_no_sta_setup; 242*5113495bSYour Name * min_no_sta_teardown; 243*5113495bSYour Name * no_of_bcast_mcast_slots; 244*5113495bSYour Name * min_no_twt_slots; 245*5113495bSYour Name * max_no_sta_twt; 246*5113495bSYour Name * mode_check_interval; 247*5113495bSYour Name * add_sta_slot_interval; 248*5113495bSYour Name * remove_sta_slot_interval; 249*5113495bSYour Name * ext_conf_present; 250*5113495bSYour Name * b_twt_legacy_mbss_enable:1, 251*5113495bSYour Name * b_twt_ax_mbss_enable:1; 252*5113495bSYour Name * 253*5113495bSYour Name * Following fields in request structure @twt_enable_param shall be 254*5113495bSYour Name * filled by the UMAC TWT Component itself 255*5113495bSYour Name * sta_cong_timer_ms; 256*5113495bSYour Name * twt_role; 257*5113495bSYour Name * twt_oper; 258*5113495bSYour Name * b_twt_enable; 259*5113495bSYour Name * 260*5113495bSYour Name * return: QDF_STATUS 261*5113495bSYour Name */ 262*5113495bSYour Name QDF_STATUS 263*5113495bSYour Name ucfg_twt_responder_enable(struct wlan_objmgr_psoc *psoc, 264*5113495bSYour Name struct twt_enable_param *req, 265*5113495bSYour Name void *context); 266*5113495bSYour Name 267*5113495bSYour Name /** 268*5113495bSYour Name * ucfg_twt_set_peer_capabilities() - set twt peer capabilities 269*5113495bSYour Name * @psoc: psoc handle 270*5113495bSYour Name * @peer_mac: peer mac address 271*5113495bSYour Name * @peer_cap: TWT peer capability bitmap. Refer enum 272*5113495bSYour Name * wlan_twt_capabilities for representation. 273*5113495bSYour Name * 274*5113495bSYour Name * return: QDF_STATUS 275*5113495bSYour Name */ 276*5113495bSYour Name QDF_STATUS 277*5113495bSYour Name ucfg_twt_set_peer_capabilities(struct wlan_objmgr_psoc *psoc, 278*5113495bSYour Name struct qdf_mac_addr *peer_mac, 279*5113495bSYour Name uint8_t peer_cap); 280*5113495bSYour Name 281*5113495bSYour Name /** 282*5113495bSYour Name * ucfg_twt_get_peer_capabilities() - get twt peer capabilities 283*5113495bSYour Name * @psoc: psoc handle 284*5113495bSYour Name * @peer_mac: peer mac address 285*5113495bSYour Name * @peer_cap: Pointer to output variable to hold TWT peer capability bitmap. 286*5113495bSYour Name * Refer enum wlan_twt_capabilities for representation. 287*5113495bSYour Name * 288*5113495bSYour Name * return: QDF_STATUS 289*5113495bSYour Name */ 290*5113495bSYour Name QDF_STATUS 291*5113495bSYour Name ucfg_twt_get_peer_capabilities(struct wlan_objmgr_psoc *psoc, 292*5113495bSYour Name struct qdf_mac_addr *peer_mac, 293*5113495bSYour Name uint8_t *peer_cap); 294*5113495bSYour Name 295*5113495bSYour Name /** 296*5113495bSYour Name * ucfg_twt_get_restricted_twt_supported() - Get tgt restricted-twt 297*5113495bSYour Name * support caps 298*5113495bSYour Name * @psoc: psoc handle 299*5113495bSYour Name * @val: pointer to get caps enabled/disabled 300*5113495bSYour Name * 301*5113495bSYour Name * return: QDF_STATUS 302*5113495bSYour Name */ 303*5113495bSYour Name QDF_STATUS ucfg_twt_get_restricted_twt_supported(struct wlan_objmgr_psoc *psoc, 304*5113495bSYour Name bool *val); 305*5113495bSYour Name #endif /* _WLAN_TWT_UCFG_API_H_ */ 306