0001
0002
0003
0004
0005 #include "core.h"
0006
0007 #ifndef ATH11K_HAL_DESC_H
0008 #define ATH11K_HAL_DESC_H
0009
0010 #define BUFFER_ADDR_INFO0_ADDR GENMASK(31, 0)
0011
0012 #define BUFFER_ADDR_INFO1_ADDR GENMASK(7, 0)
0013 #define BUFFER_ADDR_INFO1_RET_BUF_MGR GENMASK(10, 8)
0014 #define BUFFER_ADDR_INFO1_SW_COOKIE GENMASK(31, 11)
0015
0016 struct ath11k_buffer_addr {
0017 u32 info0;
0018 u32 info1;
0019 } __packed;
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 enum hal_tlv_tag {
0051 HAL_MACTX_CBF_START = 0 ,
0052 HAL_PHYRX_DATA = 1 ,
0053 HAL_PHYRX_CBF_DATA_RESP = 2 ,
0054 HAL_PHYRX_ABORT_REQUEST = 3 ,
0055 HAL_PHYRX_USER_ABORT_NOTIFICATION = 4 ,
0056 HAL_MACTX_DATA_RESP = 5 ,
0057 HAL_MACTX_CBF_DATA = 6 ,
0058 HAL_MACTX_CBF_DONE = 7 ,
0059 HAL_MACRX_CBF_READ_REQUEST = 8 ,
0060 HAL_MACRX_CBF_DATA_REQUEST = 9 ,
0061 HAL_MACRX_EXPECT_NDP_RECEPTION = 10 ,
0062 HAL_MACRX_FREEZE_CAPTURE_CHANNEL = 11 ,
0063 HAL_MACRX_NDP_TIMEOUT = 12 ,
0064 HAL_MACRX_ABORT_ACK = 13 ,
0065 HAL_MACRX_REQ_IMPLICIT_FB = 14 ,
0066 HAL_MACRX_CHAIN_MASK = 15 ,
0067 HAL_MACRX_NAP_USER = 16 ,
0068 HAL_MACRX_ABORT_REQUEST = 17 ,
0069 HAL_PHYTX_OTHER_TRANSMIT_INFO16 = 18 ,
0070 HAL_PHYTX_ABORT_ACK = 19 ,
0071 HAL_PHYTX_ABORT_REQUEST = 20 ,
0072 HAL_PHYTX_PKT_END = 21 ,
0073 HAL_PHYTX_PPDU_HEADER_INFO_REQUEST = 22 ,
0074 HAL_PHYTX_REQUEST_CTRL_INFO = 23 ,
0075 HAL_PHYTX_DATA_REQUEST = 24 ,
0076 HAL_PHYTX_BF_CV_LOADING_DONE = 25 ,
0077 HAL_PHYTX_NAP_ACK = 26 ,
0078 HAL_PHYTX_NAP_DONE = 27 ,
0079 HAL_PHYTX_OFF_ACK = 28 ,
0080 HAL_PHYTX_ON_ACK = 29 ,
0081 HAL_PHYTX_SYNTH_OFF_ACK = 30 ,
0082 HAL_PHYTX_DEBUG16 = 31 ,
0083 HAL_MACTX_ABORT_REQUEST = 32 ,
0084 HAL_MACTX_ABORT_ACK = 33 ,
0085 HAL_MACTX_PKT_END = 34 ,
0086 HAL_MACTX_PRE_PHY_DESC = 35 ,
0087 HAL_MACTX_BF_PARAMS_COMMON = 36 ,
0088 HAL_MACTX_BF_PARAMS_PER_USER = 37 ,
0089 HAL_MACTX_PREFETCH_CV = 38 ,
0090 HAL_MACTX_USER_DESC_COMMON = 39 ,
0091 HAL_MACTX_USER_DESC_PER_USER = 40 ,
0092 HAL_EXAMPLE_USER_TLV_16 = 41 ,
0093 HAL_EXAMPLE_TLV_16 = 42 ,
0094 HAL_MACTX_PHY_OFF = 43 ,
0095 HAL_MACTX_PHY_ON = 44 ,
0096 HAL_MACTX_SYNTH_OFF = 45 ,
0097 HAL_MACTX_EXPECT_CBF_COMMON = 46 ,
0098 HAL_MACTX_EXPECT_CBF_PER_USER = 47 ,
0099 HAL_MACTX_PHY_DESC = 48 ,
0100 HAL_MACTX_L_SIG_A = 49 ,
0101 HAL_MACTX_L_SIG_B = 50 ,
0102 HAL_MACTX_HT_SIG = 51 ,
0103 HAL_MACTX_VHT_SIG_A = 52 ,
0104 HAL_MACTX_VHT_SIG_B_SU20 = 53 ,
0105 HAL_MACTX_VHT_SIG_B_SU40 = 54 ,
0106 HAL_MACTX_VHT_SIG_B_SU80 = 55 ,
0107 HAL_MACTX_VHT_SIG_B_SU160 = 56 ,
0108 HAL_MACTX_VHT_SIG_B_MU20 = 57 ,
0109 HAL_MACTX_VHT_SIG_B_MU40 = 58 ,
0110 HAL_MACTX_VHT_SIG_B_MU80 = 59 ,
0111 HAL_MACTX_VHT_SIG_B_MU160 = 60 ,
0112 HAL_MACTX_SERVICE = 61 ,
0113 HAL_MACTX_HE_SIG_A_SU = 62 ,
0114 HAL_MACTX_HE_SIG_A_MU_DL = 63 ,
0115 HAL_MACTX_HE_SIG_A_MU_UL = 64 ,
0116 HAL_MACTX_HE_SIG_B1_MU = 65 ,
0117 HAL_MACTX_HE_SIG_B2_MU = 66 ,
0118 HAL_MACTX_HE_SIG_B2_OFDMA = 67 ,
0119 HAL_MACTX_DELETE_CV = 68 ,
0120 HAL_MACTX_MU_UPLINK_COMMON = 69 ,
0121 HAL_MACTX_MU_UPLINK_USER_SETUP = 70 ,
0122 HAL_MACTX_OTHER_TRANSMIT_INFO = 71 ,
0123 HAL_MACTX_PHY_NAP = 72 ,
0124 HAL_MACTX_DEBUG = 73 ,
0125 HAL_PHYRX_ABORT_ACK = 74 ,
0126 HAL_PHYRX_GENERATED_CBF_DETAILS = 75 ,
0127 HAL_PHYRX_RSSI_LEGACY = 76 ,
0128 HAL_PHYRX_RSSI_HT = 77 ,
0129 HAL_PHYRX_USER_INFO = 78 ,
0130 HAL_PHYRX_PKT_END = 79 ,
0131 HAL_PHYRX_DEBUG = 80 ,
0132 HAL_PHYRX_CBF_TRANSFER_DONE = 81 ,
0133 HAL_PHYRX_CBF_TRANSFER_ABORT = 82 ,
0134 HAL_PHYRX_L_SIG_A = 83 ,
0135 HAL_PHYRX_L_SIG_B = 84 ,
0136 HAL_PHYRX_HT_SIG = 85 ,
0137 HAL_PHYRX_VHT_SIG_A = 86 ,
0138 HAL_PHYRX_VHT_SIG_B_SU20 = 87 ,
0139 HAL_PHYRX_VHT_SIG_B_SU40 = 88 ,
0140 HAL_PHYRX_VHT_SIG_B_SU80 = 89 ,
0141 HAL_PHYRX_VHT_SIG_B_SU160 = 90 ,
0142 HAL_PHYRX_VHT_SIG_B_MU20 = 91 ,
0143 HAL_PHYRX_VHT_SIG_B_MU40 = 92 ,
0144 HAL_PHYRX_VHT_SIG_B_MU80 = 93 ,
0145 HAL_PHYRX_VHT_SIG_B_MU160 = 94 ,
0146 HAL_PHYRX_HE_SIG_A_SU = 95 ,
0147 HAL_PHYRX_HE_SIG_A_MU_DL = 96 ,
0148 HAL_PHYRX_HE_SIG_A_MU_UL = 97 ,
0149 HAL_PHYRX_HE_SIG_B1_MU = 98 ,
0150 HAL_PHYRX_HE_SIG_B2_MU = 99 ,
0151 HAL_PHYRX_HE_SIG_B2_OFDMA = 100 ,
0152 HAL_PHYRX_OTHER_RECEIVE_INFO = 101 ,
0153 HAL_PHYRX_COMMON_USER_INFO = 102 ,
0154 HAL_PHYRX_DATA_DONE = 103 ,
0155 HAL_RECEIVE_RSSI_INFO = 104 ,
0156 HAL_RECEIVE_USER_INFO = 105 ,
0157 HAL_MIMO_CONTROL_INFO = 106 ,
0158 HAL_RX_LOCATION_INFO = 107 ,
0159 HAL_COEX_TX_REQ = 108 ,
0160 HAL_DUMMY = 109 ,
0161 HAL_RX_TIMING_OFFSET_INFO = 110 ,
0162 HAL_EXAMPLE_TLV_32_NAME = 111 ,
0163 HAL_MPDU_LIMIT = 112 ,
0164 HAL_NA_LENGTH_END = 113 ,
0165 HAL_OLE_BUF_STATUS = 114 ,
0166 HAL_PCU_PPDU_SETUP_DONE = 115 ,
0167 HAL_PCU_PPDU_SETUP_END = 116 ,
0168 HAL_PCU_PPDU_SETUP_INIT = 117 ,
0169 HAL_PCU_PPDU_SETUP_START = 118 ,
0170 HAL_PDG_FES_SETUP = 119 ,
0171 HAL_PDG_RESPONSE = 120 ,
0172 HAL_PDG_TX_REQ = 121 ,
0173 HAL_SCH_WAIT_INSTR = 122 ,
0174 HAL_SCHEDULER_TLV = 123 ,
0175 HAL_TQM_FLOW_EMPTY_STATUS = 124 ,
0176 HAL_TQM_FLOW_NOT_EMPTY_STATUS = 125 ,
0177 HAL_TQM_GEN_MPDU_LENGTH_LIST = 126 ,
0178 HAL_TQM_GEN_MPDU_LENGTH_LIST_STATUS = 127 ,
0179 HAL_TQM_GEN_MPDUS = 128 ,
0180 HAL_TQM_GEN_MPDUS_STATUS = 129 ,
0181 HAL_TQM_REMOVE_MPDU = 130 ,
0182 HAL_TQM_REMOVE_MPDU_STATUS = 131 ,
0183 HAL_TQM_REMOVE_MSDU = 132 ,
0184 HAL_TQM_REMOVE_MSDU_STATUS = 133 ,
0185 HAL_TQM_UPDATE_TX_MPDU_COUNT = 134 ,
0186 HAL_TQM_WRITE_CMD = 135 ,
0187 HAL_OFDMA_TRIGGER_DETAILS = 136 ,
0188 HAL_TX_DATA = 137 ,
0189 HAL_TX_FES_SETUP = 138 ,
0190 HAL_RX_PACKET = 139 ,
0191 HAL_EXPECTED_RESPONSE = 140 ,
0192 HAL_TX_MPDU_END = 141 ,
0193 HAL_TX_MPDU_START = 142 ,
0194 HAL_TX_MSDU_END = 143 ,
0195 HAL_TX_MSDU_START = 144 ,
0196 HAL_TX_SW_MODE_SETUP = 145 ,
0197 HAL_TXPCU_BUFFER_STATUS = 146 ,
0198 HAL_TXPCU_USER_BUFFER_STATUS = 147 ,
0199 HAL_DATA_TO_TIME_CONFIG = 148 ,
0200 HAL_EXAMPLE_USER_TLV_32 = 149 ,
0201 HAL_MPDU_INFO = 150 ,
0202 HAL_PDG_USER_SETUP = 151 ,
0203 HAL_TX_11AH_SETUP = 152 ,
0204 HAL_REO_UPDATE_RX_REO_QUEUE_STATUS = 153 ,
0205 HAL_TX_PEER_ENTRY = 154 ,
0206 HAL_TX_RAW_OR_NATIVE_FRAME_SETUP = 155 ,
0207 HAL_EXAMPLE_STRUCT_NAME = 156 ,
0208 HAL_PCU_PPDU_SETUP_END_INFO = 157 ,
0209 HAL_PPDU_RATE_SETTING = 158 ,
0210 HAL_PROT_RATE_SETTING = 159 ,
0211 HAL_RX_MPDU_DETAILS = 160 ,
0212 HAL_EXAMPLE_USER_TLV_42 = 161 ,
0213 HAL_RX_MSDU_LINK = 162 ,
0214 HAL_RX_REO_QUEUE = 163 ,
0215 HAL_ADDR_SEARCH_ENTRY = 164 ,
0216 HAL_SCHEDULER_CMD = 165 ,
0217 HAL_TX_FLUSH = 166 ,
0218 HAL_TQM_ENTRANCE_RING = 167 ,
0219 HAL_TX_DATA_WORD = 168 ,
0220 HAL_TX_MPDU_DETAILS = 169 ,
0221 HAL_TX_MPDU_LINK = 170 ,
0222 HAL_TX_MPDU_LINK_PTR = 171 ,
0223 HAL_TX_MPDU_QUEUE_HEAD = 172 ,
0224 HAL_TX_MPDU_QUEUE_EXT = 173 ,
0225 HAL_TX_MPDU_QUEUE_EXT_PTR = 174 ,
0226 HAL_TX_MSDU_DETAILS = 175 ,
0227 HAL_TX_MSDU_EXTENSION = 176 ,
0228 HAL_TX_MSDU_FLOW = 177 ,
0229 HAL_TX_MSDU_LINK = 178 ,
0230 HAL_TX_MSDU_LINK_ENTRY_PTR = 179 ,
0231 HAL_RESPONSE_RATE_SETTING = 180 ,
0232 HAL_TXPCU_BUFFER_BASICS = 181 ,
0233 HAL_UNIFORM_DESCRIPTOR_HEADER = 182 ,
0234 HAL_UNIFORM_TQM_CMD_HEADER = 183 ,
0235 HAL_UNIFORM_TQM_STATUS_HEADER = 184 ,
0236 HAL_USER_RATE_SETTING = 185 ,
0237 HAL_WBM_BUFFER_RING = 186 ,
0238 HAL_WBM_LINK_DESCRIPTOR_RING = 187 ,
0239 HAL_WBM_RELEASE_RING = 188 ,
0240 HAL_TX_FLUSH_REQ = 189 ,
0241 HAL_RX_MSDU_DETAILS = 190 ,
0242 HAL_TQM_WRITE_CMD_STATUS = 191 ,
0243 HAL_TQM_GET_MPDU_QUEUE_STATS = 192 ,
0244 HAL_TQM_GET_MSDU_FLOW_STATS = 193 ,
0245 HAL_EXAMPLE_USER_CTLV_32 = 194 ,
0246 HAL_TX_FES_STATUS_START = 195 ,
0247 HAL_TX_FES_STATUS_USER_PPDU = 196 ,
0248 HAL_TX_FES_STATUS_USER_RESPONSE = 197 ,
0249 HAL_TX_FES_STATUS_END = 198 ,
0250 HAL_RX_TRIG_INFO = 199 ,
0251 HAL_RXPCU_TX_SETUP_CLEAR = 200 ,
0252 HAL_RX_FRAME_BITMAP_REQ = 201 ,
0253 HAL_RX_FRAME_BITMAP_ACK = 202 ,
0254 HAL_COEX_RX_STATUS = 203 ,
0255 HAL_RX_START_PARAM = 204 ,
0256 HAL_RX_PPDU_START = 205 ,
0257 HAL_RX_PPDU_END = 206 ,
0258 HAL_RX_MPDU_START = 207 ,
0259 HAL_RX_MPDU_END = 208 ,
0260 HAL_RX_MSDU_START = 209 ,
0261 HAL_RX_MSDU_END = 210 ,
0262 HAL_RX_ATTENTION = 211 ,
0263 HAL_RECEIVED_RESPONSE_INFO = 212 ,
0264 HAL_RX_PHY_SLEEP = 213 ,
0265 HAL_RX_HEADER = 214 ,
0266 HAL_RX_PEER_ENTRY = 215 ,
0267 HAL_RX_FLUSH = 216 ,
0268 HAL_RX_RESPONSE_REQUIRED_INFO = 217 ,
0269 HAL_RX_FRAMELESS_BAR_DETAILS = 218 ,
0270 HAL_TQM_GET_MPDU_QUEUE_STATS_STATUS = 219 ,
0271 HAL_TQM_GET_MSDU_FLOW_STATS_STATUS = 220 ,
0272 HAL_TX_CBF_INFO = 221 ,
0273 HAL_PCU_PPDU_SETUP_USER = 222 ,
0274 HAL_RX_MPDU_PCU_START = 223 ,
0275 HAL_RX_PM_INFO = 224 ,
0276 HAL_RX_USER_PPDU_END = 225 ,
0277 HAL_RX_PRE_PPDU_START = 226 ,
0278 HAL_RX_PREAMBLE = 227 ,
0279 HAL_TX_FES_SETUP_COMPLETE = 228 ,
0280 HAL_TX_LAST_MPDU_FETCHED = 229 ,
0281 HAL_TXDMA_STOP_REQUEST = 230 ,
0282 HAL_RXPCU_SETUP = 231 ,
0283 HAL_RXPCU_USER_SETUP = 232 ,
0284 HAL_TX_FES_STATUS_ACK_OR_BA = 233 ,
0285 HAL_TQM_ACKED_MPDU = 234 ,
0286 HAL_COEX_TX_RESP = 235 ,
0287 HAL_COEX_TX_STATUS = 236 ,
0288 HAL_MACTX_COEX_PHY_CTRL = 237 ,
0289 HAL_COEX_STATUS_BROADCAST = 238 ,
0290 HAL_RESPONSE_START_STATUS = 239 ,
0291 HAL_RESPONSE_END_STATUS = 240 ,
0292 HAL_CRYPTO_STATUS = 241 ,
0293 HAL_RECEIVED_TRIGGER_INFO = 242 ,
0294 HAL_REO_ENTRANCE_RING = 243 ,
0295 HAL_RX_MPDU_LINK = 244 ,
0296 HAL_COEX_TX_STOP_CTRL = 245 ,
0297 HAL_RX_PPDU_ACK_REPORT = 246 ,
0298 HAL_RX_PPDU_NO_ACK_REPORT = 247 ,
0299 HAL_SCH_COEX_STATUS = 248 ,
0300 HAL_SCHEDULER_COMMAND_STATUS = 249 ,
0301 HAL_SCHEDULER_RX_PPDU_NO_RESPONSE_STATUS = 250 ,
0302 HAL_TX_FES_STATUS_PROT = 251 ,
0303 HAL_TX_FES_STATUS_START_PPDU = 252 ,
0304 HAL_TX_FES_STATUS_START_PROT = 253 ,
0305 HAL_TXPCU_PHYTX_DEBUG32 = 254 ,
0306 HAL_TXPCU_PHYTX_OTHER_TRANSMIT_INFO32 = 255 ,
0307 HAL_TX_MPDU_COUNT_TRANSFER_END = 256 ,
0308 HAL_WHO_ANCHOR_OFFSET = 257 ,
0309 HAL_WHO_ANCHOR_VALUE = 258 ,
0310 HAL_WHO_CCE_INFO = 259 ,
0311 HAL_WHO_COMMIT = 260 ,
0312 HAL_WHO_COMMIT_DONE = 261 ,
0313 HAL_WHO_FLUSH = 262 ,
0314 HAL_WHO_L2_LLC = 263 ,
0315 HAL_WHO_L2_PAYLOAD = 264 ,
0316 HAL_WHO_L3_CHECKSUM = 265 ,
0317 HAL_WHO_L3_INFO = 266 ,
0318 HAL_WHO_L4_CHECKSUM = 267 ,
0319 HAL_WHO_L4_INFO = 268 ,
0320 HAL_WHO_MSDU = 269 ,
0321 HAL_WHO_MSDU_MISC = 270 ,
0322 HAL_WHO_PACKET_DATA = 271 ,
0323 HAL_WHO_PACKET_HDR = 272 ,
0324 HAL_WHO_PPDU_END = 273 ,
0325 HAL_WHO_PPDU_START = 274 ,
0326 HAL_WHO_TSO = 275 ,
0327 HAL_WHO_WMAC_HEADER_PV0 = 276 ,
0328 HAL_WHO_WMAC_HEADER_PV1 = 277 ,
0329 HAL_WHO_WMAC_IV = 278 ,
0330 HAL_MPDU_INFO_END = 279 ,
0331 HAL_MPDU_INFO_BITMAP = 280 ,
0332 HAL_TX_QUEUE_EXTENSION = 281 ,
0333 HAL_RX_PEER_ENTRY_DETAILS = 282 ,
0334 HAL_RX_REO_QUEUE_REFERENCE = 283 ,
0335 HAL_RX_REO_QUEUE_EXT = 284 ,
0336 HAL_SCHEDULER_SELFGEN_RESPONSE_STATUS = 285 ,
0337 HAL_TQM_UPDATE_TX_MPDU_COUNT_STATUS = 286 ,
0338 HAL_TQM_ACKED_MPDU_STATUS = 287 ,
0339 HAL_TQM_ADD_MSDU_STATUS = 288 ,
0340 HAL_RX_MPDU_LINK_PTR = 289 ,
0341 HAL_REO_DESTINATION_RING = 290 ,
0342 HAL_TQM_LIST_GEN_DONE = 291 ,
0343 HAL_WHO_TERMINATE = 292 ,
0344 HAL_TX_LAST_MPDU_END = 293 ,
0345 HAL_TX_CV_DATA = 294 ,
0346 HAL_TCL_ENTRANCE_FROM_PPE_RING = 295 ,
0347 HAL_PPDU_TX_END = 296 ,
0348 HAL_PROT_TX_END = 297 ,
0349 HAL_PDG_RESPONSE_RATE_SETTING = 298 ,
0350 HAL_MPDU_INFO_GLOBAL_END = 299 ,
0351 HAL_TQM_SCH_INSTR_GLOBAL_END = 300 ,
0352 HAL_RX_PPDU_END_USER_STATS = 301 ,
0353 HAL_RX_PPDU_END_USER_STATS_EXT = 302 ,
0354 HAL_NO_ACK_REPORT = 303 ,
0355 HAL_ACK_REPORT = 304 ,
0356 HAL_UNIFORM_REO_CMD_HEADER = 305 ,
0357 HAL_REO_GET_QUEUE_STATS = 306 ,
0358 HAL_REO_FLUSH_QUEUE = 307 ,
0359 HAL_REO_FLUSH_CACHE = 308 ,
0360 HAL_REO_UNBLOCK_CACHE = 309 ,
0361 HAL_UNIFORM_REO_STATUS_HEADER = 310 ,
0362 HAL_REO_GET_QUEUE_STATS_STATUS = 311 ,
0363 HAL_REO_FLUSH_QUEUE_STATUS = 312 ,
0364 HAL_REO_FLUSH_CACHE_STATUS = 313 ,
0365 HAL_REO_UNBLOCK_CACHE_STATUS = 314 ,
0366 HAL_TQM_FLUSH_CACHE = 315 ,
0367 HAL_TQM_UNBLOCK_CACHE = 316 ,
0368 HAL_TQM_FLUSH_CACHE_STATUS = 317 ,
0369 HAL_TQM_UNBLOCK_CACHE_STATUS = 318 ,
0370 HAL_RX_PPDU_END_STATUS_DONE = 319 ,
0371 HAL_RX_STATUS_BUFFER_DONE = 320 ,
0372 HAL_BUFFER_ADDR_INFO = 321 ,
0373 HAL_RX_MSDU_DESC_INFO = 322 ,
0374 HAL_RX_MPDU_DESC_INFO = 323 ,
0375 HAL_TCL_DATA_CMD = 324 ,
0376 HAL_TCL_GSE_CMD = 325 ,
0377 HAL_TCL_EXIT_BASE = 326 ,
0378 HAL_TCL_COMPACT_EXIT_RING = 327 ,
0379 HAL_TCL_REGULAR_EXIT_RING = 328 ,
0380 HAL_TCL_EXTENDED_EXIT_RING = 329 ,
0381 HAL_UPLINK_COMMON_INFO = 330 ,
0382 HAL_UPLINK_USER_SETUP_INFO = 331 ,
0383 HAL_TX_DATA_SYNC = 332 ,
0384 HAL_PHYRX_CBF_READ_REQUEST_ACK = 333 ,
0385 HAL_TCL_STATUS_RING = 334 ,
0386 HAL_TQM_GET_MPDU_HEAD_INFO = 335 ,
0387 HAL_TQM_SYNC_CMD = 336 ,
0388 HAL_TQM_GET_MPDU_HEAD_INFO_STATUS = 337 ,
0389 HAL_TQM_SYNC_CMD_STATUS = 338 ,
0390 HAL_TQM_THRESHOLD_DROP_NOTIFICATION_STATUS = 339 ,
0391 HAL_TQM_DESCRIPTOR_THRESHOLD_REACHED_STATUS = 340 ,
0392 HAL_REO_FLUSH_TIMEOUT_LIST = 341 ,
0393 HAL_REO_FLUSH_TIMEOUT_LIST_STATUS = 342 ,
0394 HAL_REO_TO_PPE_RING = 343 ,
0395 HAL_RX_MPDU_INFO = 344 ,
0396 HAL_REO_DESCRIPTOR_THRESHOLD_REACHED_STATUS = 345 ,
0397 HAL_SCHEDULER_RX_SIFS_RESPONSE_TRIGGER_STATUS = 346 ,
0398 HAL_EXAMPLE_USER_TLV_32_NAME = 347 ,
0399 HAL_RX_PPDU_START_USER_INFO = 348 ,
0400 HAL_RX_RXPCU_CLASSIFICATION_OVERVIEW = 349 ,
0401 HAL_RX_RING_MASK = 350 ,
0402 HAL_WHO_CLASSIFY_INFO = 351 ,
0403 HAL_TXPT_CLASSIFY_INFO = 352 ,
0404 HAL_RXPT_CLASSIFY_INFO = 353 ,
0405 HAL_TX_FLOW_SEARCH_ENTRY = 354 ,
0406 HAL_RX_FLOW_SEARCH_ENTRY = 355 ,
0407 HAL_RECEIVED_TRIGGER_INFO_DETAILS = 356 ,
0408 HAL_COEX_MAC_NAP = 357 ,
0409 HAL_MACRX_ABORT_REQUEST_INFO = 358 ,
0410 HAL_MACTX_ABORT_REQUEST_INFO = 359 ,
0411 HAL_PHYRX_ABORT_REQUEST_INFO = 360 ,
0412 HAL_PHYTX_ABORT_REQUEST_INFO = 361 ,
0413 HAL_RXPCU_PPDU_END_INFO = 362 ,
0414 HAL_WHO_MESH_CONTROL = 363 ,
0415 HAL_L_SIG_A_INFO = 364 ,
0416 HAL_L_SIG_B_INFO = 365 ,
0417 HAL_HT_SIG_INFO = 366 ,
0418 HAL_VHT_SIG_A_INFO = 367 ,
0419 HAL_VHT_SIG_B_SU20_INFO = 368 ,
0420 HAL_VHT_SIG_B_SU40_INFO = 369 ,
0421 HAL_VHT_SIG_B_SU80_INFO = 370 ,
0422 HAL_VHT_SIG_B_SU160_INFO = 371 ,
0423 HAL_VHT_SIG_B_MU20_INFO = 372 ,
0424 HAL_VHT_SIG_B_MU40_INFO = 373 ,
0425 HAL_VHT_SIG_B_MU80_INFO = 374 ,
0426 HAL_VHT_SIG_B_MU160_INFO = 375 ,
0427 HAL_SERVICE_INFO = 376 ,
0428 HAL_HE_SIG_A_SU_INFO = 377 ,
0429 HAL_HE_SIG_A_MU_DL_INFO = 378 ,
0430 HAL_HE_SIG_A_MU_UL_INFO = 379 ,
0431 HAL_HE_SIG_B1_MU_INFO = 380 ,
0432 HAL_HE_SIG_B2_MU_INFO = 381 ,
0433 HAL_HE_SIG_B2_OFDMA_INFO = 382 ,
0434 HAL_PDG_SW_MODE_BW_START = 383 ,
0435 HAL_PDG_SW_MODE_BW_END = 384 ,
0436 HAL_PDG_WAIT_FOR_MAC_REQUEST = 385 ,
0437 HAL_PDG_WAIT_FOR_PHY_REQUEST = 386 ,
0438 HAL_SCHEDULER_END = 387 ,
0439 HAL_PEER_TABLE_ENTRY = 388 ,
0440 HAL_SW_PEER_INFO = 389 ,
0441 HAL_RXOLE_CCE_CLASSIFY_INFO = 390 ,
0442 HAL_TCL_CCE_CLASSIFY_INFO = 391 ,
0443 HAL_RXOLE_CCE_INFO = 392 ,
0444 HAL_TCL_CCE_INFO = 393 ,
0445 HAL_TCL_CCE_SUPERRULE = 394 ,
0446 HAL_CCE_RULE = 395 ,
0447 HAL_RX_PPDU_START_DROPPED = 396 ,
0448 HAL_RX_PPDU_END_DROPPED = 397 ,
0449 HAL_RX_PPDU_END_STATUS_DONE_DROPPED = 398 ,
0450 HAL_RX_MPDU_START_DROPPED = 399 ,
0451 HAL_RX_MSDU_START_DROPPED = 400 ,
0452 HAL_RX_MSDU_END_DROPPED = 401 ,
0453 HAL_RX_MPDU_END_DROPPED = 402 ,
0454 HAL_RX_ATTENTION_DROPPED = 403 ,
0455 HAL_TXPCU_USER_SETUP = 404 ,
0456 HAL_RXPCU_USER_SETUP_EXT = 405 ,
0457 HAL_CE_SRC_DESC = 406 ,
0458 HAL_CE_STAT_DESC = 407 ,
0459 HAL_RXOLE_CCE_SUPERRULE = 408 ,
0460 HAL_TX_RATE_STATS_INFO = 409 ,
0461 HAL_CMD_PART_0_END = 410 ,
0462 HAL_MACTX_SYNTH_ON = 411 ,
0463 HAL_SCH_CRITICAL_TLV_REFERENCE = 412 ,
0464 HAL_TQM_MPDU_GLOBAL_START = 413 ,
0465 HAL_EXAMPLE_TLV_32 = 414 ,
0466 HAL_TQM_UPDATE_TX_MSDU_FLOW = 415 ,
0467 HAL_TQM_UPDATE_TX_MPDU_QUEUE_HEAD = 416 ,
0468 HAL_TQM_UPDATE_TX_MSDU_FLOW_STATUS = 417 ,
0469 HAL_TQM_UPDATE_TX_MPDU_QUEUE_HEAD_STATUS = 418 ,
0470 HAL_REO_UPDATE_RX_REO_QUEUE = 419 ,
0471 HAL_CE_DST_DESC = 420 ,
0472 HAL_TLV_BASE = 511 ,
0473 };
0474
0475 #define HAL_TLV_HDR_TAG GENMASK(9, 1)
0476 #define HAL_TLV_HDR_LEN GENMASK(25, 10)
0477 #define HAL_TLV_USR_ID GENMASK(31, 26)
0478
0479 #define HAL_TLV_ALIGN 4
0480
0481 struct hal_tlv_hdr {
0482 u32 tl;
0483 u8 value[];
0484 } __packed;
0485
0486 #define RX_MPDU_DESC_INFO0_MSDU_COUNT GENMASK(7, 0)
0487 #define RX_MPDU_DESC_INFO0_SEQ_NUM GENMASK(19, 8)
0488 #define RX_MPDU_DESC_INFO0_FRAG_FLAG BIT(20)
0489 #define RX_MPDU_DESC_INFO0_MPDU_RETRY BIT(21)
0490 #define RX_MPDU_DESC_INFO0_AMPDU_FLAG BIT(22)
0491 #define RX_MPDU_DESC_INFO0_BAR_FRAME BIT(23)
0492 #define RX_MPDU_DESC_INFO0_VALID_PN BIT(24)
0493 #define RX_MPDU_DESC_INFO0_VALID_SA BIT(25)
0494 #define RX_MPDU_DESC_INFO0_SA_IDX_TIMEOUT BIT(26)
0495 #define RX_MPDU_DESC_INFO0_VALID_DA BIT(27)
0496 #define RX_MPDU_DESC_INFO0_DA_MCBC BIT(28)
0497 #define RX_MPDU_DESC_INFO0_DA_IDX_TIMEOUT BIT(29)
0498 #define RX_MPDU_DESC_INFO0_RAW_MPDU BIT(30)
0499
0500 #define RX_MPDU_DESC_META_DATA_PEER_ID GENMASK(15, 0)
0501
0502 struct rx_mpdu_desc {
0503 u32 info0;
0504 u32 meta_data;
0505 } __packed;
0506
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524
0525
0526
0527
0528
0529
0530
0531
0532
0533
0534
0535
0536
0537
0538
0539
0540
0541
0542
0543
0544
0545
0546
0547
0548
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559
0560
0561
0562
0563 enum hal_rx_msdu_desc_reo_dest_ind {
0564 HAL_RX_MSDU_DESC_REO_DEST_IND_TCL,
0565 HAL_RX_MSDU_DESC_REO_DEST_IND_SW1,
0566 HAL_RX_MSDU_DESC_REO_DEST_IND_SW2,
0567 HAL_RX_MSDU_DESC_REO_DEST_IND_SW3,
0568 HAL_RX_MSDU_DESC_REO_DEST_IND_SW4,
0569 HAL_RX_MSDU_DESC_REO_DEST_IND_RELEASE,
0570 HAL_RX_MSDU_DESC_REO_DEST_IND_FW,
0571 };
0572
0573 #define RX_MSDU_DESC_INFO0_FIRST_MSDU_IN_MPDU BIT(0)
0574 #define RX_MSDU_DESC_INFO0_LAST_MSDU_IN_MPDU BIT(1)
0575 #define RX_MSDU_DESC_INFO0_MSDU_CONTINUATION BIT(2)
0576 #define RX_MSDU_DESC_INFO0_MSDU_LENGTH GENMASK(16, 3)
0577 #define RX_MSDU_DESC_INFO0_REO_DEST_IND GENMASK(21, 17)
0578 #define RX_MSDU_DESC_INFO0_MSDU_DROP BIT(22)
0579 #define RX_MSDU_DESC_INFO0_VALID_SA BIT(23)
0580 #define RX_MSDU_DESC_INFO0_SA_IDX_TIMEOUT BIT(24)
0581 #define RX_MSDU_DESC_INFO0_VALID_DA BIT(25)
0582 #define RX_MSDU_DESC_INFO0_DA_MCBC BIT(26)
0583 #define RX_MSDU_DESC_INFO0_DA_IDX_TIMEOUT BIT(27)
0584
0585 #define HAL_RX_MSDU_PKT_LENGTH_GET(val) \
0586 (FIELD_GET(RX_MSDU_DESC_INFO0_MSDU_LENGTH, (val)))
0587
0588 struct rx_msdu_desc {
0589 u32 info0;
0590 u32 rsvd0;
0591 } __packed;
0592
0593
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649 enum hal_reo_dest_ring_buffer_type {
0650 HAL_REO_DEST_RING_BUFFER_TYPE_MSDU,
0651 HAL_REO_DEST_RING_BUFFER_TYPE_LINK_DESC,
0652 };
0653
0654 enum hal_reo_dest_ring_push_reason {
0655 HAL_REO_DEST_RING_PUSH_REASON_ERR_DETECTED,
0656 HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION,
0657 };
0658
0659 enum hal_reo_dest_ring_error_code {
0660 HAL_REO_DEST_RING_ERROR_CODE_DESC_ADDR_ZERO,
0661 HAL_REO_DEST_RING_ERROR_CODE_DESC_INVALID,
0662 HAL_REO_DEST_RING_ERROR_CODE_AMPDU_IN_NON_BA,
0663 HAL_REO_DEST_RING_ERROR_CODE_NON_BA_DUPLICATE,
0664 HAL_REO_DEST_RING_ERROR_CODE_BA_DUPLICATE,
0665 HAL_REO_DEST_RING_ERROR_CODE_FRAME_2K_JUMP,
0666 HAL_REO_DEST_RING_ERROR_CODE_BAR_2K_JUMP,
0667 HAL_REO_DEST_RING_ERROR_CODE_FRAME_OOR,
0668 HAL_REO_DEST_RING_ERROR_CODE_BAR_OOR,
0669 HAL_REO_DEST_RING_ERROR_CODE_NO_BA_SESSION,
0670 HAL_REO_DEST_RING_ERROR_CODE_FRAME_SN_EQUALS_SSN,
0671 HAL_REO_DEST_RING_ERROR_CODE_PN_CHECK_FAILED,
0672 HAL_REO_DEST_RING_ERROR_CODE_2K_ERR_FLAG_SET,
0673 HAL_REO_DEST_RING_ERROR_CODE_PN_ERR_FLAG_SET,
0674 HAL_REO_DEST_RING_ERROR_CODE_DESC_BLOCKED,
0675 HAL_REO_DEST_RING_ERROR_CODE_MAX,
0676 };
0677
0678 #define HAL_REO_DEST_RING_INFO0_QUEUE_ADDR_HI GENMASK(7, 0)
0679 #define HAL_REO_DEST_RING_INFO0_BUFFER_TYPE BIT(8)
0680 #define HAL_REO_DEST_RING_INFO0_PUSH_REASON GENMASK(10, 9)
0681 #define HAL_REO_DEST_RING_INFO0_ERROR_CODE GENMASK(15, 11)
0682 #define HAL_REO_DEST_RING_INFO0_RX_QUEUE_NUM GENMASK(31, 16)
0683
0684 #define HAL_REO_DEST_RING_INFO1_REORDER_INFO_VALID BIT(0)
0685 #define HAL_REO_DEST_RING_INFO1_REORDER_OPCODE GENMASK(4, 1)
0686 #define HAL_REO_DEST_RING_INFO1_REORDER_SLOT_IDX GENMASK(12, 5)
0687
0688 #define HAL_REO_DEST_RING_INFO2_RING_ID GENMASK(27, 20)
0689 #define HAL_REO_DEST_RING_INFO2_LOOPING_COUNT GENMASK(31, 28)
0690
0691 struct hal_reo_dest_ring {
0692 struct ath11k_buffer_addr buf_addr_info;
0693 struct rx_mpdu_desc rx_mpdu_info;
0694 struct rx_msdu_desc rx_msdu_info;
0695 u32 queue_addr_lo;
0696 u32 info0;
0697 u32 info1;
0698 u32 rsvd0;
0699 u32 rsvd1;
0700 u32 rsvd2;
0701 u32 rsvd3;
0702 u32 rsvd4;
0703 u32 rsvd5;
0704 u32 info2;
0705 } __packed;
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737
0738
0739
0740
0741
0742
0743
0744
0745
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766
0767
0768 enum hal_reo_entr_rxdma_ecode {
0769 HAL_REO_ENTR_RING_RXDMA_ECODE_OVERFLOW_ERR,
0770 HAL_REO_ENTR_RING_RXDMA_ECODE_MPDU_LEN_ERR,
0771 HAL_REO_ENTR_RING_RXDMA_ECODE_FCS_ERR,
0772 HAL_REO_ENTR_RING_RXDMA_ECODE_DECRYPT_ERR,
0773 HAL_REO_ENTR_RING_RXDMA_ECODE_TKIP_MIC_ERR,
0774 HAL_REO_ENTR_RING_RXDMA_ECODE_UNECRYPTED_ERR,
0775 HAL_REO_ENTR_RING_RXDMA_ECODE_MSDU_LEN_ERR,
0776 HAL_REO_ENTR_RING_RXDMA_ECODE_MSDU_LIMIT_ERR,
0777 HAL_REO_ENTR_RING_RXDMA_ECODE_WIFI_PARSE_ERR,
0778 HAL_REO_ENTR_RING_RXDMA_ECODE_AMSDU_PARSE_ERR,
0779 HAL_REO_ENTR_RING_RXDMA_ECODE_SA_TIMEOUT_ERR,
0780 HAL_REO_ENTR_RING_RXDMA_ECODE_DA_TIMEOUT_ERR,
0781 HAL_REO_ENTR_RING_RXDMA_ECODE_FLOW_TIMEOUT_ERR,
0782 HAL_REO_ENTR_RING_RXDMA_ECODE_FLUSH_REQUEST_ERR,
0783 HAL_REO_ENTR_RING_RXDMA_ECODE_MAX,
0784 };
0785
0786 #define HAL_REO_ENTR_RING_INFO0_QUEUE_ADDR_HI GENMASK(7, 0)
0787 #define HAL_REO_ENTR_RING_INFO0_MPDU_BYTE_COUNT GENMASK(21, 8)
0788 #define HAL_REO_ENTR_RING_INFO0_DEST_IND GENMASK(26, 22)
0789 #define HAL_REO_ENTR_RING_INFO0_FRAMELESS_BAR BIT(27)
0790
0791 #define HAL_REO_ENTR_RING_INFO1_RXDMA_PUSH_REASON GENMASK(1, 0)
0792 #define HAL_REO_ENTR_RING_INFO1_RXDMA_ERROR_CODE GENMASK(6, 2)
0793
0794 struct hal_reo_entrance_ring {
0795 struct ath11k_buffer_addr buf_addr_info;
0796 struct rx_mpdu_desc rx_mpdu_info;
0797 u32 queue_addr_lo;
0798 u32 info0;
0799 u32 info1;
0800 u32 info2;
0801
0802 } __packed;
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862 #define HAL_SW_MON_RING_INFO0_RXDMA_PUSH_REASON GENMASK(1, 0)
0863 #define HAL_SW_MON_RING_INFO0_RXDMA_ERROR_CODE GENMASK(6, 2)
0864 #define HAL_SW_MON_RING_INFO0_MPDU_FRAG_NUMBER GENMASK(10, 7)
0865 #define HAL_SW_MON_RING_INFO0_FRAMELESS_BAR BIT(11)
0866 #define HAL_SW_MON_RING_INFO0_STATUS_BUF_CNT GENMASK(15, 12)
0867 #define HAL_SW_MON_RING_INFO0_END_OF_PPDU BIT(16)
0868
0869 #define HAL_SW_MON_RING_INFO1_PHY_PPDU_ID GENMASK(15, 0)
0870 #define HAL_SW_MON_RING_INFO1_RING_ID GENMASK(27, 20)
0871 #define HAL_SW_MON_RING_INFO1_LOOPING_COUNT GENMASK(31, 28)
0872
0873 struct hal_sw_monitor_ring {
0874 struct ath11k_buffer_addr buf_addr_info;
0875 struct rx_mpdu_desc rx_mpdu_info;
0876 struct ath11k_buffer_addr status_buf_addr_info;
0877 u32 info0;
0878 u32 info1;
0879 } __packed;
0880
0881 #define HAL_REO_CMD_HDR_INFO0_CMD_NUMBER GENMASK(15, 0)
0882 #define HAL_REO_CMD_HDR_INFO0_STATUS_REQUIRED BIT(16)
0883
0884 struct hal_reo_cmd_hdr {
0885 u32 info0;
0886 } __packed;
0887
0888 #define HAL_REO_GET_QUEUE_STATS_INFO0_QUEUE_ADDR_HI GENMASK(7, 0)
0889 #define HAL_REO_GET_QUEUE_STATS_INFO0_CLEAR_STATS BIT(8)
0890
0891 struct hal_reo_get_queue_stats {
0892 struct hal_reo_cmd_hdr cmd;
0893 u32 queue_addr_lo;
0894 u32 info0;
0895 u32 rsvd0[6];
0896 } __packed;
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925
0926
0927
0928
0929 #define HAL_REO_FLUSH_QUEUE_INFO0_DESC_ADDR_HI GENMASK(7, 0)
0930 #define HAL_REO_FLUSH_QUEUE_INFO0_BLOCK_DESC_ADDR BIT(8)
0931 #define HAL_REO_FLUSH_QUEUE_INFO0_BLOCK_RESRC_IDX GENMASK(10, 9)
0932
0933 struct hal_reo_flush_queue {
0934 struct hal_reo_cmd_hdr cmd;
0935 u32 desc_addr_lo;
0936 u32 info0;
0937 u32 rsvd0[6];
0938 } __packed;
0939
0940 #define HAL_REO_FLUSH_CACHE_INFO0_CACHE_ADDR_HI GENMASK(7, 0)
0941 #define HAL_REO_FLUSH_CACHE_INFO0_FWD_ALL_MPDUS BIT(8)
0942 #define HAL_REO_FLUSH_CACHE_INFO0_RELEASE_BLOCK_IDX BIT(9)
0943 #define HAL_REO_FLUSH_CACHE_INFO0_BLOCK_RESRC_IDX GENMASK(11, 10)
0944 #define HAL_REO_FLUSH_CACHE_INFO0_FLUSH_WO_INVALIDATE BIT(12)
0945 #define HAL_REO_FLUSH_CACHE_INFO0_BLOCK_CACHE_USAGE BIT(13)
0946 #define HAL_REO_FLUSH_CACHE_INFO0_FLUSH_ALL BIT(14)
0947
0948 struct hal_reo_flush_cache {
0949 struct hal_reo_cmd_hdr cmd;
0950 u32 cache_addr_lo;
0951 u32 info0;
0952 u32 rsvd0[6];
0953 } __packed;
0954
0955 #define HAL_TCL_DATA_CMD_INFO0_DESC_TYPE BIT(0)
0956 #define HAL_TCL_DATA_CMD_INFO0_EPD BIT(1)
0957 #define HAL_TCL_DATA_CMD_INFO0_ENCAP_TYPE GENMASK(3, 2)
0958 #define HAL_TCL_DATA_CMD_INFO0_ENCRYPT_TYPE GENMASK(7, 4)
0959 #define HAL_TCL_DATA_CMD_INFO0_SRC_BUF_SWAP BIT(8)
0960 #define HAL_TCL_DATA_CMD_INFO0_LNK_META_SWAP BIT(9)
0961 #define HAL_TCL_DATA_CMD_INFO0_SEARCH_TYPE GENMASK(13, 12)
0962 #define HAL_TCL_DATA_CMD_INFO0_ADDR_EN GENMASK(15, 14)
0963 #define HAL_TCL_DATA_CMD_INFO0_CMD_NUM GENMASK(31, 16)
0964
0965 #define HAL_TCL_DATA_CMD_INFO1_DATA_LEN GENMASK(15, 0)
0966 #define HAL_TCL_DATA_CMD_INFO1_IP4_CKSUM_EN BIT(16)
0967 #define HAL_TCL_DATA_CMD_INFO1_UDP4_CKSUM_EN BIT(17)
0968 #define HAL_TCL_DATA_CMD_INFO1_UDP6_CKSUM_EN BIT(18)
0969 #define HAL_TCL_DATA_CMD_INFO1_TCP4_CKSUM_EN BIT(19)
0970 #define HAL_TCL_DATA_CMD_INFO1_TCP6_CKSUM_EN BIT(20)
0971 #define HAL_TCL_DATA_CMD_INFO1_TO_FW BIT(21)
0972 #define HAL_TCL_DATA_CMD_INFO1_PKT_OFFSET GENMASK(31, 23)
0973
0974 #define HAL_TCL_DATA_CMD_INFO2_BUF_TIMESTAMP GENMASK(18, 0)
0975 #define HAL_TCL_DATA_CMD_INFO2_BUF_T_VALID BIT(19)
0976 #define HAL_IPQ8074_TCL_DATA_CMD_INFO2_MESH_ENABLE BIT(20)
0977 #define HAL_TCL_DATA_CMD_INFO2_TID_OVERWRITE BIT(21)
0978 #define HAL_TCL_DATA_CMD_INFO2_TID GENMASK(25, 22)
0979 #define HAL_TCL_DATA_CMD_INFO2_LMAC_ID GENMASK(27, 26)
0980
0981 #define HAL_TCL_DATA_CMD_INFO3_DSCP_TID_TABLE_IDX GENMASK(5, 0)
0982 #define HAL_TCL_DATA_CMD_INFO3_SEARCH_INDEX GENMASK(25, 6)
0983 #define HAL_TCL_DATA_CMD_INFO3_CACHE_SET_NUM GENMASK(29, 26)
0984 #define HAL_QCN9074_TCL_DATA_CMD_INFO3_MESH_ENABLE GENMASK(31, 30)
0985
0986 #define HAL_TCL_DATA_CMD_INFO4_RING_ID GENMASK(27, 20)
0987 #define HAL_TCL_DATA_CMD_INFO4_LOOPING_COUNT GENMASK(31, 28)
0988
0989 enum hal_encrypt_type {
0990 HAL_ENCRYPT_TYPE_WEP_40,
0991 HAL_ENCRYPT_TYPE_WEP_104,
0992 HAL_ENCRYPT_TYPE_TKIP_NO_MIC,
0993 HAL_ENCRYPT_TYPE_WEP_128,
0994 HAL_ENCRYPT_TYPE_TKIP_MIC,
0995 HAL_ENCRYPT_TYPE_WAPI,
0996 HAL_ENCRYPT_TYPE_CCMP_128,
0997 HAL_ENCRYPT_TYPE_OPEN,
0998 HAL_ENCRYPT_TYPE_CCMP_256,
0999 HAL_ENCRYPT_TYPE_GCMP_128,
1000 HAL_ENCRYPT_TYPE_AES_GCMP_256,
1001 HAL_ENCRYPT_TYPE_WAPI_GCM_SM4,
1002 };
1003
1004 enum hal_tcl_encap_type {
1005 HAL_TCL_ENCAP_TYPE_RAW,
1006 HAL_TCL_ENCAP_TYPE_NATIVE_WIFI,
1007 HAL_TCL_ENCAP_TYPE_ETHERNET,
1008 HAL_TCL_ENCAP_TYPE_802_3 = 3,
1009 };
1010
1011 enum hal_tcl_desc_type {
1012 HAL_TCL_DESC_TYPE_BUFFER,
1013 HAL_TCL_DESC_TYPE_EXT_DESC,
1014 };
1015
1016 enum hal_wbm_htt_tx_comp_status {
1017 HAL_WBM_REL_HTT_TX_COMP_STATUS_OK,
1018 HAL_WBM_REL_HTT_TX_COMP_STATUS_DROP,
1019 HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL,
1020 HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ,
1021 HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT,
1022 HAL_WBM_REL_HTT_TX_COMP_STATUS_MEC_NOTIFY,
1023 };
1024
1025 struct hal_tcl_data_cmd {
1026 struct ath11k_buffer_addr buf_addr_info;
1027 u32 info0;
1028 u32 info1;
1029 u32 info2;
1030 u32 info3;
1031 u32 info4;
1032 } __packed;
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172 #define HAL_TCL_DESC_LEN sizeof(struct hal_tcl_data_cmd)
1173
1174 enum hal_tcl_gse_ctrl {
1175 HAL_TCL_GSE_CTRL_RD_STAT,
1176 HAL_TCL_GSE_CTRL_SRCH_DIS,
1177 HAL_TCL_GSE_CTRL_WR_BK_SINGLE,
1178 HAL_TCL_GSE_CTRL_WR_BK_ALL,
1179 HAL_TCL_GSE_CTRL_INVAL_SINGLE,
1180 HAL_TCL_GSE_CTRL_INVAL_ALL,
1181 HAL_TCL_GSE_CTRL_WR_BK_INVAL_SINGLE,
1182 HAL_TCL_GSE_CTRL_WR_BK_INVAL_ALL,
1183 HAL_TCL_GSE_CTRL_CLR_STAT_SINGLE,
1184 };
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208 #define HAL_TCL_GSE_CMD_INFO0_CTRL_BUF_ADDR_HI GENMASK(7, 0)
1209 #define HAL_TCL_GSE_CMD_INFO0_GSE_CTRL GENMASK(11, 8)
1210 #define HAL_TCL_GSE_CMD_INFO0_GSE_SEL BIT(12)
1211 #define HAL_TCL_GSE_CMD_INFO0_STATUS_DEST_RING_ID BIT(13)
1212 #define HAL_TCL_GSE_CMD_INFO0_SWAP BIT(14)
1213
1214 #define HAL_TCL_GSE_CMD_INFO1_RING_ID GENMASK(27, 20)
1215 #define HAL_TCL_GSE_CMD_INFO1_LOOPING_COUNT GENMASK(31, 28)
1216
1217 struct hal_tcl_gse_cmd {
1218 u32 ctrl_buf_addr_lo;
1219 u32 info0;
1220 u32 meta_data[2];
1221 u32 rsvd0[2];
1222 u32 info1;
1223 } __packed;
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250 enum hal_tcl_cache_op_res {
1251 HAL_TCL_CACHE_OP_RES_DONE,
1252 HAL_TCL_CACHE_OP_RES_NOT_FOUND,
1253 HAL_TCL_CACHE_OP_RES_TIMEOUT,
1254 };
1255
1256 #define HAL_TCL_STATUS_RING_INFO0_GSE_CTRL GENMASK(3, 0)
1257 #define HAL_TCL_STATUS_RING_INFO0_GSE_SEL BIT(4)
1258 #define HAL_TCL_STATUS_RING_INFO0_CACHE_OP_RES GENMASK(6, 5)
1259 #define HAL_TCL_STATUS_RING_INFO0_MSDU_CNT GENMASK(31, 8)
1260
1261 #define HAL_TCL_STATUS_RING_INFO1_HASH_IDX GENMASK(19, 0)
1262
1263 #define HAL_TCL_STATUS_RING_INFO2_RING_ID GENMASK(27, 20)
1264 #define HAL_TCL_STATUS_RING_INFO2_LOOPING_COUNT GENMASK(31, 28)
1265
1266 struct hal_tcl_status_ring {
1267 u32 info0;
1268 u32 msdu_byte_count;
1269 u32 msdu_timestamp;
1270 u32 meta_data[2];
1271 u32 info1;
1272 u32 rsvd0;
1273 u32 info2;
1274 } __packed;
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299 #define HAL_CE_SRC_DESC_ADDR_INFO_ADDR_HI GENMASK(7, 0)
1300 #define HAL_CE_SRC_DESC_ADDR_INFO_HASH_EN BIT(8)
1301 #define HAL_CE_SRC_DESC_ADDR_INFO_BYTE_SWAP BIT(9)
1302 #define HAL_CE_SRC_DESC_ADDR_INFO_DEST_SWAP BIT(10)
1303 #define HAL_CE_SRC_DESC_ADDR_INFO_GATHER BIT(11)
1304 #define HAL_CE_SRC_DESC_ADDR_INFO_LEN GENMASK(31, 16)
1305
1306 #define HAL_CE_SRC_DESC_META_INFO_DATA GENMASK(15, 0)
1307
1308 #define HAL_CE_SRC_DESC_FLAGS_RING_ID GENMASK(27, 20)
1309 #define HAL_CE_SRC_DESC_FLAGS_LOOP_CNT HAL_SRNG_DESC_LOOP_CNT
1310
1311 struct hal_ce_srng_src_desc {
1312 u32 buffer_addr_low;
1313 u32 buffer_addr_info;
1314 u32 meta_info;
1315 u32 flags;
1316 } __packed;
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396 #define HAL_CE_DEST_DESC_ADDR_INFO_ADDR_HI GENMASK(7, 0)
1397 #define HAL_CE_DEST_DESC_ADDR_INFO_RING_ID GENMASK(27, 20)
1398 #define HAL_CE_DEST_DESC_ADDR_INFO_LOOP_CNT HAL_SRNG_DESC_LOOP_CNT
1399
1400 struct hal_ce_srng_dest_desc {
1401 u32 buffer_addr_low;
1402 u32 buffer_addr_info;
1403 } __packed;
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445 #define HAL_CE_DST_STATUS_DESC_FLAGS_HASH_EN BIT(8)
1446 #define HAL_CE_DST_STATUS_DESC_FLAGS_BYTE_SWAP BIT(9)
1447 #define HAL_CE_DST_STATUS_DESC_FLAGS_DEST_SWAP BIT(10)
1448 #define HAL_CE_DST_STATUS_DESC_FLAGS_GATHER BIT(11)
1449 #define HAL_CE_DST_STATUS_DESC_FLAGS_LEN GENMASK(31, 16)
1450
1451 #define HAL_CE_DST_STATUS_DESC_META_INFO_DATA GENMASK(15, 0)
1452 #define HAL_CE_DST_STATUS_DESC_META_INFO_RING_ID GENMASK(27, 20)
1453 #define HAL_CE_DST_STATUS_DESC_META_INFO_LOOP_CNT HAL_SRNG_DESC_LOOP_CNT
1454
1455 struct hal_ce_srng_dst_status_desc {
1456 u32 flags;
1457 u32 toeplitz_hash0;
1458 u32 toeplitz_hash1;
1459 u32 meta_info;
1460 } __packed;
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527 #define HAL_TX_RATE_STATS_INFO0_VALID BIT(0)
1528 #define HAL_TX_RATE_STATS_INFO0_BW GENMASK(2, 1)
1529 #define HAL_TX_RATE_STATS_INFO0_PKT_TYPE GENMASK(6, 3)
1530 #define HAL_TX_RATE_STATS_INFO0_STBC BIT(7)
1531 #define HAL_TX_RATE_STATS_INFO0_LDPC BIT(8)
1532 #define HAL_TX_RATE_STATS_INFO0_SGI GENMASK(10, 9)
1533 #define HAL_TX_RATE_STATS_INFO0_MCS GENMASK(14, 11)
1534 #define HAL_TX_RATE_STATS_INFO0_OFDMA_TX BIT(15)
1535 #define HAL_TX_RATE_STATS_INFO0_TONES_IN_RU GENMASK(27, 16)
1536
1537 enum hal_tx_rate_stats_bw {
1538 HAL_TX_RATE_STATS_BW_20,
1539 HAL_TX_RATE_STATS_BW_40,
1540 HAL_TX_RATE_STATS_BW_80,
1541 HAL_TX_RATE_STATS_BW_160,
1542 };
1543
1544 enum hal_tx_rate_stats_pkt_type {
1545 HAL_TX_RATE_STATS_PKT_TYPE_11A,
1546 HAL_TX_RATE_STATS_PKT_TYPE_11B,
1547 HAL_TX_RATE_STATS_PKT_TYPE_11N,
1548 HAL_TX_RATE_STATS_PKT_TYPE_11AC,
1549 HAL_TX_RATE_STATS_PKT_TYPE_11AX,
1550 };
1551
1552 enum hal_tx_rate_stats_sgi {
1553 HAL_TX_RATE_STATS_SGI_08US,
1554 HAL_TX_RATE_STATS_SGI_04US,
1555 HAL_TX_RATE_STATS_SGI_16US,
1556 HAL_TX_RATE_STATS_SGI_32US,
1557 };
1558
1559 struct hal_tx_rate_stats {
1560 u32 info0;
1561 u32 tsf;
1562 } __packed;
1563
1564 struct hal_wbm_link_desc {
1565 struct ath11k_buffer_addr buf_addr_info;
1566 } __packed;
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578 enum hal_wbm_rel_src_module {
1579 HAL_WBM_REL_SRC_MODULE_TQM,
1580 HAL_WBM_REL_SRC_MODULE_RXDMA,
1581 HAL_WBM_REL_SRC_MODULE_REO,
1582 HAL_WBM_REL_SRC_MODULE_FW,
1583 HAL_WBM_REL_SRC_MODULE_SW,
1584 };
1585
1586 enum hal_wbm_rel_desc_type {
1587 HAL_WBM_REL_DESC_TYPE_REL_MSDU,
1588 HAL_WBM_REL_DESC_TYPE_MSDU_LINK,
1589 HAL_WBM_REL_DESC_TYPE_MPDU_LINK,
1590 HAL_WBM_REL_DESC_TYPE_MSDU_EXT,
1591 HAL_WBM_REL_DESC_TYPE_QUEUE_EXT,
1592 };
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613 enum hal_wbm_rel_bm_act {
1614 HAL_WBM_REL_BM_ACT_PUT_IN_IDLE,
1615 HAL_WBM_REL_BM_ACT_REL_MSDU,
1616 };
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636 #define HAL_WBM_RELEASE_INFO0_REL_SRC_MODULE GENMASK(2, 0)
1637 #define HAL_WBM_RELEASE_INFO0_BM_ACTION GENMASK(5, 3)
1638 #define HAL_WBM_RELEASE_INFO0_DESC_TYPE GENMASK(8, 6)
1639 #define HAL_WBM_RELEASE_INFO0_FIRST_MSDU_IDX GENMASK(12, 9)
1640 #define HAL_WBM_RELEASE_INFO0_TQM_RELEASE_REASON GENMASK(16, 13)
1641 #define HAL_WBM_RELEASE_INFO0_RXDMA_PUSH_REASON GENMASK(18, 17)
1642 #define HAL_WBM_RELEASE_INFO0_RXDMA_ERROR_CODE GENMASK(23, 19)
1643 #define HAL_WBM_RELEASE_INFO0_REO_PUSH_REASON GENMASK(25, 24)
1644 #define HAL_WBM_RELEASE_INFO0_REO_ERROR_CODE GENMASK(30, 26)
1645 #define HAL_WBM_RELEASE_INFO0_WBM_INTERNAL_ERROR BIT(31)
1646
1647 #define HAL_WBM_RELEASE_INFO1_TQM_STATUS_NUMBER GENMASK(23, 0)
1648 #define HAL_WBM_RELEASE_INFO1_TRANSMIT_COUNT GENMASK(30, 24)
1649
1650 #define HAL_WBM_RELEASE_INFO2_ACK_FRAME_RSSI GENMASK(7, 0)
1651 #define HAL_WBM_RELEASE_INFO2_SW_REL_DETAILS_VALID BIT(8)
1652 #define HAL_WBM_RELEASE_INFO2_FIRST_MSDU BIT(9)
1653 #define HAL_WBM_RELEASE_INFO2_LAST_MSDU BIT(10)
1654 #define HAL_WBM_RELEASE_INFO2_MSDU_IN_AMSDU BIT(11)
1655 #define HAL_WBM_RELEASE_INFO2_FW_TX_NOTIF_FRAME BIT(12)
1656 #define HAL_WBM_RELEASE_INFO2_BUFFER_TIMESTAMP GENMASK(31, 13)
1657
1658 #define HAL_WBM_RELEASE_INFO3_PEER_ID GENMASK(15, 0)
1659 #define HAL_WBM_RELEASE_INFO3_TID GENMASK(19, 16)
1660 #define HAL_WBM_RELEASE_INFO3_RING_ID GENMASK(27, 20)
1661 #define HAL_WBM_RELEASE_INFO3_LOOPING_COUNT GENMASK(31, 28)
1662
1663 #define HAL_WBM_REL_HTT_TX_COMP_INFO0_STATUS GENMASK(12, 9)
1664 #define HAL_WBM_REL_HTT_TX_COMP_INFO0_REINJ_REASON GENMASK(16, 13)
1665 #define HAL_WBM_REL_HTT_TX_COMP_INFO0_EXP_FRAME BIT(17)
1666
1667 struct hal_wbm_release_ring {
1668 struct ath11k_buffer_addr buf_addr_info;
1669 u32 info0;
1670 u32 info1;
1671 u32 info2;
1672 struct hal_tx_rate_stats rate_stats;
1673 u32 info3;
1674 } __packed;
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846 enum hal_wbm_tqm_rel_reason {
1847 HAL_WBM_TQM_REL_REASON_FRAME_ACKED,
1848 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_MPDU,
1849 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_TX,
1850 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_NOTX,
1851 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_AGED_FRAMES,
1852 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_RESEAON1,
1853 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_RESEAON2,
1854 HAL_WBM_TQM_REL_REASON_CMD_REMOVE_RESEAON3,
1855 };
1856
1857 struct hal_wbm_buffer_ring {
1858 struct ath11k_buffer_addr buf_addr_info;
1859 };
1860
1861 enum hal_desc_owner {
1862 HAL_DESC_OWNER_WBM,
1863 HAL_DESC_OWNER_SW,
1864 HAL_DESC_OWNER_TQM,
1865 HAL_DESC_OWNER_RXDMA,
1866 HAL_DESC_OWNER_REO,
1867 HAL_DESC_OWNER_SWITCH,
1868 };
1869
1870 enum hal_desc_buf_type {
1871 HAL_DESC_BUF_TYPE_TX_MSDU_LINK,
1872 HAL_DESC_BUF_TYPE_TX_MPDU_LINK,
1873 HAL_DESC_BUF_TYPE_TX_MPDU_QUEUE_HEAD,
1874 HAL_DESC_BUF_TYPE_TX_MPDU_QUEUE_EXT,
1875 HAL_DESC_BUF_TYPE_TX_FLOW,
1876 HAL_DESC_BUF_TYPE_TX_BUFFER,
1877 HAL_DESC_BUF_TYPE_RX_MSDU_LINK,
1878 HAL_DESC_BUF_TYPE_RX_MPDU_LINK,
1879 HAL_DESC_BUF_TYPE_RX_REO_QUEUE,
1880 HAL_DESC_BUF_TYPE_RX_REO_QUEUE_EXT,
1881 HAL_DESC_BUF_TYPE_RX_BUFFER,
1882 HAL_DESC_BUF_TYPE_IDLE_LINK,
1883 };
1884
1885 #define HAL_DESC_REO_OWNED 4
1886 #define HAL_DESC_REO_QUEUE_DESC 8
1887 #define HAL_DESC_REO_QUEUE_EXT_DESC 9
1888 #define HAL_DESC_REO_NON_QOS_TID 16
1889
1890 #define HAL_DESC_HDR_INFO0_OWNER GENMASK(3, 0)
1891 #define HAL_DESC_HDR_INFO0_BUF_TYPE GENMASK(7, 4)
1892 #define HAL_DESC_HDR_INFO0_DBG_RESERVED GENMASK(31, 8)
1893
1894 struct hal_desc_header {
1895 u32 info0;
1896 } __packed;
1897
1898 struct hal_rx_mpdu_link_ptr {
1899 struct ath11k_buffer_addr addr_info;
1900 } __packed;
1901
1902 struct hal_rx_msdu_details {
1903 struct ath11k_buffer_addr buf_addr_info;
1904 struct rx_msdu_desc rx_msdu_info;
1905 } __packed;
1906
1907 #define HAL_RX_MSDU_LNK_INFO0_RX_QUEUE_NUMBER GENMASK(15, 0)
1908 #define HAL_RX_MSDU_LNK_INFO0_FIRST_MSDU_LNK BIT(16)
1909
1910 struct hal_rx_msdu_link {
1911 struct hal_desc_header desc_hdr;
1912 struct ath11k_buffer_addr buf_addr_info;
1913 u32 info0;
1914 u32 pn[4];
1915 struct hal_rx_msdu_details msdu_link[6];
1916 } __packed;
1917
1918 struct hal_rx_reo_queue_ext {
1919 struct hal_desc_header desc_hdr;
1920 u32 rsvd;
1921 struct hal_rx_mpdu_link_ptr mpdu_link[15];
1922 } __packed;
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935 enum hal_rx_reo_queue_pn_size {
1936 HAL_RX_REO_QUEUE_PN_SIZE_24,
1937 HAL_RX_REO_QUEUE_PN_SIZE_48,
1938 HAL_RX_REO_QUEUE_PN_SIZE_128,
1939 };
1940
1941 #define HAL_RX_REO_QUEUE_RX_QUEUE_NUMBER GENMASK(15, 0)
1942
1943 #define HAL_RX_REO_QUEUE_INFO0_VLD BIT(0)
1944 #define HAL_RX_REO_QUEUE_INFO0_ASSOC_LNK_DESC_COUNTER GENMASK(2, 1)
1945 #define HAL_RX_REO_QUEUE_INFO0_DIS_DUP_DETECTION BIT(3)
1946 #define HAL_RX_REO_QUEUE_INFO0_SOFT_REORDER_EN BIT(4)
1947 #define HAL_RX_REO_QUEUE_INFO0_AC GENMASK(6, 5)
1948 #define HAL_RX_REO_QUEUE_INFO0_BAR BIT(7)
1949 #define HAL_RX_REO_QUEUE_INFO0_RETRY BIT(8)
1950 #define HAL_RX_REO_QUEUE_INFO0_CHECK_2K_MODE BIT(9)
1951 #define HAL_RX_REO_QUEUE_INFO0_OOR_MODE BIT(10)
1952 #define HAL_RX_REO_QUEUE_INFO0_BA_WINDOW_SIZE GENMASK(18, 11)
1953 #define HAL_RX_REO_QUEUE_INFO0_PN_CHECK BIT(19)
1954 #define HAL_RX_REO_QUEUE_INFO0_EVEN_PN BIT(20)
1955 #define HAL_RX_REO_QUEUE_INFO0_UNEVEN_PN BIT(21)
1956 #define HAL_RX_REO_QUEUE_INFO0_PN_HANDLE_ENABLE BIT(22)
1957 #define HAL_RX_REO_QUEUE_INFO0_PN_SIZE GENMASK(24, 23)
1958 #define HAL_RX_REO_QUEUE_INFO0_IGNORE_AMPDU_FLG BIT(25)
1959
1960 #define HAL_RX_REO_QUEUE_INFO1_SVLD BIT(0)
1961 #define HAL_RX_REO_QUEUE_INFO1_SSN GENMASK(12, 1)
1962 #define HAL_RX_REO_QUEUE_INFO1_CURRENT_IDX GENMASK(20, 13)
1963 #define HAL_RX_REO_QUEUE_INFO1_SEQ_2K_ERR BIT(21)
1964 #define HAL_RX_REO_QUEUE_INFO1_PN_ERR BIT(22)
1965 #define HAL_RX_REO_QUEUE_INFO1_PN_VALID BIT(31)
1966
1967 #define HAL_RX_REO_QUEUE_INFO2_MPDU_COUNT GENMASK(6, 0)
1968 #define HAL_RX_REO_QUEUE_INFO2_MSDU_COUNT (31, 7)
1969
1970 #define HAL_RX_REO_QUEUE_INFO3_TIMEOUT_COUNT GENMASK(9, 4)
1971 #define HAL_RX_REO_QUEUE_INFO3_FWD_DUE_TO_BAR_CNT GENMASK(15, 10)
1972 #define HAL_RX_REO_QUEUE_INFO3_DUPLICATE_COUNT GENMASK(31, 16)
1973
1974 #define HAL_RX_REO_QUEUE_INFO4_FRAME_IN_ORD_COUNT GENMASK(23, 0)
1975 #define HAL_RX_REO_QUEUE_INFO4_BAR_RECVD_COUNT GENMASK(31, 24)
1976
1977 #define HAL_RX_REO_QUEUE_INFO5_LATE_RX_MPDU_COUNT GENMASK(11, 0)
1978 #define HAL_RX_REO_QUEUE_INFO5_WINDOW_JUMP_2K GENMASK(15, 12)
1979 #define HAL_RX_REO_QUEUE_INFO5_HOLE_COUNT GENMASK(31, 16)
1980
1981 struct hal_rx_reo_queue {
1982 struct hal_desc_header desc_hdr;
1983 u32 rx_queue_num;
1984 u32 info0;
1985 u32 info1;
1986 u32 pn[4];
1987 u32 last_rx_enqueue_timestamp;
1988 u32 last_rx_dequeue_timestamp;
1989 u32 next_aging_queue[2];
1990 u32 prev_aging_queue[2];
1991 u32 rx_bitmap[8];
1992 u32 info2;
1993 u32 info3;
1994 u32 info4;
1995 u32 processed_mpdus;
1996 u32 processed_msdus;
1997 u32 processed_total_bytes;
1998 u32 info5;
1999 u32 rsvd[3];
2000 struct hal_rx_reo_queue_ext ext_desc[];
2001 } __packed;
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069 #define HAL_REO_UPD_RX_QUEUE_INFO0_QUEUE_ADDR_HI GENMASK(7, 0)
2070 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_RX_QUEUE_NUM BIT(8)
2071 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_VLD BIT(9)
2072 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_ASSOC_LNK_DESC_CNT BIT(10)
2073 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_DIS_DUP_DETECTION BIT(11)
2074 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_SOFT_REORDER_EN BIT(12)
2075 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_AC BIT(13)
2076 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_BAR BIT(14)
2077 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_RETRY BIT(15)
2078 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_CHECK_2K_MODE BIT(16)
2079 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_OOR_MODE BIT(17)
2080 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_BA_WINDOW_SIZE BIT(18)
2081 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN_CHECK BIT(19)
2082 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_EVEN_PN BIT(20)
2083 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_UNEVEN_PN BIT(21)
2084 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN_HANDLE_ENABLE BIT(22)
2085 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN_SIZE BIT(23)
2086 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_IGNORE_AMPDU_FLG BIT(24)
2087 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_SVLD BIT(25)
2088 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_SSN BIT(26)
2089 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_SEQ_2K_ERR BIT(27)
2090 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN_ERR BIT(28)
2091 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN_VALID BIT(29)
2092 #define HAL_REO_UPD_RX_QUEUE_INFO0_UPD_PN BIT(30)
2093
2094 #define HAL_REO_UPD_RX_QUEUE_INFO1_RX_QUEUE_NUMBER GENMASK(15, 0)
2095 #define HAL_REO_UPD_RX_QUEUE_INFO1_VLD BIT(16)
2096 #define HAL_REO_UPD_RX_QUEUE_INFO1_ASSOC_LNK_DESC_COUNTER GENMASK(18, 17)
2097 #define HAL_REO_UPD_RX_QUEUE_INFO1_DIS_DUP_DETECTION BIT(19)
2098 #define HAL_REO_UPD_RX_QUEUE_INFO1_SOFT_REORDER_EN BIT(20)
2099 #define HAL_REO_UPD_RX_QUEUE_INFO1_AC GENMASK(22, 21)
2100 #define HAL_REO_UPD_RX_QUEUE_INFO1_BAR BIT(23)
2101 #define HAL_REO_UPD_RX_QUEUE_INFO1_RETRY BIT(24)
2102 #define HAL_REO_UPD_RX_QUEUE_INFO1_CHECK_2K_MODE BIT(25)
2103 #define HAL_REO_UPD_RX_QUEUE_INFO1_OOR_MODE BIT(26)
2104 #define HAL_REO_UPD_RX_QUEUE_INFO1_PN_CHECK BIT(27)
2105 #define HAL_REO_UPD_RX_QUEUE_INFO1_EVEN_PN BIT(28)
2106 #define HAL_REO_UPD_RX_QUEUE_INFO1_UNEVEN_PN BIT(29)
2107 #define HAL_REO_UPD_RX_QUEUE_INFO1_PN_HANDLE_ENABLE BIT(30)
2108 #define HAL_REO_UPD_RX_QUEUE_INFO1_IGNORE_AMPDU_FLG BIT(31)
2109
2110 #define HAL_REO_UPD_RX_QUEUE_INFO2_BA_WINDOW_SIZE GENMASK(7, 0)
2111 #define HAL_REO_UPD_RX_QUEUE_INFO2_PN_SIZE GENMASK(9, 8)
2112 #define HAL_REO_UPD_RX_QUEUE_INFO2_SVLD BIT(10)
2113 #define HAL_REO_UPD_RX_QUEUE_INFO2_SSN GENMASK(22, 11)
2114 #define HAL_REO_UPD_RX_QUEUE_INFO2_SEQ_2K_ERR BIT(23)
2115 #define HAL_REO_UPD_RX_QUEUE_INFO2_PN_ERR BIT(24)
2116 #define HAL_REO_UPD_RX_QUEUE_INFO2_PN_VALID BIT(25)
2117
2118 struct hal_reo_update_rx_queue {
2119 struct hal_reo_cmd_hdr cmd;
2120 u32 queue_addr_lo;
2121 u32 info0;
2122 u32 info1;
2123 u32 info2;
2124 u32 pn[4];
2125 } __packed;
2126
2127 #define HAL_REO_UNBLOCK_CACHE_INFO0_UNBLK_CACHE BIT(0)
2128 #define HAL_REO_UNBLOCK_CACHE_INFO0_RESOURCE_IDX GENMASK(2, 1)
2129
2130 struct hal_reo_unblock_cache {
2131 struct hal_reo_cmd_hdr cmd;
2132 u32 info0;
2133 u32 rsvd[7];
2134 } __packed;
2135
2136 enum hal_reo_exec_status {
2137 HAL_REO_EXEC_STATUS_SUCCESS,
2138 HAL_REO_EXEC_STATUS_BLOCKED,
2139 HAL_REO_EXEC_STATUS_FAILED,
2140 HAL_REO_EXEC_STATUS_RESOURCE_BLOCKED,
2141 };
2142
2143 #define HAL_REO_STATUS_HDR_INFO0_STATUS_NUM GENMASK(15, 0)
2144 #define HAL_REO_STATUS_HDR_INFO0_EXEC_TIME GENMASK(25, 16)
2145 #define HAL_REO_STATUS_HDR_INFO0_EXEC_STATUS GENMASK(27, 26)
2146
2147 struct hal_reo_status_hdr {
2148 u32 info0;
2149 u32 timestamp;
2150 } __packed;
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO0_SSN GENMASK(11, 0)
2171 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO0_CUR_IDX GENMASK(19, 12)
2172
2173 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO1_MPDU_COUNT GENMASK(6, 0)
2174 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO1_MSDU_COUNT GENMASK(31, 7)
2175
2176 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO2_TIMEOUT_COUNT GENMASK(9, 4)
2177 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO2_FDTB_COUNT GENMASK(15, 10)
2178 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO2_DUPLICATE_COUNT GENMASK(31, 16)
2179
2180 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO3_FIO_COUNT GENMASK(23, 0)
2181 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO3_BAR_RCVD_CNT GENMASK(31, 24)
2182
2183 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO4_LATE_RX_MPDU GENMASK(11, 0)
2184 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO4_WINDOW_JMP2K GENMASK(15, 12)
2185 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO4_HOLE_COUNT GENMASK(31, 16)
2186
2187 #define HAL_REO_GET_QUEUE_STATS_STATUS_INFO5_LOOPING_CNT GENMASK(31, 28)
2188
2189 struct hal_reo_get_queue_stats_status {
2190 struct hal_reo_status_hdr hdr;
2191 u32 info0;
2192 u32 pn[4];
2193 u32 last_rx_enqueue_timestamp;
2194 u32 last_rx_dequeue_timestamp;
2195 u32 rx_bitmap[8];
2196 u32 info1;
2197 u32 info2;
2198 u32 info3;
2199 u32 num_mpdu_frames;
2200 u32 num_msdu_frames;
2201 u32 total_bytes;
2202 u32 info4;
2203 u32 info5;
2204 } __packed;
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278 #define HAL_REO_STATUS_LOOP_CNT GENMASK(31, 28)
2279
2280 #define HAL_REO_FLUSH_QUEUE_INFO0_ERR_DETECTED BIT(0)
2281 #define HAL_REO_FLUSH_QUEUE_INFO0_RSVD GENMASK(31, 1)
2282 #define HAL_REO_FLUSH_QUEUE_INFO1_RSVD GENMASK(27, 0)
2283
2284 struct hal_reo_flush_queue_status {
2285 struct hal_reo_status_hdr hdr;
2286 u32 info0;
2287 u32 rsvd0[21];
2288 u32 info1;
2289 } __packed;
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_IS_ERR BIT(0)
2312 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_BLOCK_ERR_CODE GENMASK(2, 1)
2313 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_FLUSH_STATUS_HIT BIT(8)
2314 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_FLUSH_DESC_TYPE GENMASK(11, 9)
2315 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_FLUSH_CLIENT_ID GENMASK(15, 12)
2316 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_FLUSH_ERR GENMASK(17, 16)
2317 #define HAL_REO_FLUSH_CACHE_STATUS_INFO0_FLUSH_COUNT GENMASK(25, 18)
2318
2319 struct hal_reo_flush_cache_status {
2320 struct hal_reo_status_hdr hdr;
2321 u32 info0;
2322 u32 rsvd0[21];
2323 u32 info1;
2324 } __packed;
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378 #define HAL_REO_UNBLOCK_CACHE_STATUS_INFO0_IS_ERR BIT(0)
2379 #define HAL_REO_UNBLOCK_CACHE_STATUS_INFO0_TYPE BIT(1)
2380
2381 struct hal_reo_unblock_cache_status {
2382 struct hal_reo_status_hdr hdr;
2383 u32 info0;
2384 u32 rsvd0[21];
2385 u32 info1;
2386 } __packed;
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411 #define HAL_REO_FLUSH_TIMEOUT_STATUS_INFO0_IS_ERR BIT(0)
2412 #define HAL_REO_FLUSH_TIMEOUT_STATUS_INFO0_LIST_EMPTY BIT(1)
2413
2414 #define HAL_REO_FLUSH_TIMEOUT_STATUS_INFO1_REL_DESC_COUNT GENMASK(15, 0)
2415 #define HAL_REO_FLUSH_TIMEOUT_STATUS_INFO1_FWD_BUF_COUNT GENMASK(31, 16)
2416
2417 struct hal_reo_flush_timeout_list_status {
2418 struct hal_reo_status_hdr hdr;
2419 u32 info0;
2420 u32 info1;
2421 u32 rsvd0[20];
2422 u32 info2;
2423 } __packed;
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454 #define HAL_REO_DESC_THRESH_STATUS_INFO0_THRESH_INDEX GENMASK(1, 0)
2455 #define HAL_REO_DESC_THRESH_STATUS_INFO1_LINK_DESC_COUNTER0 GENMASK(23, 0)
2456 #define HAL_REO_DESC_THRESH_STATUS_INFO2_LINK_DESC_COUNTER1 GENMASK(23, 0)
2457 #define HAL_REO_DESC_THRESH_STATUS_INFO3_LINK_DESC_COUNTER2 GENMASK(23, 0)
2458 #define HAL_REO_DESC_THRESH_STATUS_INFO4_LINK_DESC_COUNTER_SUM GENMASK(25, 0)
2459
2460 struct hal_reo_desc_thresh_reached_status {
2461 struct hal_reo_status_hdr hdr;
2462 u32 info0;
2463 u32 info1;
2464 u32 info2;
2465 u32 info3;
2466 u32 info4;
2467 u32 rsvd0[17];
2468 u32 info5;
2469 } __packed;
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493 #endif