14f57d718SPavankumar Nandeshwar /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 24f57d718SPavankumar Nandeshwar /* 34f57d718SPavankumar Nandeshwar * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 44f57d718SPavankumar Nandeshwar * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 54f57d718SPavankumar Nandeshwar */ 64f57d718SPavankumar Nandeshwar 74f57d718SPavankumar Nandeshwar #ifndef ATH12K_HAL_RX_H 84f57d718SPavankumar Nandeshwar #define ATH12K_HAL_RX_H 94f57d718SPavankumar Nandeshwar 102bb41934SPavankumar Nandeshwar #include "hal_desc.h" 112bb41934SPavankumar Nandeshwar 122bb41934SPavankumar Nandeshwar struct hal_reo_status; 132bb41934SPavankumar Nandeshwar 144f57d718SPavankumar Nandeshwar struct hal_rx_wbm_rel_info { 154f57d718SPavankumar Nandeshwar u32 cookie; 164f57d718SPavankumar Nandeshwar enum hal_wbm_rel_src_module err_rel_src; 174f57d718SPavankumar Nandeshwar enum hal_reo_dest_ring_push_reason push_reason; 184f57d718SPavankumar Nandeshwar u32 err_code; 194f57d718SPavankumar Nandeshwar bool first_msdu; 204f57d718SPavankumar Nandeshwar bool last_msdu; 214f57d718SPavankumar Nandeshwar bool continuation; 224f57d718SPavankumar Nandeshwar void *rx_desc; 234f57d718SPavankumar Nandeshwar bool hw_cc_done; 2411157e09SHarsh Kumar Bijlani __le32 peer_metadata; 254f57d718SPavankumar Nandeshwar }; 264f57d718SPavankumar Nandeshwar 274f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_INFO_PN_GET_BYTE1(__val) \ 284f57d718SPavankumar Nandeshwar le32_get_bits((__val), GENMASK(7, 0)) 294f57d718SPavankumar Nandeshwar 304f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_INFO_PN_GET_BYTE2(__val) \ 314f57d718SPavankumar Nandeshwar le32_get_bits((__val), GENMASK(15, 8)) 324f57d718SPavankumar Nandeshwar 334f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_INFO_PN_GET_BYTE3(__val) \ 344f57d718SPavankumar Nandeshwar le32_get_bits((__val), GENMASK(23, 16)) 354f57d718SPavankumar Nandeshwar 364f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_INFO_PN_GET_BYTE4(__val) \ 374f57d718SPavankumar Nandeshwar le32_get_bits((__val), GENMASK(31, 24)) 384f57d718SPavankumar Nandeshwar 394f57d718SPavankumar Nandeshwar struct hal_rx_mon_status_tlv_hdr { 404f57d718SPavankumar Nandeshwar u32 hdr; 414f57d718SPavankumar Nandeshwar u8 value[]; 424f57d718SPavankumar Nandeshwar }; 434f57d718SPavankumar Nandeshwar 444f57d718SPavankumar Nandeshwar #define HAL_TLV_STATUS_PPDU_NOT_DONE 0 454f57d718SPavankumar Nandeshwar #define HAL_TLV_STATUS_PPDU_DONE 1 464f57d718SPavankumar Nandeshwar #define HAL_TLV_STATUS_BUF_DONE 2 474f57d718SPavankumar Nandeshwar #define HAL_TLV_STATUS_PPDU_NON_STD_DONE 3 484f57d718SPavankumar Nandeshwar 494f57d718SPavankumar Nandeshwar enum hal_rx_mon_status { 504f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_PPDU_NOT_DONE, 514f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_PPDU_DONE, 524f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_BUF_DONE, 534f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_BUF_ADDR, 544f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_MPDU_START, 554f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_MPDU_END, 564f57d718SPavankumar Nandeshwar HAL_RX_MON_STATUS_MSDU_END, 574f57d718SPavankumar Nandeshwar }; 584f57d718SPavankumar Nandeshwar 594f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_START_INFO0_PPDU_ID GENMASK(15, 0) 604f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_START_INFO1_CHAN_NUM GENMASK(15, 0) 614f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_START_INFO1_CHAN_FREQ GENMASK(31, 16) 624f57d718SPavankumar Nandeshwar 634f57d718SPavankumar Nandeshwar struct hal_rx_ppdu_start { 644f57d718SPavankumar Nandeshwar __le32 info0; 654f57d718SPavankumar Nandeshwar __le32 info1; 664f57d718SPavankumar Nandeshwar __le32 ppdu_start_ts_31_0; 674f57d718SPavankumar Nandeshwar __le32 ppdu_start_ts_63_32; 684f57d718SPavankumar Nandeshwar __le32 rsvd[2]; 694f57d718SPavankumar Nandeshwar } __packed; 704f57d718SPavankumar Nandeshwar 714f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO0_PEER_ID GENMASK(13, 0) 724f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO0_DEVICE_ID GENMASK(15, 14) 734f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO0_MPDU_CNT_FCS_ERR GENMASK(26, 16) 744f57d718SPavankumar Nandeshwar 754f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO1_MPDU_CNT_FCS_OK GENMASK(10, 0) 764f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO1_FC_VALID BIT(11) 774f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO1_QOS_CTRL_VALID BIT(12) 784f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO1_HT_CTRL_VALID BIT(13) 794f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO1_PKT_TYPE GENMASK(24, 21) 804f57d718SPavankumar Nandeshwar 814f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO2_AST_INDEX GENMASK(15, 0) 824f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO2_FRAME_CTRL GENMASK(31, 16) 834f57d718SPavankumar Nandeshwar 844f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO3_QOS_CTRL GENMASK(31, 16) 854f57d718SPavankumar Nandeshwar 864f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO4_UDP_MSDU_CNT GENMASK(15, 0) 874f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO4_TCP_MSDU_CNT GENMASK(31, 16) 884f57d718SPavankumar Nandeshwar 894f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO5_OTHER_MSDU_CNT GENMASK(15, 0) 904f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO5_TCP_ACK_MSDU_CNT GENMASK(31, 16) 914f57d718SPavankumar Nandeshwar 924f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_BITMAP GENMASK(15, 0) 934f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_EOSP_BITMAP GENMASK(31, 16) 944f57d718SPavankumar Nandeshwar 954f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO7_MPDU_OK_BYTE_COUNT GENMASK(24, 0) 964f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_USER_STATS_INFO8_MPDU_ERR_BYTE_COUNT GENMASK(24, 0) 974f57d718SPavankumar Nandeshwar 984f57d718SPavankumar Nandeshwar struct hal_rx_ppdu_end_user_stats { 994f57d718SPavankumar Nandeshwar __le32 rsvd0[2]; 1004f57d718SPavankumar Nandeshwar __le32 info0; 1014f57d718SPavankumar Nandeshwar __le32 info1; 1024f57d718SPavankumar Nandeshwar __le32 info2; 1034f57d718SPavankumar Nandeshwar __le32 info3; 1044f57d718SPavankumar Nandeshwar __le32 ht_ctrl; 1054f57d718SPavankumar Nandeshwar __le32 rsvd1[2]; 1064f57d718SPavankumar Nandeshwar __le32 info4; 1074f57d718SPavankumar Nandeshwar __le32 info5; 1084f57d718SPavankumar Nandeshwar __le32 usr_resp_ref; 1094f57d718SPavankumar Nandeshwar __le32 info6; 1104f57d718SPavankumar Nandeshwar __le32 rsvd3[4]; 1114f57d718SPavankumar Nandeshwar __le32 info7; 1124f57d718SPavankumar Nandeshwar __le32 rsvd4; 1134f57d718SPavankumar Nandeshwar __le32 info8; 1144f57d718SPavankumar Nandeshwar __le32 rsvd5[2]; 1154f57d718SPavankumar Nandeshwar __le32 usr_resp_ref_ext; 1164f57d718SPavankumar Nandeshwar __le32 rsvd6; 1174f57d718SPavankumar Nandeshwar } __packed; 1184f57d718SPavankumar Nandeshwar 1194f57d718SPavankumar Nandeshwar struct hal_rx_ppdu_end_user_stats_ext { 1204f57d718SPavankumar Nandeshwar __le32 info0; 1214f57d718SPavankumar Nandeshwar __le32 info1; 1224f57d718SPavankumar Nandeshwar __le32 info2; 1234f57d718SPavankumar Nandeshwar __le32 info3; 1244f57d718SPavankumar Nandeshwar __le32 info4; 1254f57d718SPavankumar Nandeshwar __le32 info5; 1264f57d718SPavankumar Nandeshwar __le32 info6; 1274f57d718SPavankumar Nandeshwar __le32 rsvd; 1284f57d718SPavankumar Nandeshwar } __packed; 1294f57d718SPavankumar Nandeshwar 1304f57d718SPavankumar Nandeshwar #define HAL_RX_HT_SIG_INFO_INFO0_MCS GENMASK(6, 0) 1314f57d718SPavankumar Nandeshwar #define HAL_RX_HT_SIG_INFO_INFO0_BW BIT(7) 1324f57d718SPavankumar Nandeshwar 1334f57d718SPavankumar Nandeshwar #define HAL_RX_HT_SIG_INFO_INFO1_STBC GENMASK(5, 4) 1344f57d718SPavankumar Nandeshwar #define HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING BIT(6) 1354f57d718SPavankumar Nandeshwar #define HAL_RX_HT_SIG_INFO_INFO1_GI BIT(7) 1364f57d718SPavankumar Nandeshwar 1374f57d718SPavankumar Nandeshwar struct hal_rx_ht_sig_info { 1384f57d718SPavankumar Nandeshwar __le32 info0; 1394f57d718SPavankumar Nandeshwar __le32 info1; 1404f57d718SPavankumar Nandeshwar } __packed; 1414f57d718SPavankumar Nandeshwar 1424f57d718SPavankumar Nandeshwar #define HAL_RX_LSIG_B_INFO_INFO0_RATE GENMASK(3, 0) 1434f57d718SPavankumar Nandeshwar #define HAL_RX_LSIG_B_INFO_INFO0_LEN GENMASK(15, 4) 1444f57d718SPavankumar Nandeshwar 1454f57d718SPavankumar Nandeshwar struct hal_rx_lsig_b_info { 1464f57d718SPavankumar Nandeshwar __le32 info0; 1474f57d718SPavankumar Nandeshwar } __packed; 1484f57d718SPavankumar Nandeshwar 1494f57d718SPavankumar Nandeshwar #define HAL_RX_LSIG_A_INFO_INFO0_RATE GENMASK(3, 0) 1504f57d718SPavankumar Nandeshwar #define HAL_RX_LSIG_A_INFO_INFO0_LEN GENMASK(16, 5) 1514f57d718SPavankumar Nandeshwar #define HAL_RX_LSIG_A_INFO_INFO0_PKT_TYPE GENMASK(27, 24) 1524f57d718SPavankumar Nandeshwar 1534f57d718SPavankumar Nandeshwar struct hal_rx_lsig_a_info { 1544f57d718SPavankumar Nandeshwar __le32 info0; 1554f57d718SPavankumar Nandeshwar } __packed; 1564f57d718SPavankumar Nandeshwar 1574f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO0_BW GENMASK(1, 0) 1584f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO0_STBC BIT(3) 1594f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID GENMASK(9, 4) 1604f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS GENMASK(21, 10) 1614f57d718SPavankumar Nandeshwar 1624f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING GENMASK(1, 0) 1634f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING BIT(2) 1644f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO1_MCS GENMASK(7, 4) 1654f57d718SPavankumar Nandeshwar #define HAL_RX_VHT_SIG_A_INFO_INFO1_BEAMFORMED BIT(8) 1664f57d718SPavankumar Nandeshwar 1674f57d718SPavankumar Nandeshwar struct hal_rx_vht_sig_a_info { 1684f57d718SPavankumar Nandeshwar __le32 info0; 1694f57d718SPavankumar Nandeshwar __le32 info1; 1704f57d718SPavankumar Nandeshwar } __packed; 1714f57d718SPavankumar Nandeshwar 1724f57d718SPavankumar Nandeshwar enum hal_rx_vht_sig_a_gi_setting { 1734f57d718SPavankumar Nandeshwar HAL_RX_VHT_SIG_A_NORMAL_GI = 0, 1744f57d718SPavankumar Nandeshwar HAL_RX_VHT_SIG_A_SHORT_GI = 1, 1754f57d718SPavankumar Nandeshwar HAL_RX_VHT_SIG_A_SHORT_GI_AMBIGUITY = 3, 1764f57d718SPavankumar Nandeshwar }; 1774f57d718SPavankumar Nandeshwar 1784f57d718SPavankumar Nandeshwar #define HE_GI_0_8 0 1794f57d718SPavankumar Nandeshwar #define HE_GI_0_4 1 1804f57d718SPavankumar Nandeshwar #define HE_GI_1_6 2 1814f57d718SPavankumar Nandeshwar #define HE_GI_3_2 3 1824f57d718SPavankumar Nandeshwar 1834f57d718SPavankumar Nandeshwar #define HE_LTF_1_X 0 1844f57d718SPavankumar Nandeshwar #define HE_LTF_2_X 1 1854f57d718SPavankumar Nandeshwar #define HE_LTF_4_X 2 1864f57d718SPavankumar Nandeshwar 1874f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_MCS GENMASK(6, 3) 1884f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_DCM BIT(7) 1894f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_BW GENMASK(20, 19) 1904f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_CP_LTF_SIZE GENMASK(22, 21) 1914f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS GENMASK(25, 23) 1924f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_BSS_COLOR GENMASK(13, 8) 1934f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_SPATIAL_REUSE GENMASK(18, 15) 1944f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_FORMAT_IND BIT(0) 1954f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_BEAM_CHANGE BIT(1) 1964f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_DL_UL_FLAG BIT(2) 1974f57d718SPavankumar Nandeshwar 1984f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXOP_DURATION GENMASK(6, 0) 1994f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING BIT(7) 2004f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_LDPC_EXTRA BIT(8) 2014f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC BIT(9) 2024f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF BIT(10) 2034f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_FACTOR GENMASK(12, 11) 2044f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_PE_DISAM BIT(13) 2054f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_DOPPLER_IND BIT(15) 2064f57d718SPavankumar Nandeshwar 2074f57d718SPavankumar Nandeshwar struct hal_rx_he_sig_a_su_info { 2084f57d718SPavankumar Nandeshwar __le32 info0; 2094f57d718SPavankumar Nandeshwar __le32 info1; 2104f57d718SPavankumar Nandeshwar } __packed; 2114f57d718SPavankumar Nandeshwar 2124f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_UL_FLAG BIT(1) 2134f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_MCS_OF_SIGB GENMASK(3, 1) 2144f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_DCM_OF_SIGB BIT(4) 2154f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_BSS_COLOR GENMASK(10, 5) 2164f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_SPATIAL_REUSE GENMASK(14, 11) 2174f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_TRANSMIT_BW GENMASK(17, 15) 2184f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_NUM_SIGB_SYMB GENMASK(21, 18) 2194f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_COMP_MODE_SIGB BIT(22) 2204f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_CP_LTF_SIZE GENMASK(24, 23) 2214f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO0_DOPPLER_INDICATION BIT(25) 2224f57d718SPavankumar Nandeshwar 2234f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_TXOP_DURATION GENMASK(6, 0) 2244f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_NUM_LTF_SYMB GENMASK(10, 8) 2254f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_LDPC_EXTRA BIT(11) 2264f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_STBC BIT(12) 2274f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_PKT_EXT_FACTOR GENMASK(14, 13) 2284f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_A_MU_DL_INFO1_PKT_EXT_PE_DISAM BIT(15) 2294f57d718SPavankumar Nandeshwar 2304f57d718SPavankumar Nandeshwar struct hal_rx_he_sig_a_mu_dl_info { 2314f57d718SPavankumar Nandeshwar __le32 info0; 2324f57d718SPavankumar Nandeshwar __le32 info1; 2334f57d718SPavankumar Nandeshwar } __packed; 2344f57d718SPavankumar Nandeshwar 2354f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B1_MU_INFO_INFO0_RU_ALLOCATION GENMASK(7, 0) 2364f57d718SPavankumar Nandeshwar 2374f57d718SPavankumar Nandeshwar struct hal_rx_he_sig_b1_mu_info { 2384f57d718SPavankumar Nandeshwar __le32 info0; 2394f57d718SPavankumar Nandeshwar } __packed; 2404f57d718SPavankumar Nandeshwar 2414f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_ID GENMASK(10, 0) 2424f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_MCS GENMASK(18, 15) 2434f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING BIT(20) 2444f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS GENMASK(31, 29) 2454f57d718SPavankumar Nandeshwar 2464f57d718SPavankumar Nandeshwar struct hal_rx_he_sig_b2_mu_info { 2474f57d718SPavankumar Nandeshwar __le32 info0; 2484f57d718SPavankumar Nandeshwar } __packed; 2494f57d718SPavankumar Nandeshwar 2504f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_ID GENMASK(10, 0) 2514f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS GENMASK(13, 11) 2524f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF BIT(14) 2534f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_MCS GENMASK(18, 15) 2544f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_DCM BIT(19) 2554f57d718SPavankumar Nandeshwar #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING BIT(20) 2564f57d718SPavankumar Nandeshwar 2574f57d718SPavankumar Nandeshwar struct hal_rx_he_sig_b2_ofdma_info { 2584f57d718SPavankumar Nandeshwar __le32 info0; 2594f57d718SPavankumar Nandeshwar } __packed; 2604f57d718SPavankumar Nandeshwar 2614f57d718SPavankumar Nandeshwar enum hal_rx_ul_reception_type { 2624f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_ULOFMDA, 2634f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_ULMIMO, 2644f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_OTHER, 2654f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_FRAMELESS 2664f57d718SPavankumar Nandeshwar }; 2674f57d718SPavankumar Nandeshwar 268631ee338SJeff Johnson #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RECEPTION GENMASK(3, 0) 269631ee338SJeff Johnson #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW GENMASK(7, 5) 270631ee338SJeff Johnson #define HAL_RX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB GENMASK(15, 8) 271631ee338SJeff Johnson #define HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU GENMASK(7, 0) 2724f57d718SPavankumar Nandeshwar 2734f57d718SPavankumar Nandeshwar struct hal_rx_phyrx_rssi_legacy_info { 2744f57d718SPavankumar Nandeshwar __le32 info0; 2754f57d718SPavankumar Nandeshwar __le32 rsvd0[39]; 2764f57d718SPavankumar Nandeshwar __le32 info1; 277631ee338SJeff Johnson __le32 info2; 2784f57d718SPavankumar Nandeshwar } __packed; 2794f57d718SPavankumar Nandeshwar 2804f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_START_INFO0_PPDU_ID GENMASK(31, 16) 2814f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_START_INFO1_PEERID GENMASK(29, 16) 2824f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_START_INFO1_DEVICE_ID GENMASK(31, 30) 2834f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_START_INFO2_MPDU_LEN GENMASK(13, 0) 2844f57d718SPavankumar Nandeshwar struct hal_rx_mpdu_start { 2854f57d718SPavankumar Nandeshwar __le32 rsvd0[9]; 2864f57d718SPavankumar Nandeshwar __le32 info0; 2874f57d718SPavankumar Nandeshwar __le32 info1; 2884f57d718SPavankumar Nandeshwar __le32 rsvd1[2]; 2894f57d718SPavankumar Nandeshwar __le32 info2; 2904f57d718SPavankumar Nandeshwar __le32 rsvd2[16]; 2914f57d718SPavankumar Nandeshwar } __packed; 2924f57d718SPavankumar Nandeshwar 2934f57d718SPavankumar Nandeshwar struct hal_rx_msdu_end { 2944f57d718SPavankumar Nandeshwar __le32 info0; 2954f57d718SPavankumar Nandeshwar __le32 rsvd0[9]; 2964f57d718SPavankumar Nandeshwar __le16 info00; 2974f57d718SPavankumar Nandeshwar __le16 info01; 2984f57d718SPavankumar Nandeshwar __le32 rsvd00[8]; 2994f57d718SPavankumar Nandeshwar __le32 info1; 3004f57d718SPavankumar Nandeshwar __le32 rsvd1[10]; 3014f57d718SPavankumar Nandeshwar __le32 info2; 3024f57d718SPavankumar Nandeshwar __le32 rsvd2; 3034f57d718SPavankumar Nandeshwar } __packed; 3044f57d718SPavankumar Nandeshwar 3054f57d718SPavankumar Nandeshwar #define HAL_RX_PPDU_END_DURATION GENMASK(23, 0) 3064f57d718SPavankumar Nandeshwar struct hal_rx_ppdu_end_duration { 3074f57d718SPavankumar Nandeshwar __le32 rsvd0[9]; 3084f57d718SPavankumar Nandeshwar __le32 info0; 3094f57d718SPavankumar Nandeshwar __le32 rsvd1[18]; 3104f57d718SPavankumar Nandeshwar } __packed; 3114f57d718SPavankumar Nandeshwar 3124f57d718SPavankumar Nandeshwar struct hal_rx_rxpcu_classification_overview { 3134f57d718SPavankumar Nandeshwar u32 rsvd0; 3144f57d718SPavankumar Nandeshwar } __packed; 3154f57d718SPavankumar Nandeshwar 3164f57d718SPavankumar Nandeshwar #define HAL_RX_NUM_MSDU_DESC 6 3174f57d718SPavankumar Nandeshwar struct hal_rx_msdu_list { 3184f57d718SPavankumar Nandeshwar struct hal_rx_msdu_desc_info msdu_info[HAL_RX_NUM_MSDU_DESC]; 3194f57d718SPavankumar Nandeshwar u64 paddr[HAL_RX_NUM_MSDU_DESC]; 3204f57d718SPavankumar Nandeshwar u32 sw_cookie[HAL_RX_NUM_MSDU_DESC]; 3214f57d718SPavankumar Nandeshwar u8 rbm[HAL_RX_NUM_MSDU_DESC]; 3224f57d718SPavankumar Nandeshwar }; 3234f57d718SPavankumar Nandeshwar 3244f57d718SPavankumar Nandeshwar #define HAL_RX_FBM_ACK_INFO0_ADDR1_31_0 GENMASK(31, 0) 3254f57d718SPavankumar Nandeshwar #define HAL_RX_FBM_ACK_INFO1_ADDR1_47_32 GENMASK(15, 0) 3264f57d718SPavankumar Nandeshwar #define HAL_RX_FBM_ACK_INFO1_ADDR2_15_0 GENMASK(31, 16) 3274f57d718SPavankumar Nandeshwar #define HAL_RX_FBM_ACK_INFO2_ADDR2_47_16 GENMASK(31, 0) 3284f57d718SPavankumar Nandeshwar 3294f57d718SPavankumar Nandeshwar struct hal_rx_frame_bitmap_ack { 3304f57d718SPavankumar Nandeshwar __le32 reserved; 3314f57d718SPavankumar Nandeshwar __le32 info0; 3324f57d718SPavankumar Nandeshwar __le32 info1; 3334f57d718SPavankumar Nandeshwar __le32 info2; 3344f57d718SPavankumar Nandeshwar __le32 reserved1[10]; 3354f57d718SPavankumar Nandeshwar } __packed; 3364f57d718SPavankumar Nandeshwar 3374f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO0_PPDU_ID GENMASK(15, 0) 3384f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO0_RECEPTION_TYPE BIT(16) 3394f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_DURATION GENMASK(15, 0) 3404f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_RATE_MCS GENMASK(24, 21) 3414f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_SGI GENMASK(26, 25) 3424f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_STBC BIT(27) 3434f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_LDPC BIT(28) 3444f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO1_IS_AMPDU BIT(29) 3454f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO2_NUM_USER GENMASK(6, 0) 3464f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO3_ADDR1_31_0 GENMASK(31, 0) 3474f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO4_ADDR1_47_32 GENMASK(15, 0) 3484f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO4_ADDR1_15_0 GENMASK(31, 16) 3494f57d718SPavankumar Nandeshwar #define HAL_RX_RESP_REQ_INFO5_ADDR1_47_16 GENMASK(31, 0) 3504f57d718SPavankumar Nandeshwar 3514f57d718SPavankumar Nandeshwar struct hal_rx_resp_req_info { 3524f57d718SPavankumar Nandeshwar __le32 info0; 3534f57d718SPavankumar Nandeshwar __le32 reserved[1]; 3544f57d718SPavankumar Nandeshwar __le32 info1; 3554f57d718SPavankumar Nandeshwar __le32 info2; 3564f57d718SPavankumar Nandeshwar __le32 reserved1[2]; 3574f57d718SPavankumar Nandeshwar __le32 info3; 3584f57d718SPavankumar Nandeshwar __le32 info4; 3594f57d718SPavankumar Nandeshwar __le32 info5; 3604f57d718SPavankumar Nandeshwar __le32 reserved2[5]; 3614f57d718SPavankumar Nandeshwar } __packed; 3624f57d718SPavankumar Nandeshwar 3634f57d718SPavankumar Nandeshwar #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_0 0xDDBEEF 3644f57d718SPavankumar Nandeshwar #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_1 0xADBEEF 3654f57d718SPavankumar Nandeshwar #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_2 0xBDBEEF 3664f57d718SPavankumar Nandeshwar #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_3 0xCDBEEF 3674f57d718SPavankumar Nandeshwar 3684f57d718SPavankumar Nandeshwar /* HE Radiotap data1 Mask */ 3694f57d718SPavankumar Nandeshwar #define HE_SU_FORMAT_TYPE 0x0000 3704f57d718SPavankumar Nandeshwar #define HE_EXT_SU_FORMAT_TYPE 0x0001 3714f57d718SPavankumar Nandeshwar #define HE_MU_FORMAT_TYPE 0x0002 3724f57d718SPavankumar Nandeshwar #define HE_TRIG_FORMAT_TYPE 0x0003 3734f57d718SPavankumar Nandeshwar #define HE_BEAM_CHANGE_KNOWN 0x0008 3744f57d718SPavankumar Nandeshwar #define HE_DL_UL_KNOWN 0x0010 3754f57d718SPavankumar Nandeshwar #define HE_MCS_KNOWN 0x0020 3764f57d718SPavankumar Nandeshwar #define HE_DCM_KNOWN 0x0040 3774f57d718SPavankumar Nandeshwar #define HE_CODING_KNOWN 0x0080 3784f57d718SPavankumar Nandeshwar #define HE_LDPC_EXTRA_SYMBOL_KNOWN 0x0100 3794f57d718SPavankumar Nandeshwar #define HE_STBC_KNOWN 0x0200 3804f57d718SPavankumar Nandeshwar #define HE_DATA_BW_RU_KNOWN 0x4000 3814f57d718SPavankumar Nandeshwar #define HE_DOPPLER_KNOWN 0x8000 3824f57d718SPavankumar Nandeshwar #define HE_BSS_COLOR_KNOWN 0x0004 3834f57d718SPavankumar Nandeshwar 3844f57d718SPavankumar Nandeshwar /* HE Radiotap data2 Mask */ 3854f57d718SPavankumar Nandeshwar #define HE_GI_KNOWN 0x0002 3864f57d718SPavankumar Nandeshwar #define HE_TXBF_KNOWN 0x0010 3874f57d718SPavankumar Nandeshwar #define HE_PE_DISAMBIGUITY_KNOWN 0x0020 3884f57d718SPavankumar Nandeshwar #define HE_TXOP_KNOWN 0x0040 3894f57d718SPavankumar Nandeshwar #define HE_LTF_SYMBOLS_KNOWN 0x0004 3904f57d718SPavankumar Nandeshwar #define HE_PRE_FEC_PADDING_KNOWN 0x0008 3914f57d718SPavankumar Nandeshwar #define HE_MIDABLE_PERIODICITY_KNOWN 0x0080 3924f57d718SPavankumar Nandeshwar 3934f57d718SPavankumar Nandeshwar /* HE radiotap data3 shift values */ 3944f57d718SPavankumar Nandeshwar #define HE_BEAM_CHANGE_SHIFT 6 3954f57d718SPavankumar Nandeshwar #define HE_DL_UL_SHIFT 7 3964f57d718SPavankumar Nandeshwar #define HE_TRANSMIT_MCS_SHIFT 8 3974f57d718SPavankumar Nandeshwar #define HE_DCM_SHIFT 12 3984f57d718SPavankumar Nandeshwar #define HE_CODING_SHIFT 13 3994f57d718SPavankumar Nandeshwar #define HE_LDPC_EXTRA_SYMBOL_SHIFT 14 4004f57d718SPavankumar Nandeshwar #define HE_STBC_SHIFT 15 4014f57d718SPavankumar Nandeshwar 4024f57d718SPavankumar Nandeshwar /* HE radiotap data4 shift values */ 4034f57d718SPavankumar Nandeshwar #define HE_STA_ID_SHIFT 4 4044f57d718SPavankumar Nandeshwar 4054f57d718SPavankumar Nandeshwar /* HE radiotap data5 */ 4064f57d718SPavankumar Nandeshwar #define HE_GI_SHIFT 4 4074f57d718SPavankumar Nandeshwar #define HE_LTF_SIZE_SHIFT 6 4084f57d718SPavankumar Nandeshwar #define HE_LTF_SYM_SHIFT 8 4094f57d718SPavankumar Nandeshwar #define HE_TXBF_SHIFT 14 4104f57d718SPavankumar Nandeshwar #define HE_PE_DISAMBIGUITY_SHIFT 15 4114f57d718SPavankumar Nandeshwar #define HE_PRE_FEC_PAD_SHIFT 12 4124f57d718SPavankumar Nandeshwar 4134f57d718SPavankumar Nandeshwar /* HE radiotap data6 */ 4144f57d718SPavankumar Nandeshwar #define HE_DOPPLER_SHIFT 4 4154f57d718SPavankumar Nandeshwar #define HE_TXOP_SHIFT 8 4164f57d718SPavankumar Nandeshwar 4174f57d718SPavankumar Nandeshwar /* HE radiotap HE-MU flags1 */ 4184f57d718SPavankumar Nandeshwar #define HE_SIG_B_MCS_KNOWN 0x0010 4194f57d718SPavankumar Nandeshwar #define HE_SIG_B_DCM_KNOWN 0x0040 4204f57d718SPavankumar Nandeshwar #define HE_SIG_B_SYM_NUM_KNOWN 0x8000 4214f57d718SPavankumar Nandeshwar #define HE_RU_0_KNOWN 0x0100 4224f57d718SPavankumar Nandeshwar #define HE_RU_1_KNOWN 0x0200 4234f57d718SPavankumar Nandeshwar #define HE_RU_2_KNOWN 0x0400 4244f57d718SPavankumar Nandeshwar #define HE_RU_3_KNOWN 0x0800 4254f57d718SPavankumar Nandeshwar #define HE_DCM_FLAG_1_SHIFT 5 4264f57d718SPavankumar Nandeshwar #define HE_SPATIAL_REUSE_MU_KNOWN 0x0100 4274f57d718SPavankumar Nandeshwar #define HE_SIG_B_COMPRESSION_FLAG_1_KNOWN 0x4000 4284f57d718SPavankumar Nandeshwar 4294f57d718SPavankumar Nandeshwar /* HE radiotap HE-MU flags2 */ 4304f57d718SPavankumar Nandeshwar #define HE_SIG_B_COMPRESSION_FLAG_2_SHIFT 3 4314f57d718SPavankumar Nandeshwar #define HE_BW_KNOWN 0x0004 4324f57d718SPavankumar Nandeshwar #define HE_NUM_SIG_B_SYMBOLS_SHIFT 4 4334f57d718SPavankumar Nandeshwar #define HE_SIG_B_COMPRESSION_FLAG_2_KNOWN 0x0100 4344f57d718SPavankumar Nandeshwar #define HE_NUM_SIG_B_FLAG_2_SHIFT 9 4354f57d718SPavankumar Nandeshwar #define HE_LTF_FLAG_2_SYMBOLS_SHIFT 12 4364f57d718SPavankumar Nandeshwar #define HE_LTF_KNOWN 0x8000 4374f57d718SPavankumar Nandeshwar 4384f57d718SPavankumar Nandeshwar /* HE radiotap per_user_1 */ 4394f57d718SPavankumar Nandeshwar #define HE_STA_SPATIAL_SHIFT 11 4404f57d718SPavankumar Nandeshwar #define HE_TXBF_SHIFT 14 4414f57d718SPavankumar Nandeshwar #define HE_RESERVED_SET_TO_1_SHIFT 19 4424f57d718SPavankumar Nandeshwar #define HE_STA_CODING_SHIFT 20 4434f57d718SPavankumar Nandeshwar 4444f57d718SPavankumar Nandeshwar /* HE radiotap per_user_2 */ 4454f57d718SPavankumar Nandeshwar #define HE_STA_MCS_SHIFT 4 4464f57d718SPavankumar Nandeshwar #define HE_STA_DCM_SHIFT 5 4474f57d718SPavankumar Nandeshwar 4484f57d718SPavankumar Nandeshwar /* HE radiotap per user known */ 4494f57d718SPavankumar Nandeshwar #define HE_USER_FIELD_POSITION_KNOWN 0x01 4504f57d718SPavankumar Nandeshwar #define HE_STA_ID_PER_USER_KNOWN 0x02 4514f57d718SPavankumar Nandeshwar #define HE_STA_NSTS_KNOWN 0x04 4524f57d718SPavankumar Nandeshwar #define HE_STA_TX_BF_KNOWN 0x08 4534f57d718SPavankumar Nandeshwar #define HE_STA_SPATIAL_CONFIG_KNOWN 0x10 4544f57d718SPavankumar Nandeshwar #define HE_STA_MCS_KNOWN 0x20 4554f57d718SPavankumar Nandeshwar #define HE_STA_DCM_KNOWN 0x40 4564f57d718SPavankumar Nandeshwar #define HE_STA_CODING_KNOWN 0x80 4574f57d718SPavankumar Nandeshwar 4584f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_FCS BIT(0) 4594f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_DECRYPT BIT(1) 4604f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_TKIP_MIC BIT(2) 4614f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_AMSDU_ERR BIT(3) 4624f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_OVERFLOW BIT(4) 4634f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_MSDU_LEN BIT(5) 4644f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_MPDU_LEN BIT(6) 4654f57d718SPavankumar Nandeshwar #define HAL_RX_MPDU_ERR_UNENCRYPTED_FRAME BIT(7) 4664f57d718SPavankumar Nandeshwar 467631ee338SJeff Johnson #define HAL_RX_CMN_USR_INFO0_CP_SETTING GENMASK(17, 16) 468631ee338SJeff Johnson #define HAL_RX_CMN_USR_INFO0_LTF_SIZE GENMASK(19, 18) 4694f57d718SPavankumar Nandeshwar 4704f57d718SPavankumar Nandeshwar struct hal_phyrx_common_user_info { 4714f57d718SPavankumar Nandeshwar __le32 rsvd[2]; 4724f57d718SPavankumar Nandeshwar __le32 info0; 4734f57d718SPavankumar Nandeshwar __le32 rsvd1; 4744f57d718SPavankumar Nandeshwar } __packed; 4754f57d718SPavankumar Nandeshwar 4764f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_SPATIAL_REUSE GENMASK(3, 0) 4774f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_GI_LTF GENMASK(5, 4) 4784f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_NUM_LTF_SYM GENMASK(8, 6) 4794f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_NSS GENMASK(10, 7) 4804f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_BEAMFORMED BIT(11) 4814f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_DISREGARD GENMASK(13, 12) 4824f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NDP_CMN_INFO0_CRC GENMASK(17, 14) 4834f57d718SPavankumar Nandeshwar 4844f57d718SPavankumar Nandeshwar struct hal_eht_sig_ndp_cmn_eb { 4854f57d718SPavankumar Nandeshwar __le32 info0; 4864f57d718SPavankumar Nandeshwar } __packed; 4874f57d718SPavankumar Nandeshwar 4884f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_SPATIAL_REUSE GENMASK(3, 0) 4894f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_GI_LTF GENMASK(5, 4) 4904f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_NUM_LTF_SYM GENMASK(8, 6) 4914f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_LDPC_EXTA_SYM BIT(9) 4924f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_PRE_FEC_PAD_FACTOR GENMASK(11, 10) 4934f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_DISAMBIGUITY BIT(12) 4944f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OVERFLOW_INFO0_DISREGARD GENMASK(16, 13) 4954f57d718SPavankumar Nandeshwar 4964f57d718SPavankumar Nandeshwar struct hal_eht_sig_usig_overflow { 4974f57d718SPavankumar Nandeshwar __le32 info0; 4984f57d718SPavankumar Nandeshwar } __packed; 4994f57d718SPavankumar Nandeshwar 5004f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_STA_ID GENMASK(10, 0) 5014f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_MCS GENMASK(14, 11) 5024f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_VALIDATE BIT(15) 5034f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_NSS GENMASK(19, 16) 5044f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_BEAMFORMED BIT(20) 5054f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_CODING BIT(21) 5064f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_CRC GENMASK(25, 22) 5074f57d718SPavankumar Nandeshwar 5084f57d718SPavankumar Nandeshwar struct hal_eht_sig_non_mu_mimo { 5094f57d718SPavankumar Nandeshwar __le32 info0; 5104f57d718SPavankumar Nandeshwar } __packed; 5114f57d718SPavankumar Nandeshwar 5124f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_MUMIMO_USER_INFO0_STA_ID GENMASK(10, 0) 5134f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_MUMIMO_USER_INFO0_MCS GENMASK(14, 11) 5144f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_MUMIMO_USER_INFO0_CODING BIT(15) 5154f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_MUMIMO_USER_INFO0_SPATIAL_CODING GENMASK(22, 16) 5164f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_MUMIMO_USER_INFO0_CRC GENMASK(26, 23) 5174f57d718SPavankumar Nandeshwar 5184f57d718SPavankumar Nandeshwar struct hal_eht_sig_mu_mimo { 5194f57d718SPavankumar Nandeshwar __le32 info0; 5204f57d718SPavankumar Nandeshwar } __packed; 5214f57d718SPavankumar Nandeshwar 5224f57d718SPavankumar Nandeshwar union hal_eht_sig_user_field { 5234f57d718SPavankumar Nandeshwar struct hal_eht_sig_mu_mimo mu_mimo; 5244f57d718SPavankumar Nandeshwar struct hal_eht_sig_non_mu_mimo n_mu_mimo; 5254f57d718SPavankumar Nandeshwar }; 5264f57d718SPavankumar Nandeshwar 5274f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_SPATIAL_REUSE GENMASK(3, 0) 5284f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_GI_LTF GENMASK(5, 4) 5294f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_NUM_LTF_SYM GENMASK(8, 6) 5304f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_LDPC_EXTA_SYM BIT(9) 5314f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_PRE_FEC_PAD_FACTOR GENMASK(11, 10) 5324f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_DISAMBIGUITY BIT(12) 5334f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_DISREGARD GENMASK(16, 13) 5344f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_NON_OFDMA_INFO0_NUM_USERS GENMASK(19, 17) 5354f57d718SPavankumar Nandeshwar 5364f57d718SPavankumar Nandeshwar struct hal_eht_sig_non_ofdma_cmn_eb { 5374f57d718SPavankumar Nandeshwar __le32 info0; 5384f57d718SPavankumar Nandeshwar union hal_eht_sig_user_field user_field; 5394f57d718SPavankumar Nandeshwar } __packed; 5404f57d718SPavankumar Nandeshwar 5414f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_SPATIAL_REUSE GENMASK_ULL(3, 0) 5424f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_GI_LTF GENMASK_ULL(5, 4) 5434f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_NUM_LFT_SYM GENMASK_ULL(8, 6) 5444f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_LDPC_EXTRA_SYM BIT(9) 5454f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_PRE_FEC_PAD_FACTOR GENMASK_ULL(11, 10) 5464f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_PRE_DISAMBIGUITY BIT(12) 5474f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_DISREGARD GENMASK_ULL(16, 13) 5484f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_RU_ALLOC_1_1 GENMASK_ULL(25, 17) 5494f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_RU_ALLOC_1_2 GENMASK_ULL(34, 26) 5504f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB1_CRC GENMASK_ULL(30, 27) 5514f57d718SPavankumar Nandeshwar 5524f57d718SPavankumar Nandeshwar struct hal_eht_sig_ofdma_cmn_eb1 { 5534f57d718SPavankumar Nandeshwar __le64 info0; 5544f57d718SPavankumar Nandeshwar } __packed; 5554f57d718SPavankumar Nandeshwar 5564f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_1 GENMASK_ULL(8, 0) 5574f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_2 GENMASK_ULL(17, 9) 5584f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_3 GENMASK_ULL(26, 18) 5594f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_4 GENMASK_ULL(35, 27) 5604f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_5 GENMASK_ULL(44, 36) 5614f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_RU_ALLOC_2_6 GENMASK_ULL(53, 45) 5624f57d718SPavankumar Nandeshwar #define HAL_RX_EHT_SIG_OFDMA_EB2_MCS GNEMASK_ULL(57, 54) 5634f57d718SPavankumar Nandeshwar 5644f57d718SPavankumar Nandeshwar struct hal_eht_sig_ofdma_cmn_eb2 { 5654f57d718SPavankumar Nandeshwar __le64 info0; 5664f57d718SPavankumar Nandeshwar } __packed; 5674f57d718SPavankumar Nandeshwar 5684f57d718SPavankumar Nandeshwar struct hal_eht_sig_ofdma_cmn_eb { 5694f57d718SPavankumar Nandeshwar struct hal_eht_sig_ofdma_cmn_eb1 eb1; 5704f57d718SPavankumar Nandeshwar struct hal_eht_sig_ofdma_cmn_eb2 eb2; 5714f57d718SPavankumar Nandeshwar union hal_eht_sig_user_field user_field; 5724f57d718SPavankumar Nandeshwar } __packed; 5734f57d718SPavankumar Nandeshwar 5744f57d718SPavankumar Nandeshwar enum hal_eht_bw { 5754f57d718SPavankumar Nandeshwar HAL_EHT_BW_20, 5764f57d718SPavankumar Nandeshwar HAL_EHT_BW_40, 5774f57d718SPavankumar Nandeshwar HAL_EHT_BW_80, 5784f57d718SPavankumar Nandeshwar HAL_EHT_BW_160, 5794f57d718SPavankumar Nandeshwar HAL_EHT_BW_320_1, 5804f57d718SPavankumar Nandeshwar HAL_EHT_BW_320_2, 5814f57d718SPavankumar Nandeshwar }; 5824f57d718SPavankumar Nandeshwar 5834f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_PHY_VERSION GENMASK(2, 0) 5844f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_BW GENMASK(5, 3) 5854f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_UL_DL BIT(6) 5864f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_BSS_COLOR GENMASK(12, 7) 5874f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_TXOP GENMASK(19, 13) 5884f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_DISREGARD GENMASK(25, 20) 5894f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_CMN_INFO0_VALIDATE BIT(26) 5904f57d718SPavankumar Nandeshwar 5914f57d718SPavankumar Nandeshwar struct hal_mon_usig_cmn { 5924f57d718SPavankumar Nandeshwar __le32 info0; 5934f57d718SPavankumar Nandeshwar } __packed; 5944f57d718SPavankumar Nandeshwar 5954f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_PPDU_TYPE_COMP_MODE GENMASK(1, 0) 5964f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_VALIDATE BIT(2) 5974f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_SPATIAL_REUSE_1 GENMASK(6, 3) 5984f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_SPATIAL_REUSE_2 GENMASK(10, 7) 5994f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_DISREGARD_1 GENMASK(15, 11) 6004f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_CRC GENMASK(19, 16) 6014f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_TAIL GENMASK(25, 20) 6024f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_TB_INFO0_RX_INTEG_CHECK_PASS BIT(31) 6034f57d718SPavankumar Nandeshwar 6044f57d718SPavankumar Nandeshwar struct hal_mon_usig_tb { 6054f57d718SPavankumar Nandeshwar __le32 info0; 6064f57d718SPavankumar Nandeshwar } __packed; 6074f57d718SPavankumar Nandeshwar 6084f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_PPDU_TYPE_COMP_MODE GENMASK(1, 0) 6094f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_VALIDATE_1 BIT(2) 6104f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_PUNC_CH_INFO GENMASK(7, 3) 6114f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_VALIDATE_2 BIT(8) 6124f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_EHT_SIG_MCS GENMASK(10, 9) 6134f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_NUM_EHT_SIG_SYM GENMASK(15, 11) 6144f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_CRC GENMASK(20, 16) 6154f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_TAIL GENMASK(26, 21) 6164f57d718SPavankumar Nandeshwar #define HAL_RX_USIG_MU_INFO0_RX_INTEG_CHECK_PASS BIT(31) 6174f57d718SPavankumar Nandeshwar 6184f57d718SPavankumar Nandeshwar struct hal_mon_usig_mu { 6194f57d718SPavankumar Nandeshwar __le32 info0; 6204f57d718SPavankumar Nandeshwar } __packed; 6214f57d718SPavankumar Nandeshwar 6224f57d718SPavankumar Nandeshwar union hal_mon_usig_non_cmn { 6234f57d718SPavankumar Nandeshwar struct hal_mon_usig_tb tb; 6244f57d718SPavankumar Nandeshwar struct hal_mon_usig_mu mu; 6254f57d718SPavankumar Nandeshwar }; 6264f57d718SPavankumar Nandeshwar 6274f57d718SPavankumar Nandeshwar struct hal_mon_usig_hdr { 6284f57d718SPavankumar Nandeshwar struct hal_mon_usig_cmn cmn; 6294f57d718SPavankumar Nandeshwar union hal_mon_usig_non_cmn non_cmn; 6304f57d718SPavankumar Nandeshwar } __packed; 6314f57d718SPavankumar Nandeshwar 6324f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO0_PHY_PPDU_ID GENMASK(15, 0) 6334f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO0_USR_RSSI GENMASK(23, 16) 6344f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO0_PKT_TYPE GENMASK(27, 24) 6354f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO0_STBC BIT(28) 6364f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO0_RECEPTION_TYPE GENMASK(31, 29) 6374f57d718SPavankumar Nandeshwar 6384f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_MCS GENMASK(3, 0) 6394f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_SGI GENMASK(5, 4) 6404f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_HE_RANGING_NDP BIT(6) 6414f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_MIMO_SS_BITMAP GENMASK(15, 8) 6424f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_RX_BW GENMASK(18, 16) 6434f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO1_DL_OFMDA_USR_IDX GENMASK(31, 24) 6444f57d718SPavankumar Nandeshwar 6454f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_DL_OFDMA_CONTENT_CHAN BIT(0) 6464f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_NSS GENMASK(10, 8) 6474f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_STREAM_OFFSET GENMASK(13, 11) 6484f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_STA_DCM BIT(14) 6494f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_LDPC BIT(15) 6504f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_RU_TYPE_80_0 GENMASK(19, 16) 6514f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_RU_TYPE_80_1 GENMASK(23, 20) 6524f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_RU_TYPE_80_2 GENMASK(27, 24) 6534f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO2_RU_TYPE_80_3 GENMASK(31, 28) 6544f57d718SPavankumar Nandeshwar 6554f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO3_RU_START_IDX_80_0 GENMASK(5, 0) 6564f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO3_RU_START_IDX_80_1 GENMASK(13, 8) 6574f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO3_RU_START_IDX_80_2 GENMASK(21, 16) 6584f57d718SPavankumar Nandeshwar #define HAL_RX_USR_INFO3_RU_START_IDX_80_3 GENMASK(29, 24) 6594f57d718SPavankumar Nandeshwar 6604f57d718SPavankumar Nandeshwar struct hal_receive_user_info { 6614f57d718SPavankumar Nandeshwar __le32 info0; 6624f57d718SPavankumar Nandeshwar __le32 info1; 6634f57d718SPavankumar Nandeshwar __le32 info2; 6644f57d718SPavankumar Nandeshwar __le32 info3; 6654f57d718SPavankumar Nandeshwar __le32 user_fd_rssi_seg0; 6664f57d718SPavankumar Nandeshwar __le32 user_fd_rssi_seg1; 6674f57d718SPavankumar Nandeshwar __le32 user_fd_rssi_seg2; 6684f57d718SPavankumar Nandeshwar __le32 user_fd_rssi_seg3; 6694f57d718SPavankumar Nandeshwar } __packed; 6704f57d718SPavankumar Nandeshwar 6714f57d718SPavankumar Nandeshwar enum hal_mon_reception_type { 6724f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_SU, 6734f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_DL_MU_MIMO, 6744f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_DL_MU_OFMA, 6754f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_DL_MU_OFDMA_MIMO, 6764f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_UL_MU_MIMO, 6774f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_UL_MU_OFDMA, 6784f57d718SPavankumar Nandeshwar HAL_RECEPTION_TYPE_UL_MU_OFDMA_MIMO, 6794f57d718SPavankumar Nandeshwar }; 6804f57d718SPavankumar Nandeshwar 6814f57d718SPavankumar Nandeshwar /* Different allowed RU in 11BE */ 6824f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_26 0ULL 6834f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_52 1ULL 6844f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_78 2ULL 6854f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_106 3ULL 6864f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_132 4ULL 6874f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_242 5ULL 6884f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_484 6ULL 6894f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_726 7ULL 6904f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996 8ULL 6914f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2 9ULL 6924f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3 10ULL 6934f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x4 11ULL 6944f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_NONE 15ULL 6954f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_INVALID 31ULL 6964f57d718SPavankumar Nandeshwar /* MRUs spanning above 80Mhz 6974f57d718SPavankumar Nandeshwar * HAL_EHT_RU_996_484 = HAL_EHT_RU_484 + HAL_EHT_RU_996 + 4 (reserved) 6984f57d718SPavankumar Nandeshwar */ 6994f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484 18ULL 7004f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484 28ULL 7014f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484 40ULL 7024f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_242 23ULL 7034f57d718SPavankumar Nandeshwar 7044f57d718SPavankumar Nandeshwar #define NUM_RU_BITS_PER80 16 7054f57d718SPavankumar Nandeshwar #define NUM_RU_BITS_PER20 4 7064f57d718SPavankumar Nandeshwar 7074f57d718SPavankumar Nandeshwar /* Different per_80Mhz band in 320Mhz bandwidth */ 7084f57d718SPavankumar Nandeshwar #define HAL_80_0 0 7094f57d718SPavankumar Nandeshwar #define HAL_80_1 1 7104f57d718SPavankumar Nandeshwar #define HAL_80_2 2 7114f57d718SPavankumar Nandeshwar #define HAL_80_3 3 7124f57d718SPavankumar Nandeshwar 7134f57d718SPavankumar Nandeshwar #define HAL_RU_80MHZ(num_band) ((num_band) * NUM_RU_BITS_PER80) 7144f57d718SPavankumar Nandeshwar #define HAL_RU_20MHZ(idx_per_80) ((idx_per_80) * NUM_RU_BITS_PER20) 7154f57d718SPavankumar Nandeshwar 7164f57d718SPavankumar Nandeshwar #define HAL_RU_SHIFT(num_band, idx_per_80) \ 7174f57d718SPavankumar Nandeshwar (HAL_RU_80MHZ(num_band) + HAL_RU_20MHZ(idx_per_80)) 7184f57d718SPavankumar Nandeshwar 7194f57d718SPavankumar Nandeshwar #define HAL_RU(ru, num_band, idx_per_80) \ 7204f57d718SPavankumar Nandeshwar ((u64)(ru) << HAL_RU_SHIFT(num_band, idx_per_80)) 7214f57d718SPavankumar Nandeshwar 7224f57d718SPavankumar Nandeshwar /* MRU-996+484 */ 7234f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_0 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 1) | \ 7244f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996, HAL_80_1, 0)) 7254f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_1 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 0) | \ 7264f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996, HAL_80_1, 0)) 7274f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_2 (HAL_RU(HAL_EHT_RU_996, HAL_80_0, 0) | \ 7284f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 1)) 7294f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_3 (HAL_RU(HAL_EHT_RU_996, HAL_80_0, 0) | \ 7304f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 0)) 7314f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_4 (HAL_RU(HAL_EHT_RU_484, HAL_80_2, 1) | \ 7324f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996, HAL_80_3, 0)) 7334f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_5 (HAL_RU(HAL_EHT_RU_484, HAL_80_2, 0) | \ 7344f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996, HAL_80_3, 0)) 7354f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_6 (HAL_RU(HAL_EHT_RU_996, HAL_80_2, 0) | \ 7364f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 1)) 7374f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996_484_7 (HAL_RU(HAL_EHT_RU_996, HAL_80_2, 0) | \ 7384f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 0)) 7394f57d718SPavankumar Nandeshwar 7404f57d718SPavankumar Nandeshwar /* MRU-996x2+484 */ 7414f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_0 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 1) | \ 7424f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7434f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0)) 7444f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_1 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 0) | \ 7454f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7464f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0)) 7474f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_2 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_0, 0) | \ 7484f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 1) | \ 7494f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0)) 7504f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_3 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_0, 0) | \ 7514f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 0) | \ 7524f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0)) 7534f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_4 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_0, 0) | \ 7544f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7554f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 1)) 7564f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_5 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_0, 0) | \ 7574f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7584f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 0)) 7594f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_6 (HAL_RU(HAL_EHT_RU_484, HAL_80_1, 1) | \ 7604f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0) | \ 7614f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_3, 0)) 7624f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_7 (HAL_RU(HAL_EHT_RU_484, HAL_80_1, 0) | \ 7634f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0) | \ 7644f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_3, 0)) 7654f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_8 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7664f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 1) | \ 7674f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_3, 0)) 7684f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_9 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7694f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 0) | \ 7704f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_3, 0)) 7714f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_10 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7724f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0) | \ 7734f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 1)) 7744f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x2_484_11 (HAL_RU(HAL_EHT_RU_996x2, HAL_80_1, 0) | \ 7754f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x2, HAL_80_2, 0) | \ 7764f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 0)) 7774f57d718SPavankumar Nandeshwar 7784f57d718SPavankumar Nandeshwar /* MRU-996x3+484 */ 7794f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_0 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 1) | \ 7804f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 7814f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 7824f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 7834f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_1 (HAL_RU(HAL_EHT_RU_484, HAL_80_0, 0) | \ 7844f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 7854f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 7864f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 7874f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_2 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 7884f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 1) | \ 7894f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 7904f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 7914f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_3 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 7924f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_1, 0) | \ 7934f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 7944f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 7954f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_4 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 7964f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 7974f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 1) | \ 7984f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 7994f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_5 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 8004f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 8014f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_2, 0) | \ 8024f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_3, 0)) 8034f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_6 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 8044f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 8054f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 8064f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 1)) 8074f57d718SPavankumar Nandeshwar #define HAL_EHT_RU_996x3_484_7 (HAL_RU(HAL_EHT_RU_996x3, HAL_80_0, 0) | \ 8084f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_1, 0) | \ 8094f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_996x3, HAL_80_2, 0) | \ 8104f57d718SPavankumar Nandeshwar HAL_RU(HAL_EHT_RU_484, HAL_80_3, 0)) 8114f57d718SPavankumar Nandeshwar 8124f57d718SPavankumar Nandeshwar #define HAL_RU_PER80(ru_per80, num_80mhz, ru_idx_per80mhz) \ 8134f57d718SPavankumar Nandeshwar (HAL_RU(ru_per80, num_80mhz, ru_idx_per80mhz)) 8144f57d718SPavankumar Nandeshwar 815972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_reo_status_queue_stats(struct ath12k_base *ab, 8161f165022SBaochen Qiang struct hal_reo_get_queue_stats_status *desc, 8174f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 818972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_reo_flush_queue_status(struct ath12k_base *ab, 8191f165022SBaochen Qiang struct hal_reo_flush_queue_status *desc, 8204f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 821972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_reo_flush_cache_status(struct ath12k_base *ab, 8221f165022SBaochen Qiang struct hal_reo_flush_cache_status *desc, 8234f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 824972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_reo_unblk_cache_status(struct ath12k_base *ab, 8251f165022SBaochen Qiang struct hal_reo_unblock_cache_status *desc, 8264f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 8271f165022SBaochen Qiang void 8281f165022SBaochen Qiang ath12k_wifi7_hal_reo_flush_timeout_list_status(struct ath12k_base *ab, 8291f165022SBaochen Qiang struct hal_reo_flush_timeout_list_status *desc, 8304f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 8311f165022SBaochen Qiang void 8321f165022SBaochen Qiang ath12k_wifi7_hal_reo_desc_thresh_reached_status(struct ath12k_base *ab, 8331f165022SBaochen Qiang struct hal_reo_desc_thresh_reached_status *desc, 8344f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 835972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_reo_update_rx_reo_queue_status(struct ath12k_base *ab, 8361f165022SBaochen Qiang struct hal_reo_status_hdr *desc, 8374f57d718SPavankumar Nandeshwar struct hal_reo_status *status); 838972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_msdu_link_info_get(struct hal_rx_msdu_link *link, u32 *num_msdus, 8394f57d718SPavankumar Nandeshwar u32 *msdu_cookies, 8404f57d718SPavankumar Nandeshwar enum hal_rx_buf_return_buf_manager *rbm); 841972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_msdu_link_desc_set(struct ath12k_base *ab, 8424f57d718SPavankumar Nandeshwar struct hal_wbm_release_ring *desc, 8434f57d718SPavankumar Nandeshwar struct ath12k_buffer_addr *buf_addr_info, 8444f57d718SPavankumar Nandeshwar enum hal_wbm_rel_bm_act action); 845972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_buf_addr_info_set(struct ath12k_buffer_addr *binfo, 8464f57d718SPavankumar Nandeshwar dma_addr_t paddr, u32 cookie, u8 manager); 847972f34d5SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_buf_addr_info_get(struct ath12k_buffer_addr *binfo, 8484f57d718SPavankumar Nandeshwar dma_addr_t *paddr, 8494f57d718SPavankumar Nandeshwar u32 *cookie, u8 *rbm); 85096b42732SPavankumar Nandeshwar int ath12k_wifi7_hal_desc_reo_parse_err(struct ath12k_dp *dp, 8514f57d718SPavankumar Nandeshwar struct hal_reo_dest_ring *desc, 8524f57d718SPavankumar Nandeshwar dma_addr_t *paddr, u32 *desc_bank); 85396b42732SPavankumar Nandeshwar int ath12k_wifi7_hal_wbm_desc_parse_err(struct ath12k_dp *dp, void *desc, 8544f57d718SPavankumar Nandeshwar struct hal_rx_wbm_rel_info *rel_info); 85596b42732SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_reo_ent_paddr_get(struct ath12k_buffer_addr *buff_addr, 8564f57d718SPavankumar Nandeshwar dma_addr_t *paddr, u32 *cookie); 857c8706025SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get(void *rx_desc, dma_addr_t *paddr, 858c8706025SPavankumar Nandeshwar u32 *sw_cookie, 8594f57d718SPavankumar Nandeshwar struct ath12k_buffer_addr **pp_buf_addr, 8604f57d718SPavankumar Nandeshwar u8 *rbm, u32 *msdu_cnt); 861c8706025SPavankumar Nandeshwar void ath12k_wifi7_hal_rx_msdu_list_get(struct ath12k *ar, 862c8706025SPavankumar Nandeshwar void *link_desc, 863c8706025SPavankumar Nandeshwar void *msdu_list_opaque, 8644f57d718SPavankumar Nandeshwar u16 *num_msdus); 8659615a672SBaochen Qiang void ath12k_wifi7_hal_reo_init_cmd_ring_tlv64(struct ath12k_base *ab, 86617540a7cSPavankumar Nandeshwar struct hal_srng *srng); 867*b7ffeb0fSBaochen Qiang void ath12k_wifi7_hal_reo_init_cmd_ring_tlv32(struct ath12k_base *ab, 868*b7ffeb0fSBaochen Qiang struct hal_srng *srng); 869631ee338SJeff Johnson void ath12k_wifi7_hal_reo_shared_qaddr_cache_clear(struct ath12k_base *ab); 87017540a7cSPavankumar Nandeshwar void ath12k_wifi7_hal_reo_hw_setup(struct ath12k_base *ab, u32 ring_hash_map); 87117540a7cSPavankumar Nandeshwar void ath12k_wifi7_hal_reo_qdesc_setup(struct hal_rx_reo_queue *qdesc, 87217540a7cSPavankumar Nandeshwar int tid, u32 ba_window_size, 87317540a7cSPavankumar Nandeshwar u32 start_seq, enum hal_pn_type type); 8744f57d718SPavankumar Nandeshwar 8754f57d718SPavankumar Nandeshwar #endif 876