1 /* 2 * Copyright (c) 2019-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 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 /** 20 * DOC: define public structures of denylist mgr. 21 */ 22 23 #ifndef _WLAN_DLM_PUBLIC_STRUCT_H 24 #define _WLAN_DLM_PUBLIC_STRUCT_H 25 26 #include <qdf_types.h> 27 #include "wlan_objmgr_pdev_obj.h" 28 29 #define MAX_BAD_AP_LIST_SIZE 28 30 #define MAX_RSSI_AVOID_BSSID_LIST 10 31 #define PDEV_MAX_NUM_BSSID_DISALLOW_LIST 28 32 33 /** 34 * enum dlm_reject_ap_source - Source of adding BSSID to DLM 35 * @ADDED_BY_DRIVER: Source adding this BSSID is driver 36 * @ADDED_BY_TARGET: Source adding this BSSID is target 37 */ 38 enum dlm_reject_ap_source { 39 ADDED_BY_DRIVER = 1, 40 ADDED_BY_TARGET, 41 }; 42 43 /** 44 * struct dlm_rssi_disallow_params - structure to specify params for RSSI 45 * reject 46 * @retry_delay: Time before which the AP doesn't expect a connection. 47 * @expected_rssi: RSSI less than which only the STA should try association 48 * @received_time: Time at which the AP was added to denylist. 49 * @original_timeout: Original timeout which the AP sent while denylisting. 50 * @source: Source of adding this BSSID to RSSI reject list 51 */ 52 struct dlm_rssi_disallow_params { 53 uint32_t retry_delay; 54 int8_t expected_rssi; 55 qdf_time_t received_time; 56 uint32_t original_timeout; 57 enum dlm_reject_ap_source source; 58 }; 59 60 /** 61 * enum dlm_reject_ap_type - Rejection type of the AP 62 * @USERSPACE_AVOID_TYPE: userspace wants the AP to be avoided. 63 * @USERSPACE_DENYLIST_TYPE: userspace wants the AP to be denylisted. 64 * @DRIVER_AVOID_TYPE: driver wants the AP to be avoided. 65 * @DRIVER_DENYLIST_TYPE: driver wants the AP to be denylisted. 66 * @DRIVER_RSSI_REJECT_TYPE: driver wants the AP to be in driver rssi 67 * reject. 68 * @DRIVER_MONITOR_TYPE: driver wants the AP to be in monitor list. 69 * @REJECT_REASON_UNKNOWN: Rejection reason unknown 70 */ 71 enum dlm_reject_ap_type { 72 USERSPACE_AVOID_TYPE = 0, 73 USERSPACE_DENYLIST_TYPE = 1, 74 DRIVER_AVOID_TYPE = 2, 75 DRIVER_DENYLIST_TYPE = 3, 76 DRIVER_RSSI_REJECT_TYPE = 4, 77 DRIVER_MONITOR_TYPE = 5, 78 REJECT_REASON_UNKNOWN = 6, 79 }; 80 81 /** 82 * enum dlm_reject_ap_reason - Rejection reason for adding BSSID to DLM 83 * @REASON_UNKNOWN: Unknown reason 84 * @REASON_NUD_FAILURE: NUD failure happened with this BSSID 85 * @REASON_STA_KICKOUT: STA kickout happened with this BSSID 86 * @REASON_ROAM_HO_FAILURE: HO failure happenend with this BSSID 87 * @REASON_ASSOC_REJECT_POOR_RSSI: assoc rsp with reason 71 received from 88 * AP. 89 * @REASON_ASSOC_REJECT_OCE: OCE assoc reject received from the AP. 90 * @REASON_USERSPACE_BL: Userspace wants to denylist this AP. 91 * @REASON_USERSPACE_AVOID_LIST: Userspace wants to avoid this AP. 92 * @REASON_BTM_DISASSOC_IMMINENT: BTM IE received with disassoc imminent 93 * set. 94 * @REASON_BTM_BSS_TERMINATION: BTM IE received with BSS termination set. 95 * @REASON_BTM_MBO_RETRY: BTM IE received from AP with MBO retry set. 96 * @REASON_REASSOC_RSSI_REJECT: Re-Assoc resp received with reason code 34 97 * @REASON_REASSOC_NO_MORE_STAS: Re-assoc reject received with reason code 98 * 17 99 */ 100 enum dlm_reject_ap_reason { 101 REASON_UNKNOWN = 0, 102 REASON_NUD_FAILURE, 103 REASON_STA_KICKOUT, 104 REASON_ROAM_HO_FAILURE, 105 REASON_ASSOC_REJECT_POOR_RSSI, 106 REASON_ASSOC_REJECT_OCE, 107 REASON_USERSPACE_BL, 108 REASON_USERSPACE_AVOID_LIST, 109 REASON_BTM_DISASSOC_IMMINENT, 110 REASON_BTM_BSS_TERMINATION, 111 REASON_BTM_MBO_RETRY, 112 REASON_REASSOC_RSSI_REJECT, 113 REASON_REASSOC_NO_MORE_STAS, 114 }; 115 116 /** 117 * enum dlm_connection_state - State with AP (Connected, Disconnected) 118 * @DLM_AP_CONNECTED: Connected with the AP 119 * @DLM_AP_DISCONNECTED: Disconnected with the AP 120 */ 121 enum dlm_connection_state { 122 DLM_AP_CONNECTED, 123 DLM_AP_DISCONNECTED, 124 }; 125 126 /** 127 * struct reject_ap_config_params - Structure to send reject ap list to FW 128 * @bssid: BSSID of the AP 129 * @reject_ap_type: Type of the rejection done with the BSSID 130 * @reject_duration: time left till the AP is in the reject list. 131 * @expected_rssi: expected RSSI when the AP expects the connection to be 132 * made. 133 * @reject_reason: reason to add the BSSID to DLM 134 * @source: Source of adding the BSSID to DLM 135 * @received_time: Time at which the AP was added to denylist. 136 * @original_timeout: Original timeout which the AP sent while denylisting. 137 */ 138 struct reject_ap_config_params { 139 struct qdf_mac_addr bssid; 140 enum dlm_reject_ap_type reject_ap_type; 141 uint32_t reject_duration; 142 int32_t expected_rssi; 143 enum dlm_reject_ap_reason reject_reason; 144 enum dlm_reject_ap_source source; 145 qdf_time_t received_time; 146 uint32_t original_timeout; 147 }; 148 149 /** 150 * struct reject_ap_params - Struct to send bssid list and there num to FW 151 * @num_of_reject_bssid: num of bssid params there in bssid config. 152 * @bssid_list: Pointer to the bad bssid list 153 */ 154 struct reject_ap_params { 155 uint8_t num_of_reject_bssid; 156 struct reject_ap_config_params *bssid_list; 157 }; 158 159 /** 160 * struct wlan_dlm_tx_ops - structure of tx operation function 161 * pointers for denylist manager component 162 * @dlm_send_reject_ap_list: send reject ap list to fw 163 */ 164 struct wlan_dlm_tx_ops { 165 QDF_STATUS (*dlm_send_reject_ap_list)(struct wlan_objmgr_pdev *pdev, 166 struct reject_ap_params *reject_params); 167 }; 168 169 /** 170 * struct reject_ap_info - structure to specify the reject ap info. 171 * @bssid: BSSID of the AP. 172 * @rssi_reject_params: RSSI reject params of the AP is of type RSSI reject 173 * @reject_ap_type: Reject type of AP (eg. avoid, denylist, rssi reject 174 * etc.) 175 * @reject_reason: reason to add the BSSID to DLM 176 * @source: Source of adding the BSSID to DLM 177 */ 178 struct reject_ap_info { 179 struct qdf_mac_addr bssid; 180 struct dlm_rssi_disallow_params rssi_reject_params; 181 enum dlm_reject_ap_type reject_ap_type; 182 enum dlm_reject_ap_reason reject_reason; 183 enum dlm_reject_ap_source source; 184 }; 185 186 #endif 187