1 /* 2 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /** 18 * DOC: contains interface prototypes for spatial_reuse api 19 */ 20 21 #ifndef _SPATIAL_REUSE_API_H_ 22 #define _SPATIAL_REUSE_API_H_ 23 24 #include <qdf_types.h> 25 #include <qdf_trace.h> 26 #include <wlan_objmgr_vdev_obj.h> 27 28 /** 29 * enum sr_osif_operation - Spatial Reuse operation 30 * @SR_OPERATION_SUSPEND: Spatial Reuse suspend indication 31 * @SR_OPERATION_RESUME: Spatial Reuse resume indication 32 * @SR_OPERATION_UPDATE_PARAMS: Spatial Reuse parameters are updated 33 */ 34 enum sr_osif_operation { 35 SR_OPERATION_SUSPEND = 0, 36 SR_OPERATION_RESUME = 1, 37 SR_OPERATION_UPDATE_PARAMS = 2, 38 }; 39 40 /** 41 * enum sr_osif_reason_code - Spatial Reuse reason codes 42 * @SR_REASON_CODE_ROAMING: Spatial Reuse reason code is Roaming will be 43 * set when SR is suspended / resumed due to roaming 44 * @SR_REASON_CODE_CONCURRENCY: Spatial Reuse reason code is concurrency 45 * will be set when SR is suspended / resumed 46 * due to concurrency 47 * @SR_REASON_CODE_BCN_IE_CHANGE: Spatial Reuse reason code is SRP IE change 48 * in the beacon/probe rsp of the associated AP 49 */ 50 enum sr_osif_reason_code { 51 SR_REASON_CODE_ROAMING = 0, 52 SR_REASON_CODE_CONCURRENCY = 1, 53 SR_REASON_CODE_BCN_IE_CHANGE = 2, 54 }; 55 56 /** 57 * typedef sr_osif_event_cb() - CB to deliver SR events 58 * @vdev: objmgr manager vdev 59 * @sr_osif_oper: SR Operation like suspend / resume 60 * @sr_osif_rc: Event reason code 61 * 62 * Return: void 63 */ 64 typedef void (*sr_osif_event_cb)(struct wlan_objmgr_vdev *vdev, 65 enum sr_osif_operation sr_osif_oper, 66 enum sr_osif_reason_code sr_osif_rc); 67 68 #ifdef WLAN_FEATURE_SR 69 /** 70 * wlan_spatial_reuse_config_set() - Set spatial reuse config 71 * @vdev: objmgr manager vdev 72 * @sr_ctrl: spatial reuse control 73 * @non_srg_max_pd_offset: non-srg max pd offset 74 * 75 * Return: QDF_STATUS 76 */ 77 QDF_STATUS wlan_spatial_reuse_config_set(struct wlan_objmgr_vdev *vdev, 78 uint8_t sr_ctrl, 79 uint8_t non_srg_max_pd_offset); 80 81 /** 82 * wlan_sr_register_callback() - registers SR osif events 83 * @psoc: pointer to psoc 84 * @cb: Callback to be registered 85 * 86 * Return: void 87 */ 88 void wlan_sr_register_callback(struct wlan_objmgr_psoc *psoc, 89 sr_osif_event_cb cb); 90 91 /** 92 * wlan_spatial_reuse_osif_event() - Send SR asynchronous events 93 * @vdev: objmgr manager vdev 94 * @sr_osif_oper: SR Operation like suspend / resume 95 * @sr_osif_rc: Event reason code 96 * 97 * Return: void 98 */ 99 void wlan_spatial_reuse_osif_event(struct wlan_objmgr_vdev *vdev, 100 enum sr_osif_operation sr_osif_oper, 101 enum sr_osif_reason_code sr_osif_rc); 102 #else 103 static inline wlan_spatial_reuse_config_set(struct wlan_objmgr_vdev * vdev,uint8_t sr_ctrl,uint8_t non_srg_max_pd_offset)104 QDF_STATUS wlan_spatial_reuse_config_set(struct wlan_objmgr_vdev *vdev, 105 uint8_t sr_ctrl, 106 uint8_t non_srg_max_pd_offset) 107 { 108 return QDF_STATUS_SUCCESS; 109 } 110 111 static inline wlan_spatial_reuse_osif_event(struct wlan_objmgr_vdev * vdev,enum sr_osif_operation sr_osif_oper,enum sr_osif_reason_code sr_osif_rc)112 void wlan_spatial_reuse_osif_event(struct wlan_objmgr_vdev *vdev, 113 enum sr_osif_operation sr_osif_oper, 114 enum sr_osif_reason_code sr_osif_rc) 115 { 116 } 117 #endif 118 119 /** 120 * wlan_spatial_reuse_he_siga_val15_allowed_set() - Set spatial reuse config 121 * he_siga_val15_allowed 122 * @vdev: objmgr manager vdev 123 * @he_siga_va15_allowed: enable/disable he_siga_val15_allowed 124 * 125 * Return: QDF_STATUS 126 */ 127 QDF_STATUS wlan_spatial_reuse_he_siga_val15_allowed_set( 128 struct wlan_objmgr_vdev *vdev, 129 bool he_siga_va15_allowed); 130 131 /** 132 * wlan_sr_setup_req() - Enable SR with provided pd threshold 133 * @vdev: objmgr vdev 134 * @pdev: objmgr pdev 135 * @is_sr_enable: sr enable/disable 136 * @srg_pd_threshold: SRG pd threshold 137 * @non_srg_pd_threshold: NON SRG PD threshold 138 * 139 * Return: QDF_STATUS 140 */ 141 QDF_STATUS 142 wlan_sr_setup_req(struct wlan_objmgr_vdev *vdev, 143 struct wlan_objmgr_pdev *pdev, bool is_sr_enable, 144 int32_t srg_pd_threshold, int32_t non_srg_pd_threshold); 145 #endif 146