1 /* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * Description: HAL Layer Specifications. 15 */ 16 17 #ifndef __HAL_COMMON_OPS_DEVICE_ROM_H__ 18 #define __HAL_COMMON_OPS_DEVICE_ROM_H__ 19 20 /***************************************************************************** 21 1 头文件包含 22 *****************************************************************************/ 23 #include "hal_commom_ops_type_rom.h" 24 #include "wlan_spec_type_rom.h" 25 #include "hal_mac_reg.h" 26 #include "oal_types_device_rom.h" 27 #include "wlan_types.h" 28 #include "wlan_types_base_rom.h" 29 #include "soc_osal.h" 30 31 #ifdef __cplusplus 32 #if __cplusplus 33 extern "C" { 34 #endif 35 #endif 36 37 /***************************************************************************** 38 2 宏定义 39 *****************************************************************************/ 40 typedef enum { 41 HAL_VAP_VAP0 = 0, /* STA固定使用hal vap0 */ 42 HAL_VAP_VAP1 = 1, /* P2P固定使用hal vap1 */ 43 HAL_VAP_VAP2 = 2, /* AP固定使用hal vap2 */ 44 HAL_MAX_VAP_NUM 45 } hal_vap_id_enum; 46 typedef osal_u8 hal_vap_id_enum_uint8; 47 #ifdef _PRE_WLAN_DFT_STAT 48 #define OAM_PHY_STAT_NODE_ENABLED_MAX_NUM 4 49 #endif 50 51 #define HAL_POW_11B_RATE_NUM 4 /* 11b速率数目 */ 52 #define HAL_POW_11G_RATE_NUM 8 /* 11g速率数目 */ 53 #define HAL_POW_11A_RATE_NUM 8 /* 11a速率数目 */ 54 55 #ifdef _PRE_WLAN_FEATURE_11AC_20M_MCS9 56 #ifdef _PRE_WLAN_FEATURE_1024QAM 57 #define HAL_POW_11AC_20M_NUM 12 /* 11n_11ac_2g速率数目 */ 58 #else 59 #define HAL_POW_11AC_20M_NUM 10 /* 11n_11ac_2g速率数目 */ 60 #endif 61 #else 62 #define HAL_POW_11AC_20M_NUM 9 /* 11n_11ac_2g速率数目 */ 63 #endif 64 65 #ifdef _PRE_WLAN_FEATURE_1024QAM 66 #define HAL_POW_11AC_40M_NUM 13 /* 11n_11ac_2g速率数目 */ 67 #define HAL_POW_11AC_80M_NUM 12 /* 11n_11ac_2g速率数目 */ 68 #else 69 #define HAL_POW_11AC_40M_NUM 11 /* 11n_11ac_2g速率数目 */ 70 #define HAL_POW_11AC_80M_NUM 10 /* 11n_11ac_2g速率数目 */ 71 #endif 72 73 #define HAL_POW_11AX_20M_NUM 12 /* 11ax 速率数目 */ 74 #define HAL_POW_11AX_40M_NUM 12 /* 11ax 速率数目 */ 75 #define HAL_POW_11AX_80M_NUM 12 /* 11ax 速率数目 */ 76 77 #define HAL_POW_11AX_ER_SU_106_NUM 1 /* 11ax ER_SU_106 tone速率数目 */ 78 #define HAL_POW_11AX_ER_SU_242_NUM 3 /* 11ax ER_SU_242 tone速率数目 */ 79 80 /* rate-tpccode table中速率个数 */ 81 #define HAL_POW_RATE_POW_CODE_TABLE_LEN (HAL_POW_11B_RATE_NUM + HAL_POW_11G_RATE_NUM + HAL_POW_11AC_20M_NUM + \ 82 HAL_POW_11AC_40M_NUM + HAL_POW_11AC_80M_NUM + HAL_POW_11AX_20M_NUM + HAL_POW_11AX_40M_NUM + \ 83 HAL_POW_11AX_80M_NUM + HAL_POW_11AX_ER_SU_106_NUM + HAL_POW_11AX_ER_SU_242_NUM) 84 85 /* rate-tpccode table中速率个数 */ 86 #define HAL_POW_RATE_POW_CODE_TABLE_2G_LEN (HAL_POW_11B_RATE_NUM + HAL_POW_11G_RATE_NUM + HAL_POW_11AC_20M_NUM + \ 87 HAL_POW_11AC_40M_NUM + HAL_POW_11AC_80M_NUM + HAL_POW_11AX_20M_NUM + HAL_POW_11AX_40M_NUM + \ 88 HAL_POW_11AX_80M_NUM + HAL_POW_11AX_ER_SU_106_NUM + HAL_POW_11AX_ER_SU_242_NUM) 89 90 /* 为了保证idx从0开始,个数中包含11B速率个数 */ 91 /* rate-tpccode table中速率个数 */ 92 #define HAL_POW_RATE_POW_CODE_TABLE_5G_LEN (HAL_POW_11B_RATE_NUM + HAL_POW_11G_RATE_NUM + HAL_POW_11AC_20M_NUM + \ 93 HAL_POW_11AC_40M_NUM + HAL_POW_11AC_80M_NUM + HAL_POW_11AX_20M_NUM + HAL_POW_11AX_40M_NUM + \ 94 HAL_POW_11AX_80M_NUM + HAL_POW_11AX_ER_SU_106_NUM + HAL_POW_11AX_ER_SU_242_NUM) 95 96 #define HAL_POW_CUSTOM_24G_11B_RATE_NUM 2 /* 定制化11b速率数目 */ 97 #define HAL_POW_CUSTOM_11G_11A_RATE_NUM 5 /* 定制化11g/11a速率数目 */ 98 #define HAL_POW_CUSTOM_HT20_VHT20_RATE_NUM 5 /* 定制化HT20_VHT20速率数目 */ 99 #define HAL_POW_CUSTOM_24G_HT40_VHT40_RATE_NUM 6 100 #define HAL_POW_CUSTOM_5G_HT40_VHT40_RATE_NUM 6 101 #define HAL_POW_CUSTOM_5G_VHT80_RATE_NUM 5 102 /* 定制化全部速率 */ 103 #define HAL_POW_CUSTOM_MCS9_10_11_RATE_NUM 2 104 #define HAL_POW_CUSTOM_MCS10_11_RATE_NUM 1 105 106 #define HAL_POW_CUSTOM_24G_HE20_RATE_NUM 3 107 108 #define HAL_POW_CUSTOM_HE_ER_SU_RATE_NUM 4 109 110 #define HAL_POW_CUSTOM_HT20_VHT20_DPD_RATE_NUM 5 /* 定制化DPD速率数目 */ 111 #define HAL_POW_CUSTOM_HT40_VHT40_DPD_RATE_NUM 5 112 113 #define HH503_DYN_CALI_5G_SECTION 2 /* 5G TX Power分 high & low power校准 */ 114 115 /* 定制化相关宏 */ 116 /* NVRAM中存储的各协议速率最大发射功率参数的个数 From:24G_11b_1M To:5G_VHT80_MCS7 */ 117 #define NUM_OF_NV_NORMAL_MAX_TXPOWER (HAL_POW_CUSTOM_24G_11B_RATE_NUM + \ 118 HAL_POW_CUSTOM_11G_11A_RATE_NUM + HAL_POW_CUSTOM_HT20_VHT20_RATE_NUM + \ 119 HAL_POW_CUSTOM_24G_HT40_VHT40_RATE_NUM + HAL_POW_CUSTOM_11G_11A_RATE_NUM + \ 120 HAL_POW_CUSTOM_HT20_VHT20_RATE_NUM + HAL_POW_CUSTOM_5G_HT40_VHT40_RATE_NUM + \ 121 HAL_POW_CUSTOM_5G_VHT80_RATE_NUM) 122 123 #define NUM_OF_NV_MAX_TXPOWER (NUM_OF_NV_NORMAL_MAX_TXPOWER + HAL_POW_CUSTOM_MCS9_10_11_RATE_NUM + \ 124 HAL_POW_CUSTOM_MCS10_11_RATE_NUM + HAL_POW_CUSTOM_MCS9_10_11_RATE_NUM + \ 125 HAL_POW_CUSTOM_MCS10_11_RATE_NUM + HAL_POW_CUSTOM_MCS10_11_RATE_NUM + \ 126 HAL_POW_CUSTOM_24G_HE20_RATE_NUM * 5 + HAL_POW_CUSTOM_HE_ER_SU_RATE_NUM * 2) 127 128 #define NUM_OF_NV_DPD_MAX_TXPOWER (HAL_POW_CUSTOM_HT20_VHT20_DPD_RATE_NUM + HAL_POW_CUSTOM_HT40_VHT40_DPD_RATE_NUM) 129 #define NUM_OF_NV_24G_11G_6M_POWER_IDX (2) 130 #define NUM_OF_NV_24G_20M_MCS0_POWER_IDX (7) 131 #define NUM_OF_24G_11G_6M_RATE_IDX (4) 132 #define NUM_OF_24G_20M_MCS0_RATE_IDX (12) 133 134 #define HAL_CUS_NUM_FCC_2G_PRO 3 /* 定制化2g FCC 11B+OFDM_20M+OFDM_40M */ 135 #define HAL_CUS_NUM_OF_SAR_PARAMS 8 /* 定制化降SAR参数 5G_BAND1~7 2.4G */ 136 #define HAL_NUM_5G_20M_SIDE_BAND 6 /* 定制化5g边带数 */ 137 #define HAL_NUM_5G_40M_SIDE_BAND 6 138 #define HAL_NUM_5G_80M_SIDE_BAND 5 139 140 #define HAL_POW_PRECISION_SHIFT 10 /* TPC算法中功率的精度 */ 141 #define HAL_POW_PA_LUT_NUM 4 /* 筛选使用的PA档位数目 */ 142 143 #define HAL_POW_UPC_RF_LUT_NUM 256 /* UPC在RF中的最大档位数目 */ 144 145 #define HAL_POW_UPC_LUT_NUM 2 /* 筛选使用的UPC档位数目(03 pilot upc code 修订为1bit) */ 146 147 #define HAL_POW_PA_BASE_IDX 2 /* 基准PA Index */ 148 149 #define HAL_POW_2G_LPF_BASE_IDX 2 /* 2G基准LPF Index */ 150 #define HAL_POW_2G_DAC_BASE_IDX 0 /* 2G基准DAC Index */ 151 #define HAL_POW_5G_LPF_BASE_IDX 3 /* 5G基准LPF Index */ 152 #define HAL_POW_5G_DAC_BASE_IDX 2 /* 5G基准DAC Index */ 153 154 #define HAL_UPC_DATA_REG_NUM 1 155 #define HAL_POW_UPC_LOW_START_IDX 0 /* UPC低档位的起始索引 */ 156 #define HAL_POW_CFR_BASE_IDX 0 /* 基准cfr_index Index */ 157 #define HAL_POW_DPD_TPC_BASE_IDX 0 /* 基准dpd_tpc_lv Index */ 158 #define HAL_DBB_SCALING_FOR_MAX_TXPWR_BASE 204 /* 2.4g6M 基准功率差值 delt_pwr = 20*ln(256)单位0.01 db */ 159 #define HAL_POW_DELTA_DBB_SCAL_BASE_IDX HAL_DBB_SCALING_FOR_MAX_TXPWR_BASE /* 基准delta_dbb_scaling Index */ 160 161 #define HAL_POW_2G_1MBPS_RATE_POW_IDX 0 /* 2G 1Mbps对应的功率表索引 */ 162 #define HAL_POW_5G_6MBPS_RATE_POW_IDX 4 /* 5G 6Mbps对应的功率表索引 */ 163 /***************************************************************************** 164 3 枚举 165 *****************************************************************************/ 166 167 /* sw preempt机制下蓝牙业务状态,a2dp|transfer page|inquiry 或者 both */ 168 typedef enum { 169 HAL_BTCOEX_PS_STATUE_ACL = 1, /* only a2dp|数传 BIT0 */ 170 HAL_BTCOEX_PS_STATUE_PAGE_INQ = 2, /* only page|inquiry BIT1 */ 171 HAL_BTCOEX_PS_STATUE_PAGE_ACL = 3, /* both a2dp|数传 and page|inquiry BIT0|BIT1 */ 172 HAL_BTCOEX_PS_STATUE_LDAC = 4, /* only ldac BIT2 */ 173 HAL_BTCOEX_PS_STATUE_LDAC_ACL = 5, /* ldac and a2dp|数传 BIT2|BIT0 */ 174 HAL_BTCOEX_PS_STATUE_LDAC_PAGE = 6, /* ldac and page|inquiry BIT2|BIT1 */ 175 HAL_BTCOEX_PS_STATUE_TRIPLE = 7, /* ldac and page|inquiry and a2dp|数传 BIT2|BIT1|BIT0 */ 176 177 HAL_BTCOEX_PS_STATUE_BUTT 178 } hal_btcoex_ps_status_enum; 179 typedef osal_u8 hal_btcoex_ps_status_enum_uint8; 180 181 typedef enum { 182 HAL_BTCOEX_HW_POWSAVE_NOFRAME = 0, 183 HAL_BTCOEX_HW_POWSAVE_SELFCTS = 1, 184 HAL_BTCOEX_HW_POWSAVE_NULLDATA = 2, 185 HAL_BTCOEX_HW_POWSAVE_QOSNULL = 3, 186 187 HAL_BTCOEX_HW_POWSAVE_BUTT 188 } hal_coex_hw_preempt_mode_enum; 189 typedef osal_u8 hal_coex_hw_preempt_mode_enum_uint8; 190 191 typedef enum { 192 HAL_BTCOEX_WIFI_STATE_ON = 0, 193 HAL_BTCOEX_WIFI_STATE_JOINING = 1, 194 HAL_BTCOEX_WIFI_STATE_SCAN = 2, 195 HAL_BTCOEX_WIFI_STATE_CONN = 3, /* STA/AP connect */ 196 HAL_BTCOEX_WIFI_STATE_P2P_SCAN = 4, 197 HAL_BTCOEX_WIFI_STATE_P2P_CONN = 5, 198 HAL_BTCOEX_WIFI_STATE_PS_STOP = 6, 199 HAL_BTCOEX_WIFI_STATE_SLEEP = 7, 200 201 HAL_BTCOEX_WIFI_STATE_WORK_MODE = 8, /* bit0-3 STA/AP/GO/GC */ 202 HAL_BTCOEX_WIFI_STATE_DIFF_CHANNEL = 9, 203 HAL_BTCOEX_WIFI_STATE_PROTOCOL_2G11BGN = 10, 204 HAL_BTCOEX_WIFI_STATE_PROTOCOL_2G11AX = 11, 205 HAL_BTCOEX_WIFI_STATE_CHAN_BITMAP = 12, 206 207 /* 92 only */ 208 HAL_BTCOEX_WIFI_STATE_BAND = 13, /* 0-2G,1=5G */ 209 HAL_BTCOEX_WIFI_STATE_CHAN_NUM = 14, 210 HAL_BTCOEX_WIFI_STATE_BAND_WIDTH = 15, 211 HAL_BTCOEX_WIFI_STATE_AP_MODE = 16, 212 HAL_BTCOEX_WIFI_STATE_AUTH_MODE = 17, 213 HAL_BTCOEX_WIFI_STATE_C1_SISO = 18, 214 215 /* 73 only */ 216 HAL_BTCOEX_WIFI_BUSY_STATUS = 19, 217 218 HAL_BTCOEX_STATE_BUTT 219 } hal_btcoex_wifi_state_enum; 220 typedef osal_u8 hal_btcoex_wifi_state_id_enum_uint8; 221 222 typedef enum { 223 HAL_BTCOEX_PS_OFF, 224 HAL_BTCOEX_PS_ON, 225 HAL_BTCOEX_PS_BUTT 226 } hal_btcoex_ps_enum; 227 typedef osal_u8 hal_btcoex_ps_enum_uint8; 228 229 #ifdef _PRE_WLAN_DFT_STAT 230 /* phy统计节点设置,保存节点idx的结构 */ 231 typedef struct { 232 osal_u8 node_idx[OAM_PHY_STAT_NODE_ENABLED_MAX_NUM]; 233 } oam_stats_phy_node_idx_stru; 234 #endif 235 /* HAL_DEVICE_WORK_STATE子状态 */ 236 typedef enum { 237 HAL_DEVICE_WORK_SUB_STATE_ACTIVE = 0, /* active子状态 */ 238 HAL_DEVICE_WORK_SUB_STATE_AWAKE = 1, /* awake子状态 */ 239 HAL_DEVICE_WORK_SUB_STATE_DOZE = 2, /* doze子状态 */ 240 HAL_DEVICE_WORK_SUB_STATE_INIT = 3, /* init子状态 */ 241 HAL_DEVICE_WORK_SUB_STATE_BUTT 242 } hal_device_work_sub_state_info; 243 typedef osal_u8 hal_work_sub_state_uint8; 244 #define HAL_WORK_SUB_STATE_NUM (HAL_DEVICE_WORK_SUB_STATE_INIT - HAL_DEVICE_WORK_SUB_STATE_ACTIVE) 245 246 typedef enum { 247 HAL_PHY_MAX_BW_SECT_MAX_BANDWIDTH = 0, 248 HAL_PHY_MAX_BW_SECT_MAX_NSS = 1, 249 HAL_PHY_MAX_BW_SECT_SINGLE_CH_SEL = 2, 250 251 HAL_PHY_MAX_BW_SECT_BUTT 252 } hal_phy_max_bw_sect_enum; 253 typedef osal_u8 hal_phy_max_bw_sect_enmu_uint8; 254 255 /***************************************************************************** 256 3.1 队列相关枚举定义 257 *****************************************************************************/ 258 259 #define hal_ac_to_q_num(_ac) ( \ 260 ((_ac) == WLAN_WME_AC_VO) ? HAL_TX_QUEUE_VO : \ 261 ((_ac) == WLAN_WME_AC_VI) ? HAL_TX_QUEUE_VI : \ 262 ((_ac) == WLAN_WME_AC_BK) ? HAL_TX_QUEUE_BK : \ 263 ((_ac) == WLAN_WME_AC_BE) ? HAL_TX_QUEUE_BE : \ 264 ((_ac) == WLAN_WME_AC_MGMT) ? HAL_TX_QUEUE_HI : \ 265 ((_ac) == WLAN_WME_AC_PSM) ? HAL_TX_QUEUE_MC : \ 266 HAL_TX_QUEUE_BK) 267 268 #define hal_q_num_to_ac(_q) ( \ 269 ((_q) == HAL_TX_QUEUE_VO) ? WLAN_WME_AC_VO : \ 270 ((_q) == HAL_TX_QUEUE_VI) ? WLAN_WME_AC_VI : \ 271 ((_q) == HAL_TX_QUEUE_BK) ? WLAN_WME_AC_BK : \ 272 ((_q) == HAL_TX_QUEUE_BE) ? WLAN_WME_AC_BE : \ 273 ((_q) == HAL_TX_QUEUE_HI) ? WLAN_WME_AC_MGMT : \ 274 ((_q) == HAL_TX_QUEUE_MC) ? WLAN_WME_AC_PSM : \ 275 WLAN_WME_AC_BE) 276 277 /***************************************************************************** 278 3.3 描述符相关枚举定义 279 *****************************************************************************/ 280 typedef enum { 281 HAL_TX_RATE_RANK_0 = 0, 282 HAL_TX_RATE_RANK_1, 283 HAL_TX_RATE_RANK_2, 284 HAL_TX_RATE_RANK_3, 285 286 HAL_TX_RATE_RANK_BUTT 287 } hal_tx_rate_rank_enum; 288 typedef osal_u8 hal_tx_rate_rank_enum_uint8; 289 290 typedef enum { 291 HAL_RX_NEW = 0x0, 292 HAL_RX_SUCCESS = 0x1, 293 HAL_RX_DUP_DETECTED = 0x2, 294 HAL_RX_FCS_ERROR = 0x3, 295 HAL_RX_KEY_SEARCH_FAILURE = 0x4, 296 HAL_RX_CCMP_MIC_FAILURE = 0x5, 297 HAL_RX_ICV_FAILURE = 0x6, 298 HAL_RX_TKIP_REPLAY_FAILURE = 0x7, 299 HAL_RX_CCMP_REPLAY_FAILURE = 0x8, 300 HAL_RX_TKIP_MIC_FAILURE = 0x9, 301 HAL_RX_BIP_MIC_FAILURE = 0xA, 302 HAL_RX_BIP_REPLAY_FAILURE = 0xB, 303 HAL_RX_MUTI_KEY_SEARCH_FAILURE = 0xC, /* 组播广播 */ 304 HAL_RX_WAPI_MIC_FAILURE = 0xD 305 } hal_rx_status_enum; 306 typedef osal_u8 hal_rx_status_enum_uint8; 307 308 typedef enum { 309 HAL_TX_INVALID = 0, /* 无效 */ 310 HAL_TX_SUCC, /* 成功 */ 311 HAL_TX_FAIL, /* 发送失败(超过重传限制:接收响应帧超时) */ 312 HAL_TX_TIMEOUT, /* lifetime超时(没法送出去) */ 313 HAL_TX_RTS_FAIL, /* RTS 发送失败(超出重传限制:接收cts超时) */ 314 HAL_TX_NOT_COMPRASS_BA, /* 收到的BA是非压缩块确认 */ 315 HAL_TX_TID_MISMATCH, /* 收到的BA中TID与发送时填写在描述符中的TID不一致 */ 316 HAL_TX_KEY_SEARCH_FAIL, /* Key search failed */ 317 HAL_TX_AMPDU_MISMATCH, /* 描述符异常 */ 318 HAL_TX_PENDING, /* 02:没有中断均为pending;03:发送过程中为pending */ 319 HAL_TX_FAIL_RESV, /* resv */ 320 HAL_TX_FAIL_BW_TOO_BIG, /* 带宽超过PHY的最大工作带宽或流数超过最大天线数, 软件回收该帧 */ 321 HAL_TX_FAIL_ABORT, /* 发送失败(因为abort) */ 322 HAL_TX_FAIL_STATEMACHINE_PHY_ERROR, /* MAC发送该帧异常结束(状态机超时、phy提前结束等原因) */ 323 HAL_TX_SOFT_PSM_BACK, /* 软件节能回退 */ 324 HAL_TX_AMPDU_BITMAP_MISMATCH /* 硬件解析bitmap,当前mpdu未被确认 */ 325 } hal_tx_dscr_status_enum; 326 typedef osal_u8 hal_tx_status_enum_uint8; 327 328 /* 接收描述符队列状态 */ 329 typedef enum { 330 HAL_DSCR_QUEUE_INVALID = 0, 331 HAL_DSCR_QUEUE_VALID, 332 HAL_DSCR_QUEUE_SUSPENDED, 333 HAL_DSCR_QUEUE_BUSY, 334 HAL_DSCR_QUEUE_IDLE, 335 HAL_DSCR_QUEUE_STATUS_BUTT 336 } hal_dscr_queue_status_enum; 337 typedef osal_u8 hal_dscr_queue_status_enum_uint8; 338 339 typedef enum { 340 HAL_POW_SET_TYPE_INIT = 0, 341 HAL_POW_SET_TYPE_REFRESH = 1, 342 HAL_POW_SET_TYPE_MAG_LVL_CHANGE = 2, 343 HAL_POW_SET_TYPE_CTL_LVL_CHANGE = 3, 344 345 HAL_POW_GEN_TYPE_BUTT 346 } hal_pow_set_type_enum; 347 typedef osal_u8 hal_pow_set_type_enum_uint8; 348 349 typedef osal_u8 hal_coex_sw_irq_type_enum_uint8; 350 351 /***************************************************************************** 352 3.4 中断相关枚举定义 353 *****************************************************************************/ 354 355 /* 3.4.2 MAC错误中断类型 (枚举值与错误中断状态寄存器的位一一对应!) */ 356 typedef enum { 357 /* 描述符参数配置异常,包括AMPDU长度配置不匹配,AMPDU中MPDU长度超长,sub msdu num错误 */ 358 HAL_MAC_ERROR_PARA_CFG_ERR = 0, 359 HAL_MAC_ERROR_TX_VECTOR_ERR = 1, /* 发送vector中参数错误 */ 360 HAL_MAC_ERROR_BA_ENTRY_NOT_FOUND = 2, /* 未找到BA会话表项异常0 */ 361 HAL_MAC_ERROR_PHY_TRLR_TIME_OUT = 3, /* PHY_RX_TRAILER超时 */ 362 HAL_MAC_ERROR_PHY_RX_FIFO_OVERRUN = 4, /* PHY_RX_FIFO满写异常 */ 363 HAL_MAC_ERROR_TX_DATAFLOW_BREAK = 5, /* 发送帧数据断流 */ 364 HAL_MAC_ERROR_RX_FSM_ST_TIMEOUT = 6, /* RX_FSM状态机超时 */ 365 HAL_MAC_ERROR_TX_FSM_ST_TIMEOUT = 7, /* TX_FSM状态机超时 */ 366 HAL_MAC_ERROR_RX_HANDLER_ST_TIMEOUT = 8, /* RX_HANDLER状态机超时 */ 367 HAL_MAC_ERROR_TX_HANDLER_ST_TIMEOUT = 9, /* TX_HANDLER状态机超时 */ 368 HAL_MAC_ERROR_TX_INTR_FIFO_OVERRUN = 10, /* TX 中断FIFO满写 */ 369 HAL_MAC_ERROR_RX_INTR_FIFO_OVERRUN = 11, /* RX中断 FIFO满写 */ 370 HAL_MAC_ERROR_HIRX_INTR_FIFO_OVERRUN = 12, /* HIRX中断FIFO满写 */ 371 372 /* 接收到普通优先级帧但此时RX BUFFER指针为空 */ 373 HAL_MAC_ERROR_UNEXPECTED_RX_Q_EMPTY = 13, 374 375 /* 接收到高优先级帧但此时HI RX BUFFER指针为空 */ 376 HAL_MAC_ERROR_UNEXPECTED_HIRX_Q_EMPTY = 14, 377 HAL_MAC_ERROR_BUS_RLEN_ERR = 15, /* 总线读请求长度为0异常 */ 378 HAL_MAC_ERROR_BUS_RADDR_ERR = 16, /* 总线读请求地址无效异常 */ 379 HAL_MAC_ERROR_BUS_WLEN_ERR = 17, /* 总线写请求长度为0异常 */ 380 HAL_MAC_ERROR_BUS_WADDR_ERR = 18, /* 总线写请求地址无效异常 */ 381 HAL_MAC_ERROR_TX_ACBK_Q_OVERRUN = 19, /* tx acbk队列fifo满写 */ 382 HAL_MAC_ERROR_TX_ACBE_Q_OVERRUN = 20, /* tx acbe队列fifo满写 */ 383 HAL_MAC_ERROR_TX_ACVI_Q_OVERRUN = 21, /* tx acvi队列fifo满写 */ 384 HAL_MAC_ERROR_TX_ACVO_Q_OVERRUN = 22, /* tx acv0队列fifo满写 */ 385 HAL_MAC_ERROR_TX_HIPRI_Q_OVERRUN = 23, /* tx hipri队列fifo满写 */ 386 HAL_MAC_ERROR_MATRIX_CALC_TIMEOUT = 24, /* matrix计算超时 */ 387 HAL_MAC_ERROR_CCA_TIME_OUT = 25, /* cca超时 */ 388 HAL_MAC_ERROR_TB_INTE_ERR = 26, /* 响应TB */ 389 HAL_MAC_ERROR_BEACON_MISS = 27, /* 连续发送beacon失败 */ 390 HAL_MAC_ERROR_INTR_FIFO_UNEXPECTED_READ = 28, /* interrupt fifo空读异常 */ 391 HAL_MAC_ERROR_UNEXPECTED_RX_DESC_ADDR = 29, /* rx desc地址错误异常 */ 392 393 /* mac没有处理完前一帧,phy又上报了一帧异常 */ 394 HAL_MAC_ERROR_RX_OVERLAP_ERR = 30, 395 HAL_MAC_ERROR_RESERVED_31 = 31, /* 保留位 */ 396 HAL_MAC_ERROR_TX_ACBE_BACKOFF_TIMEOUT = 32, /* 发送BE队列退避超时 */ 397 HAL_MAC_ERROR_TX_ACBK_BACKOFF_TIMEOUT = 33, /* 发送BK队列退避超时 */ 398 HAL_MAC_ERROR_TX_ACVI_BACKOFF_TIMEOUT = 34, /* 发送VI队列退避超时 */ 399 HAL_MAC_ERROR_TX_ACVO_BACKOFF_TIMEOUT = 35, /* 发送VO队列退避超时 */ 400 HAL_MAC_ERROR_TX_HIPRI_BACKOFF_TIMEOUT = 36, /* 发送高优先级队列退避超时 */ 401 402 /* 接收普通队列的小包,但是小包队列指针为空 */ 403 HAL_MAC_ERROR_RX_SMALL_Q_EMPTY = 37, 404 HAL_MAC_ERROR_PARA_CFG_2ERR = 38, /* 发送描述符中AMPDU中MPDU长度过长 */ 405 406 /* 发送描述符中11a,11b,11g发送时,mpdu配置长度超过4095 */ 407 HAL_MAC_ERROR_PARA_CFG_3ERR = 39, 408 HAL_MAC_ERROR_EDCA_ST_TIMEOUT = 40, /* CH_ACC_EDCA_CTRL状态机超时 */ 409 410 /* 发送描述符中11a/b/g发送时,打开了ampdu使能 */ 411 HAL_MAC_ERROR_PARA_CFG_4ERR = 41, 412 413 /* TX广播帧队列fifo满写错误,最后一次写的地址丢弃 */ 414 HAL_MAC_ERROR_TX_BC_Q_OVERRUN = 42, 415 416 /* 接收到本bss的帧,duration很大,nav保护起作用 */ 417 HAL_MAC_ERROR_BSS_NAV_PORT = 43, 418 419 /* 接收到其他obss的帧,duration很大,nav保护起作用 */ 420 HAL_MAC_ERROR_OBSS_NAV_PORT = 44, 421 HAL_MAC_ERROR_BUS_RW_TIMEOUT = 45, /* 读写访问超时 */ 422 HAL_MAC_ERROR_TX_DATA_FIFO_OVERRUN = 46, /* 发送通路fifo存在写溢出 */ 423 HAL_MAC_ERROR_RX_DATA_FIFO_OVERRUN = 47, /* 接收送通路fifo存在写溢出 */ 424 HAL_MAC_ERROR_TXBF_FIFO_OVERRUN = 48, /* TXBF通路FIFO满写异常告警 */ 425 HAL_MAC_ERROR_TYPE_BUTT 426 } hal_mac_error_type_enum; 427 typedef osal_u8 hal_mac_error_type_enum_uint8; 428 429 /***************************************************************************** 430 3.5 复位相关枚举定义 431 *****************************************************************************/ 432 /****3.5.1 复位MAC子模块定义 **********************************************/ 433 typedef enum { 434 HAL_RESET_MAC_ALL = 0, 435 HAL_RESET_MAC_LOGIC, 436 HAL_RESET_MAC_BUTT 437 } hal_reset_mac_submod_enum; 438 typedef osal_u8 hal_reset_mac_submod_enum_uint8; 439 440 typedef enum { 441 HAL_PM_WORK, 442 HAL_PM_DEEPSLEEP, 443 444 HAL_PM_MODE_BUTT 445 } hal_pm_mode_enum; 446 typedef osal_u8 hal_pm_mode_enum_uint8; 447 448 typedef enum { 449 WLAN_PHY_RATE_1M = 0, /* 0000 */ 450 WLAN_PHY_RATE_2M = 1, /* 0001 */ 451 WLAN_PHY_RATE_5HALF_M = 2, /* 0010 */ 452 WLAN_PHY_RATE_11M = 3, /* 0011 */ 453 454 WLAN_PHY_RATE_48M = 8, /* 1000 */ 455 WLAN_PHY_RATE_24M = 9, /* 1001 */ 456 WLAN_PHY_RATE_12M = 10, /* 1010 */ 457 WLAN_PHY_RATE_6M = 11, /* 1011 */ 458 459 WLAN_PHY_RATE_54M = 12, /* 1100 */ 460 WLAN_PHY_RATE_36M = 13, /* 1101 */ 461 WLAN_PHY_RATE_18M = 14, /* 1110 */ 462 WLAN_PHY_RATE_9M = 15, /* 1111 */ 463 464 WLAN_PHY_RATE_BUTT 465 } wlan_phy_rate_enum; 466 467 typedef enum { 468 HAL_VAP_STATE_INIT = 0, 469 HAL_VAP_STATE_CONNECT = 1, /* sta独有 */ 470 HAL_VAP_STATE_UP = 2, /* VAP UP */ 471 HAL_VAP_STATE_PAUSE = 3, /* pause , for ap &sta */ 472 473 HAL_VAP_STATE_BUTT 474 } hal_vap_state_enum; 475 typedef osal_u8 hal_vap_state_enum_uint8; 476 477 /***************************************************************************** 478 3.6 加密相关枚举定义 479 *****************************************************************************/ 480 /****3.6.2 芯片加密算法类型对应芯片中的值 **********************************/ 481 typedef enum { 482 HAL_WEP40 = 0, 483 HAL_TKIP = 1, 484 HAL_CCMP = 2, 485 HAL_NO_ENCRYP = 3, 486 HAL_WEP104 = 4, 487 HAL_BIP = 5, 488 HAL_GCMP = 6, 489 HAL_GCMP_256 = 7, 490 HAL_CCMP_256 = 8, 491 HAL_BIP_256 = 9, 492 HAL_CIPER_PROTOCOL_TYPE_BUTT 493 } hal_cipher_protocol_type_enum; 494 typedef osal_u8 hal_cipher_protocol_type_enum_uint8; 495 496 /****3.6.3 芯片填写加密寄存器CE_LUT_CONFIG AP/STA **************************/ 497 typedef enum { 498 HAL_AUTH_KEY = 0, /* 表明该设备为认证者 */ 499 HAL_SUPP_KEY = 1, /* 表明该设备为申请者 */ 500 501 HAL_KEY_ORIGIN_BUTT, 502 } hal_key_origin_enum; 503 typedef osal_u8 hal_key_origin_enum_uint8; 504 505 typedef enum { 506 HAL_DYN_CALI_PDET_ADJUST_INIT = 0, 507 HAL_DYN_CALI_PDET_ADJUST_ASCEND, /* while real_pdet < expect_pdet */ 508 HAL_DYN_CALI_PDET_ADJUST_DECLINE, /* while real_pdet > expect_pdet */ 509 HAL_DYN_CALI_PDET_ADJUST_VARIED, 510 HAL_DYN_CALI_PDET_ADJUST_BUTT, 511 } hal_dyn_cali_adj_type_enum; 512 typedef osal_u8 hal_dyn_cali_adj_type_enum_uint8; 513 514 /***************************************************************************** 515 STRUCT定义 516 *****************************************************************************/ 517 typedef struct { 518 osal_u32 bss_color_bitmap_h; 519 osal_u32 bss_color_bitmap_l; 520 osal_u32 tsf_l; 521 osal_u32 tsf_h; 522 } mac_color_area_stru; 523 524 typedef struct { 525 osal_u8 mac_rate; /* MAC对应速率 */ 526 osal_u8 phy_rate; /* PHY对应速率 */ 527 osal_u8 mbps; /* 速率 */ 528 osal_u8 auc_resv[1]; 529 } mac_data_rate_stru; 530 531 /* NVRAM 参数结构体 FCC认证 非FCC */ 532 typedef struct { 533 osal_u8 max_txpower; /* 最大发送功率 */ 534 } hal_cfg_custom_nvram_params_stru; 535 536 typedef struct hal_pwr_fit_para_stru { 537 osal_s16 pow_par2; /* 二次项系数 */ 538 osal_s16 pow_par1; /* 一次 */ 539 osal_s16 pow_par0; /* 常数项 */ 540 } hal_pwr_fit_para_stru; 541 542 /* FCC边带功率定制项 */ 543 typedef struct { 544 osal_u8 fcc_txpwr_limit_params_26ru_5g[HAL_NUM_5G_20M_SIDE_BAND]; 545 osal_u8 fcc_txpwr_limit_params_52ru_5g[HAL_NUM_5G_20M_SIDE_BAND]; 546 osal_u8 fcc_txpwr_limit_params_106ru_5g[HAL_NUM_5G_20M_SIDE_BAND]; 547 osal_u8 fcc_txpwr_limit_params_20m_5g[HAL_NUM_5G_20M_SIDE_BAND]; 548 osal_u8 fcc_txpwr_limit_params_40m_5g[HAL_NUM_5G_40M_SIDE_BAND]; 549 osal_u8 fcc_txpwr_limit_params_80m_5g[HAL_NUM_5G_80M_SIDE_BAND]; 550 osal_u8 fcc_txpwr_limit_params_2g[WLAN_2G_SUB_BAND_NUM + WLAN_2G_SUB_BAND_NUM][HAL_CUS_NUM_FCC_2G_PRO]; 551 } hal_cfg_custom_fcc_txpwr_limit_stru; 552 553 typedef struct { 554 osal_s8 delta_cca_ed_high_20th_2g; 555 osal_s8 delta_cca_ed_high_40th_2g; 556 osal_s8 delta_cca_ed_high_20th_5g; 557 osal_s8 delta_cca_ed_high_40th_5g; 558 } hal_cfg_custom_cca_stru; 559 560 typedef struct { 561 oal_bool_enum_uint8 mac_in_one_pkt_mode : 1; 562 oal_bool_enum_uint8 self_cts_success : 1; 563 oal_bool_enum_uint8 null_data_success : 1; 564 oal_bool_enum_uint8 null_data_timeout : 1; 565 osal_u8 resv : 4; 566 } hal_one_packet_status_stru; 567 568 typedef struct { 569 osal_u8 pn_tid; /* tid,0~7, 对rx pn lut有效 */ 570 osal_u8 pn_peer_idx; /* 对端peer索引,0~31 */ 571 osal_u8 pn_key_type; /* 单播管理帧 0x4:组播/广播管理帧 others:保留 */ 572 osal_u8 all_tid; /* 0:仅配置TID,1:所有TID 对rx pn lut有效 */ 573 osal_u32 pn_msb; /* pn值的高32位,写操作时做入参,读操作时做返回值 */ 574 osal_u32 pn_lsb; /* pn值的低32位,写操作时做入参,读操作时做返回值 */ 575 } hal_pn_lut_cfg_stru; 576 577 /***************************************************************************** 578 7.0 寄存器配置结构 579 *****************************************************************************/ 580 struct witp_reg16_cfg { 581 osal_u16 addr; 582 osal_u16 val; 583 }; 584 typedef struct witp_reg16_cfg witp_reg16_cfg_stru; 585 586 /***************************************************************************** 587 7.3 对外部发送提供接口所用数据结构 588 *****************************************************************************/ 589 /***************************************************************************** 590 结构名 : hal_channel_matrix_dsc_stru 591 结构说明: 矩阵信息结构体 592 *****************************************************************************/ 593 typedef struct { 594 /* (第10 23行) */ 595 osal_u8 codebook : 2; 596 osal_u8 grouping : 2; 597 osal_u8 row_num : 4; 598 599 osal_u8 column_num : 4; 600 601 /* 在Tx 描述符中不用填写该字段;发送完成中断后,将有无信道矩阵信息存储在此 */ 602 osal_u8 response_flag : 1; 603 osal_u8 reserve1 : 3; 604 605 osal_u16 channel_matrix_length; /* 信道矩阵的总字节(Byte)数 */ 606 osal_u32 steering_matrix; /* txbf需要使用的矩阵地址,填写发送描述符时候使用 */ 607 } hal_channel_matrix_dsc_stru; 608 609 610 typedef struct { 611 osal_u32 delta_dbb_scaling0 : 10; 612 osal_u32 tpc_ch1_0 : 8; 613 osal_u32 dpd_tpc_lv_ch1_0 : 2; 614 osal_u32 tpc_ch0_0 : 8; 615 osal_u32 dpd_tpc_lv_ch0_0 : 2; 616 osal_u32 cfr_idx0 : 2; 617 618 osal_u32 delta_dbb_scaling1 : 10; 619 osal_u32 tpc_ch1_1 : 8; 620 osal_u32 dpd_tpc_lv_ch1_1 : 2; 621 osal_u32 tpc_ch0_1 : 8; 622 osal_u32 dpd_tpc_lv_ch0_1 : 2; 623 osal_u32 cfr_idx1 : 2; 624 625 osal_u32 delta_dbb_scaling2 : 10; 626 osal_u32 tpc_ch1_2 : 8; 627 osal_u32 dpd_tpc_lv_ch1_2 : 2; 628 osal_u32 tpc_ch0_2 : 8; 629 osal_u32 dpd_tpc_lv_ch0_2 : 2; 630 osal_u32 cfr_idx2 : 2; 631 632 osal_u32 delta_dbb_scaling3 : 10; 633 osal_u32 tpc_ch1_3 : 8; 634 osal_u32 dpd_tpc_lv_ch1_3 : 2; 635 osal_u32 tpc_ch0_3 : 8; 636 osal_u32 dpd_tpc_lv_ch0_3 : 2; 637 osal_u32 cfr_idx3 : 2; 638 }hal_tx_txop_tpc_stru; 639 640 typedef struct { 641 osal_u16 delta_dbb_scaling : 5; 642 osal_u16 tpc_ch0 : 7; 643 osal_u16 dpd_tpc_lv_ch0 : 2; 644 osal_u16 cfr_idx : 2; 645 }hal_tx_dscr_tpc_stru; 646 647 typedef struct { 648 wlan_tx_ack_policy_enum_uint8 ack_policy; /* ACK 策略 */ 649 osal_u8 tid_no; /* 通信标识符 */ 650 osal_u8 qos_enable; /* 是否开启QoS */ 651 osal_u8 nonqos_seq_bypass; /* 非qos数据帧是否bypass */ 652 } hal_wmm_txop_params_stru; 653 654 /* 第12 17行 */ 655 typedef struct { 656 osal_u16 tsf_timestamp; 657 osal_u8 mac_hdr_len; 658 osal_u8 num_sub_msdu; 659 } hal_tx_mpdu_mac_hdr_params_stru; 660 661 typedef struct { 662 osal_u8 ra_lut_index; 663 osal_u8 tx_vap_index; 664 osal_u8 auc_resv[2]; /* 保留2字节对齐 */ 665 } hal_tx_ppdu_addr_index_params_stru; 666 667 typedef struct { 668 osal_u32 msdu_addr0; 669 osal_u16 msdu0_len; 670 osal_u16 msdu1_len; 671 osal_u32 msdu_addr1; 672 osal_u16 msdu2_len; 673 osal_u32 msdu_addr2; 674 osal_u16 msdu3_len; 675 osal_u32 msdu_addr3; 676 } hal_tx_msdu_address_params; 677 678 typedef struct { 679 /* 由安全特性更新 */ 680 wlan_security_txop_params_stru security; /* 第16行 MAC TX MODE 2 */ 681 682 /* groupid和partial_aid */ 683 wlan_groupid_partial_aid_stru groupid_partial_aid; /* 第12和15行部分 */ 684 } hal_tx_txop_feature_stru; 685 /***************************************************************************** 686 结构名 : hal_tx_txop_alg_stru 687 结构说明: DMAC模块TXOP发送控制结构 688 *****************************************************************************/ 689 /* 描述符第15行结构体 */ 690 typedef struct { 691 osal_u8 he_max_pe_fld : 2; /* WLAN_PHY_MAX_PE_FLD_VALUE_BUTT */ 692 osal_u8 uplink_flag : 1; /* wlan_phy_uplink_flag_enum */ 693 osal_u8 lsig_txop : 1; /* L-SIG TXOP的保护 */ 694 osal_u8 pdet_en : 2; 695 osal_u8 rsv1 : 2; 696 osal_u8 rsv2[3]; 697 } hal_tx_phy_mode_one_stru; 698 699 typedef union { 700 osal_u16 val; 701 struct { 702 osal_u16 he_mcs : 4; 703 osal_u16 nss_mode : 2; /* wlan_nss_enum_uint8 */ 704 osal_u16 others : 10; /* 速率无关的后面10位 */ 705 } he_nss_mcs; 706 struct { 707 osal_u16 vht_mcs : 4; 708 osal_u16 nss_mode : 2; 709 osal_u16 others : 10; 710 } vht_nss_mcs; /* 11ac的速率集定义 */ 711 struct { 712 osal_u16 ht_mcs : 6; 713 osal_u16 others : 10; 714 } ht_rate; /* 11n的速率集定义 */ 715 struct { 716 osal_u16 legacy_rate : 4; 717 osal_u16 reserved1 : 2; 718 osal_u16 others : 10; 719 } legacy_rate; /* 11a/b/g的速率集定义 */ 720 struct { 721 osal_u16 rate : 6; /* 上面定义的速率结构体位域 */ 722 osal_u16 freq_bw : 4; /* hal_channel_assemble_enum */ 723 osal_u16 gi_type : 2; /* wlan_phy_he_gi_type_enum/wlan_phy_he_gi_type_enum */ 724 osal_u16 ltf_type : 2; /* wlan_phy_he_ltf_type_enum */ 725 osal_u16 preamble_mode : 1; /* wlan_phy_preamble_type */ 726 osal_u16 he_dcm : 1; /* wlan_phy_dcm_status */ 727 } phy_mode; 728 } nss_rate_union; 729 730 /* word20-23 */ 731 typedef struct { 732 nss_rate_union nss_rate; 733 osal_u8 protocol_mode : 3; /* wlan_phy_protocol_enum */ 734 osal_u8 fec_coding : 1; /* wlan_channel_code_enum */ 735 osal_u8 tx_chain_sel : 2; /* wlan_phy_chain_sel_enum */ 736 osal_u8 txbf_mode : 1; 737 osal_u8 stbc_mode : 1; 738 osal_u8 smoothing : 1; 739 osal_u8 preamble_boost_flag : 1; 740 osal_u8 rts_cts_protect_mode : 2; /* wlan_phy_rts_cts_protect_mode_enum */ 741 osal_u8 tx_count : 3; /* old 传输次数 */ 742 osal_u8 reserved : 1; /* 短保护间隔 */ 743 } hal_tx_ctrl_desc_rate_stru; 744 745 /***************************************************************************** 746 结构名 : hal_rate_pow_code_gain_table_stru 747 结构说明: HAL模块POW Code表结构 748 *****************************************************************************/ 749 typedef struct { 750 osal_u32 tpc_code_level[HAL_POW_LEVEL_NUM]; 751 }hal_rate_pow_code_gain_table_stru; 752 753 /***************************************************************************** 754 结构名 : hal_vap_pow_info_stru 755 结构说明: HAL模块VAP级别功率结构 756 *****************************************************************************/ 757 typedef struct { 758 hal_rate_pow_code_gain_table_stru *rate_pow_table; /* 速率-TPC code&TPC gain对应表 */ 759 osal_u16 reg_pow; 760 oal_bool_enum_uint8 debug_flag; /* rate_pow table调试开关 */ 761 osal_u8 resv; 762 osal_u32 beacon_tpc_code; 763 } hal_vap_pow_info_stru; 764 765 /***************************************************************************** 766 结构名 : hal_tx_ppdu_feature_stru 767 结构说明: DMAC模块PPDU发送控制结构 768 *****************************************************************************/ 769 typedef struct { 770 /* TX VAP index 和 RA LUT Index */ 771 hal_tx_ppdu_addr_index_params_stru ppdu_addr_index; 772 773 osal_u32 ampdu_length; /* 不包括null data的ampdu总长度 */ 774 osal_u16 min_mpdu_length; /* 根据速率查表得到的ampdu最小mpdu的长度 */ 775 osal_u16 tsf; 776 777 osal_u8 ampdu_enable : 1, /* 是否使能AMPDU */ 778 rifs_enable : 1, /* rifs模式下发送时,MPDU链最后是否挂一个BAR帧 */ 779 retry_flag_hw_bypass : 1, 780 duration_hw_bypass : 1, 781 seq_ctl_hw_bypass : 1, 782 timestamp_hw_bypass : 1, 783 addba_ssn_hw_bypass : 1, 784 tx_pn_hw_bypass : 1; 785 osal_u8 mpdu_num; /* ampdu中mpdu的个数 */ 786 osal_u8 tx_ampdu_session_index; 787 osal_u8 ax_bss_color; 788 } hal_tx_ppdu_feature_stru; 789 790 typedef struct { 791 osal_u8 mpdu_enable; 792 osal_u8 mpdu_num; 793 osal_u8 sub_msdu_num; 794 osal_u8 mac_hdr_len; 795 osal_u8 msdu0_len; 796 osal_u8 msdu1_len; 797 osal_u8 msdu2_len; 798 osal_u8 msdu3_len; 799 osal_u32 *next_dscr_addr; 800 osal_u32 *msdu0_addr; 801 osal_u32 *msdu1_addr; 802 osal_u32 *msdu2_addr; 803 osal_u32 *msdu3_addr; 804 osal_u32 *mac_hdr_addr; 805 } hal_tx_addr_info; 806 807 /***************************************************************************** 808 结构名 : hal_security_key_stru 809 结构说明: DMAC模块安全密钥配置结构体 810 *****************************************************************************/ 811 typedef struct { 812 osal_u8 key_id; 813 wlan_cipher_key_type_enum_uint8 key_type; 814 osal_u8 lut_idx; 815 wlan_ciper_protocol_type_enum_uint8 cipher_type; 816 oal_bool_enum_uint8 update_key; 817 wlan_key_origin_enum_uint8 key_origin; 818 osal_u8 reserve[2]; /* 保留2字节对齐 */ 819 osal_u8 *cipher_key; 820 osal_u8 *mic_key; 821 } hal_security_key_stru; 822 823 /***************************************************************************** 824 结构名 : hal_tx_dscr_rate_stru 825 结构说明: DMAC模块tx描述符速率结构体 826 *****************************************************************************/ 827 typedef struct { 828 osal_u8 rate; /* 保留2字节对齐 */ 829 osal_u8 nss : 2; 830 osal_u8 count : 3; 831 osal_u8 resv : 3; 832 osal_u8 auc_resv[2]; 833 } hal_tx_dscr_rate_stru; 834 835 /***************************************************************************** 836 7.4 基准VAP和Device结构 837 *****************************************************************************/ 838 typedef struct { 839 osal_u16 offset_siso_base; /* siso下提前量基准值 */ 840 osal_u16 offset_mimo_base; /* mimo下提前量基准值 */ 841 osal_u8 state; /* 探索状态 */ 842 osal_u8 tbtt_cnt; /* tbtt数量 */ 843 osal_u8 bcn_rx_cnt; /* bcn接收数,会先乘以100用u16定义 */ 844 osal_u8 index; /* 探索步进数 */ 845 osal_u8 best_index; /* 最优探索步进数 */ 846 osal_u8 accum_index; /* 累积探索步进数 */ 847 osal_u8 best_rx_ratio; /* 最优接收率 */ 848 osal_u8 weak_rx_cnt; /* 探索完成后连续接收小于门限数 */ 849 } hal_tbtt_offset_probe_stru; 850 851 #define TBTT_OFFSET_PROBE_STEP_US 30 852 #define TBTT_OFFSET_PROBE_MAX 20 /* 最多增加30乘20共600us */ 853 854 #define TBTT_OFFSET_UP_PROBE_STEP 2 /* up probe */ 855 #define TBTT_OFFSET_DOWN_PROBE_STEP 1 856 #define TBTT_OFFSET_PROBE_ACCETP_DIF 3 857 #define TBTT_OFFSET_PROBE_DONE_RATION 95 858 #define TBTT_OFFSET_PROBE_WEAK_RATION 70 859 #define TBTT_OFFSET_PROBE_RETRY_CNT 5 860 861 #define TBTT_OFFSET_PROBE_CALC_PERIOD 100 /* beacon接收率计算周期 */ 862 863 /* state define */ 864 #define TBTT_OFFSET_PROBE_STATE_INIT 0 865 #define TBTT_OFFSET_PROBE_STATE_START 1 866 #define TBTT_OFFSET_PROBE_STATE_UP_DONE 2 867 #define TBTT_OFFSET_PROBE_STATE_END 3 868 869 typedef struct { 870 osal_u16 inner_tbtt_offset_siso; 871 osal_u16 inner_tbtt_offset_mimo; 872 873 /* 唤醒后收beacon的通道,在hal device状态机awake子状态时生效 */ 874 osal_u8 bcn_rf_chain; 875 #ifdef _PRE_PM_TBTT_OFFSET_PROBE 876 hal_tbtt_offset_probe_stru *offset_probe; 877 #endif 878 osal_u8 _rom[4]; /* 4字节储存rom地址 */ 879 } hal_pm_info_stru; 880 881 typedef struct tag_hal_to_dmac_vap_stru { 882 osal_u8 vap_id : 4; /* VAP ID */ 883 osal_u8 mac_vap_id : 4; /* 保存mac vap id */ 884 wlan_vap_mode_enum_uint8 vap_mode : 4; /* VAP工作模式 */ 885 wlan_p2p_mode_enum_uint8 p2p_mode : 4; /* P2P */ 886 887 hal_vap_state_enum_uint8 hal_vap_state; /* hal vap state状态 */ 888 hal_pm_info_stru pm_info; 889 /* ROM化后资源扩展指针 */ 890 osal_void *_rom; 891 } hal_to_dmac_vap_stru; 892 893 /***************************************************************************** 894 7.5 对外部接收提供接口所用数据结构 895 *****************************************************************************/ 896 #pragma pack(push, 1) 897 typedef struct { 898 /* byte 0 */ 899 osal_s8 rssi_dbm; 900 901 /* byte 1 */ 902 union { 903 struct { 904 osal_u8 he_mcs : 4; 905 osal_u8 nss_mode : 2; /* wlan_nss_enum_uint8 */ 906 osal_u8 protocol_mode : 2; 907 } he_nss_mcs; 908 struct { 909 osal_u8 vht_mcs : 4; 910 osal_u8 nss_mode : 2; 911 osal_u8 protocol_mode : 2; 912 } vht_nss_mcs; /* 11ac的速率集定义 */ 913 struct { 914 osal_u8 ht_mcs : 6; 915 osal_u8 protocol_mode : 2; 916 } ht_rate; /* 11n的速率集定义 */ 917 struct { 918 osal_u8 legacy_rate : 4; 919 osal_u8 reserved1 : 2; 920 osal_u8 protocol_mode : 2; 921 } legacy_rate; /* 11a/b/g的速率集定义 */ 922 } nss_rate; 923 924 /* byte 2-3 */ 925 osal_s8 snr_ant0; /* ant0 SNR */ 926 osal_s8 snr_ant1; /* ant1 SNR */ 927 928 /* byte 4-5 */ 929 osal_s8 ant0_rssi; /* ANT0上报当前帧RSSI */ 930 osal_s8 ant1_rssi; /* ANT1上报当前帧RSSI */ 931 932 /* byte 6-7 */ 933 osal_s16 phase_incr; /* 报文频偏信息 */ 934 } hal_rx_statistic_stru; 935 #pragma pack(pop) 936 937 /* dmac_pkt_captures使用,tx rx均会使用 */ 938 typedef struct { 939 osal_u8 ant_rssi_sw; /* 通过ANT RSSI切换使能。bit0:管理帧切换使能 bit1:数据帧切换使能 */ 940 oal_bool_enum_uint8 log_print; 941 osal_u8 auc_resv[2]; /* 保留2字节对齐 */ 942 943 osal_s16 ant0_rssi_smth; /* 平滑处理后历史RSSI */ 944 osal_s16 ant1_rssi_smth; 945 946 osal_u16 rssi_high_cnt; 947 osal_u16 rssi_high_cnt_th; 948 949 osal_u16 rssi_low_cnt; 950 osal_u16 rssi_low_cnt_th; 951 } hal_rx_ant_rssi_stru; 952 953 typedef struct { 954 oal_bool_enum_uint8 ant_rssi_sw; /* 通过ANT RSSI切换使能 */ 955 oal_bool_enum_uint8 log_print; 956 osal_u8 rssi_th; /* RSSI高门限 */ 957 oal_bool_enum_uint8 reserv[1]; 958 959 osal_s16 ant0_rssi_smth; /* 平滑处理后历史RSSI */ 960 osal_s16 ant1_rssi_smth; 961 } hal_rx_ant_rssi_mgmt_stru; 962 963 /* ant_detect结构体 */ 964 typedef struct { 965 hal_rx_ant_rssi_stru rx_rssi; 966 osal_void *cb; 967 968 osal_u8 tbtt_cnt; /* 当前统计的tbtt中断数 */ 969 osal_u8 tbtt_cnt_th; /* tbtt中断门限值 */ 970 osal_u8 mimo_tbtt_cnt; /* 当前统计的tbtt中断数 */ 971 osal_u8 mimo_tbtt_open_th; /* tbtt中断开启探测门限值 */ 972 973 osal_u8 mimo_tbtt_close_th; /* tbtt中断关闭探测门限值 */ 974 osal_char ori_min_th; 975 osal_char cur_min_th; 976 osal_u8 diff_th; 977 978 osal_u8 miso_hold : 1; /* 是否保持在MISO状态 */ 979 osal_u8 mimo_hold : 1; /* 是否保持在MIMO状态 */ 980 osal_u8 resv0 : 6; 981 osal_u8 resv1[3]; /* 3byte保留字段 */ 982 } hal_rssi_stru; 983 984 /* 裸系统下需要传输给HMAC模块的信息 */ 985 /* hal_rx_ctl_stru结构的修改要考虑mpxx_rx_get_info_dscr函数中的优化 */ 986 /* 最大为8字节 */ 987 /* 1字节对齐 */ 988 #pragma pack(push, 1) 989 struct mac_rx_ctl { 990 /* byte 0 */ 991 osal_u8 vap_id : 5; 992 osal_u8 amsdu_enable : 1; /* 是否为amsdu帧,每个skb标记 */ 993 osal_u8 is_first_buffer : 1; /* 当前skb是否为amsdu的首个skb */ 994 osal_u8 is_fragmented : 1; 995 996 /* byte 1 */ 997 osal_u8 msdu_in_buffer; /* 每个skb包含的msdu数,amsdu用,每帧标记 */ 998 999 /* byte 2 */ 1000 osal_u8 ta_user_idx : 5; 1001 osal_u8 tid : 2; 1002 osal_u8 is_key_frame : 1; 1003 1004 /* byte 3 */ 1005 osal_u8 mac_header_len : 6; /* mac header帧头长度 */ 1006 osal_u8 is_beacon : 1; 1007 osal_u8 is_last_buffer : 1; 1008 /* byte 4-5 */ 1009 osal_u16 frame_len; /* 帧头与帧体的总长度,AMSDU非首帧不填 */ 1010 1011 /* byte 6 */ 1012 osal_u8 mac_vap_id : 4; /* 业务侧vap id号 */ 1013 osal_u8 buff_nums : 4; /* 每个MPDU占用的SKB数,AMSDU帧占多个 */ 1014 /* byte 7 */ 1015 osal_u8 channel_number; /* 接收帧的信道 */ 1016 1017 /* byte 8 ~ byte 13 */ 1018 osal_u16 ftm_frame : 1; /* 是否为FTM帧 */ 1019 osal_u16 stream_id : 3; /* 标记匹配的五元组流id */ 1020 osal_u16 rpt_aver_evm_ant0 : 12; /* evm */ 1021 osal_u32 latency_timestamp_us : 24; /* 时延耗时统计时间戳,单位1us精度 */ 1022 osal_u32 latency_index : 8; /* 时延耗时统计报文标识 */ 1023 1024 /* byte 14 ~ byte 15 */ 1025 osal_u16 da_user_idx; /* 目的地址用户索引 */ 1026 /* byte 16 ~ byte 19 */ 1027 osal_u32 pul_mac_hdr_start_addr; /* 对应的帧的帧头地址,虚拟地址 */ 1028 }; 1029 typedef struct mac_rx_ctl hal_rx_ctl_stru; 1030 #pragma pack(pop) 1031 1032 /* 对DMAC SCAN 模块提供的硬件MAC/PHY信道测量结果结构体 */ 1033 typedef struct { 1034 /* MAC信道统计 */ 1035 osal_u32 ch_stats_time_us; 1036 osal_u32 pri20_free_time_us; 1037 osal_u32 pri40_free_time_us; 1038 osal_u32 pri80_free_time_us; 1039 osal_u32 sec20_free_time_us; 1040 osal_u32 ch_rx_time_us; 1041 osal_u32 ch_tx_time_us; 1042 1043 /* PHY信道测量 */ 1044 osal_u8 phy_ch_estimate_time_ms; 1045 osal_s8 pri20_idle_power; 1046 osal_s8 pri40_idle_power; 1047 osal_s8 pri80_idle_power; 1048 } hal_ch_statics_irq_event_stru; 1049 1050 typedef struct { 1051 osal_u16 statics_period; 1052 osal_u8 meas_period; 1053 osal_u8 rsv; 1054 } hal_chan_measure_stru; 1055 1056 /* 1057 * 裸系统下针对接收,提供读取接口 1058 * frame_len长度 1059 * 802.11帧头长度(mac_hdr_len) 1060 */ 1061 #pragma pack(push, 1) 1062 1063 typedef struct { 1064 /* byte 0 */ 1065 osal_u8 cipher_protocol_type : 4; /* 接收帧加密类型 */ 1066 osal_u8 dscr_status : 4; /* 接收状态 */ 1067 1068 /* byte 1 */ 1069 osal_u8 channel_code : 1; 1070 osal_u8 stbc : 2; 1071 osal_u8 gi : 2; 1072 osal_u8 ampdu : 1; 1073 osal_u8 sounding_mode : 2; 1074 1075 /* byte 2 */ 1076 osal_u8 ext_spatial_streams : 2; 1077 osal_u8 smoothing : 1; 1078 osal_u8 freq_bandwidth_mode : 4; 1079 osal_u8 preabmle : 1; 1080 1081 /* byte 3 */ 1082 osal_u8 rsp_flag : 1; 1083 osal_u8 reserved2 : 1; 1084 osal_u8 he_flag : 1; 1085 osal_u8 last_mpdu_flag : 1; 1086 osal_u8 he_ltf_type : 2; 1087 osal_u8 dcm : 1; 1088 osal_u8 reserved3 : 1; 1089 } hal_rx_status_stru; 1090 #pragma pack(pop) 1091 1092 /***************************************************************************** 1093 7.6 对外部保留的VAP级接口列表,建议外部不做直接调用,而是调用对应的内联函数 1094 *****************************************************************************/ 1095 typedef struct { 1096 hal_to_dmac_vap_stru vap_base; 1097 } hal_vap_stru; 1098 1099 typedef struct { 1100 osal_u8 lut_index; 1101 osal_u8 peer_lut_index; 1102 osal_u8 tid; 1103 osal_u8 mmss; 1104 1105 osal_u16 win_size; 1106 osal_u8 rsv[2]; /* 保留2字节对齐 */ 1107 1108 osal_u16 ssn; 1109 osal_u16 seq_num; 1110 1111 osal_u32 bitmap_lsb; 1112 osal_u32 bitmap_msb; 1113 } hal_ba_para_stru; 1114 1115 typedef struct { 1116 osal_u8 aggr_tx_on; 1117 osal_u8 snd_type; 1118 osal_u8 resv[2]; 1119 } mac_cfg_ampdu_tx_on_param_stru; 1120 1121 /* 2g/5g rf定制化对应得到phy+rf chain能力定制化 */ 1122 typedef struct { 1123 wlan_nss_enum_uint8 nss_num_2g; /* 2G Nss 空间流个数 */ 1124 wlan_nss_enum_uint8 nss_num_5g; /* 5G Nss 空间流个数 */ 1125 1126 /* rf通道1/2/3(双通道),解决方案和芯片都不支持交叉 */ 1127 osal_u8 support_rf_chain_2g; 1128 1129 /* rf通道1/2/3(双通道),解决方案和芯片都不支持交叉 */ 1130 osal_u8 support_rf_chain_5g; 1131 } hal_cfg_rf_custom_cap_info_stru; 1132 1133 typedef struct tag_hal_to_dmac_chip_stru { 1134 } hal_to_dmac_chip_stru; 1135 1136 typedef union { 1137 struct { 1138 osal_u32 rpt_err_para_cfg_err : 1; /* [0] */ 1139 osal_u32 rpt_err_tx_vector_err : 1; /* [1] */ 1140 osal_u32 rpt_err_ba_entry_not_found : 1; /* [2] */ 1141 osal_u32 rpt_err_phy_trlr_time_out : 1; /* [3] */ 1142 osal_u32 rpt_err_phy_rx_fifo_overrun : 1; /* [4] */ 1143 osal_u32 rpt_err_tx_dataflow_break : 1; /* [5] */ 1144 osal_u32 rpt_err_rx_fsm_st_timeout : 1; /* [6] */ 1145 osal_u32 rpt_err_tx_fsm_st_timeout : 1; /* [7] */ 1146 osal_u32 rpt_err_rx_handler_st_timeout : 1; /* [8] */ 1147 osal_u32 rpt_err_tx_handler_st_timeout : 1; /* [9] */ 1148 osal_u32 rpt_err_tx_intr_fifo_overrun : 1; /* [10] */ 1149 osal_u32 rpt_err_rx_intr_fifo_overrun : 1; /* [11] */ 1150 osal_u32 rpt_err_hirx_intr_fifo_overrun : 1; /* [12] */ 1151 osal_u32 rpt_err_unexpected_rx_q_empty : 1; /* [13] */ 1152 osal_u32 rpt_err_unexpected_hirx_q_empty : 1; /* [14] */ 1153 osal_u32 rpt_err_bus_rlen_err : 1; /* [15] */ 1154 osal_u32 rpt_err_bus_raddr_err : 1; /* [16] */ 1155 osal_u32 rpt_err_bus_wlen_err : 1; /* [17] */ 1156 osal_u32 rpt_err_bus_waddr_err : 1; /* [18] */ 1157 osal_u32 rpt_err_tx_acbk_q_overrun : 1; /* [19] */ 1158 osal_u32 rpt_err_tx_acbe_q_overrun : 1; /* [20] */ 1159 osal_u32 rpt_err_tx_acvi_q_overrun : 1; /* [21] */ 1160 osal_u32 rpt_err_tx_acvo_q_overrun : 1; /* [22] */ 1161 osal_u32 rpt_err_tx_hipri_q_overrun : 1; /* [23] */ 1162 osal_u32 rpt_err_matrix_calc_time_out : 1; /* [24] */ 1163 osal_u32 rpt_err_cca_time_out : 1; /* [25] */ 1164 osal_u32 rpt_tb_intr_err : 1; /* [26] */ 1165 osal_u32 rpt_err_beacon_miss : 1; /* [27] */ 1166 osal_u32 rpt_err_intr_fifo_unexpected_read : 1; /* [28] */ 1167 osal_u32 rpt_err_unexpected_rx_desc_addr : 1; /* [29] */ 1168 osal_u32 rpt_err_rx_overlap_err : 1; /* [30] */ 1169 osal_u32 reserved_0 : 1; /* [31] */ 1170 } bits; 1171 1172 osal_u32 u32; 1173 } err_intr_stat; 1174 1175 typedef union { 1176 struct { 1177 osal_u32 rpt_err_tx_acbe_backoff_timeout : 1; /* [0] */ 1178 osal_u32 rpt_err_tx_acbk_backoff_timeout : 1; /* [1] */ 1179 osal_u32 rpt_err_tx_acvi_backoff_timeout : 1; /* [2] */ 1180 osal_u32 rpt_err_tx_acvo_backoff_timeout : 1; /* [3] */ 1181 osal_u32 rpt_err_tx_hipri_backoff_timeout : 1; /* [4] */ 1182 osal_u32 rpt_err_rx_small_q_empty : 1; /* [5] */ 1183 osal_u32 rpt_err_para_cfg_2err : 1; /* [6] */ 1184 osal_u32 rpt_err_para_cfg_3err : 1; /* [7] */ 1185 osal_u32 rpt_err_edca_st_timeout : 1; /* [8] */ 1186 osal_u32 rpt_err_para_cfg_4err : 1; /* [9] */ 1187 osal_u32 rpt_err_tx_bc_q_overrun : 1; /* [10] */ 1188 osal_u32 rpt_err_bss_nav_prot : 1; /* [11] */ 1189 osal_u32 rpt_err_obss_nav_prot : 1; /* [12] */ 1190 osal_u32 rpt_err_bus_rw_timeout : 1; /* [13] */ 1191 osal_u32 rpt_tx_data_fifo_overrun : 1; /* [14] */ 1192 osal_u32 rpt_rx_data_fifo_overrun : 1; /* [15] */ 1193 osal_u32 rpt_txbf_fifo_overrun : 1; /* [16] */ 1194 osal_u32 rpt_err_bus_rd_dly_overrun : 1 ; /* [17] */ 1195 osal_u32 reserved_0 : 14; /* [31..18] */ 1196 } bits; 1197 1198 osal_u32 u32; 1199 } err2_intr_status; 1200 1201 typedef struct { 1202 err_intr_stat error1_val; /* 错误1中断状态 */ 1203 err2_intr_status error2_val; /* 错误2中断状态 */ 1204 } hal_error_state_stru; 1205 1206 /* 会影响目标vdet值的参数集合 */ 1207 typedef union { /* */ 1208 struct { 1209 wlan_channel_band_enum_uint8 freq : 4; 1210 wlan_bw_cap_enum_uint8 band_width : 4; 1211 osal_u8 channel; 1212 osal_u8 pdet_chain : 4; 1213 wlan_mod_enum_uint8 mod : 4; 1214 osal_u8 tx_pow; 1215 } rf_core_para; 1216 osal_u32 para; 1217 } hal_dyn_cali_record_union; 1218 1219 typedef struct { 1220 hal_dyn_cali_record_union record_para; 1221 wlan_phy_protocol_enum_uint8 cur_protocol; 1222 osal_s16 real_pdet; 1223 osal_u8 upc_gain_idx; 1224 osal_u8 rate_idx; 1225 oal_bool_enum_uint8 flag; 1226 osal_u8 rsv[2]; /* 保留2字节对齐 */ 1227 } hal_pdet_info_stru; 1228 1229 typedef struct { 1230 hal_dyn_cali_record_union record_para; 1231 osal_s16 real_pdet; 1232 osal_s16 exp_pdet; 1233 osal_u8 auc_resv[4]; 1234 } hal_dyn_cali_usr_record_stru; 1235 1236 /* 扫描状态,通过判断当前扫描的状态,判断多个扫描请求的处 1237 理策略以及上报扫描结果的策略 */ 1238 typedef enum { 1239 HAL_SCAN_PASUE_TYPE_CHAN_CONFLICT, 1240 HAL_SCAN_PASUE_TYPE_SWITCH_BACK, 1241 1242 HAL_SCAN_PASUE_TYPE_BUTT 1243 } hal_scan_pasue_enum; 1244 typedef osal_u8 hal_scan_pause_type_enum_uint8; 1245 1246 typedef struct { 1247 osal_u8 num_channels_2g; 1248 osal_u8 num_channels_5g; 1249 osal_u8 max_scan_count_per_channel; /* 每个信道的扫描次数 */ 1250 osal_u8 resv; 1251 osal_u8 scan_channel_interval; /* 间隔n个信道,切回工作信道工作一段时间 */ 1252 wlan_scan_mode_enum_uint8 scan_mode; 1253 wlan_channel_band_enum_uint8 scan_band; /* 扫描的频段,支持fast scan使用 */ 1254 osal_u8 auc_resv[1]; 1255 1256 /* 扫描在某一信道停留此时间后,扫描结束, ms,必须配置为MAC负载统计周期的整数倍 */ 1257 osal_u16 scan_time; 1258 osal_u16 work_time_on_home_channel; /* 背景扫描时,返回工作信道工作的时间 */ 1259 } hal_scan_info_stru; 1260 1261 /* 配置相关信息(包含定制化) */ 1262 typedef struct { 1263 osal_u8 nss_num : 3; /* Nss 空间流个数 */ 1264 osal_u8 wlan_bw_max : 4; 1265 osal_u8 ctrl_frm_tx_double_chain_flag : 1; 1266 osal_u8 phy_chain; /* phy通道1/2/3 */ 1267 osal_u8 single_tx_chain; 1268 /* 管理帧采用单通道发送时选择的通道(单通道时要配置和uc_phy_chain一致), 1269 或者用于配置phy接收通道寄存器 */ 1270 osal_u8 rf_chain; /* rf通道1/2/3(双通道),解决方案和芯片都不支持交叉 */ 1271 1272 osal_u8 tx_stbc_is_supp : 1, /* 是否支持最少2x1 STBC发送 */ 1273 rx_stbc_is_supp : 1, /* 是否支持stbc接收,支持2个空间流 */ 1274 su_bfmer_is_supp : 1, /* 是否支持单用户beamformer */ 1275 su_bfmee_is_supp : 1, /* 是否支持单用户beamformee */ 1276 mu_bfmer_is_supp : 1, /* 是否支持多用户beamformer */ 1277 mu_bfmee_is_supp : 1, /* 是否支持多用户beamformee */ 1278 is_supp_11ax : 1, 1279 radar_detector_is_supp : 1; 1280 osal_u8 dpd_is_supp : 1, 1281 sounding_11n : 1, 1282 green_field : 1, 1283 txopps_is_supp : 1, /* 是否使能TXOP PS */ 1284 is_supp_1024qam : 1, /* 支持1024QAM速率 */ 1285 nb_is_supp : 1, 1286 is_supp_txbf_11n : 1, /* 是否支持11n txbf */ 1287 ldpc_is_supp : 1; /* 是否支持ldpc */ 1288 osal_u8 su_bfee_num; 1289 osal_u8 phy2dscr_chain; /* 和uc_phy_chain对应,这里是配置发送描述符 */ 1290 } hal_cfg_cap_info_stru; 1291 1292 /* hal device alg结构体定义 */ 1293 typedef enum { 1294 HAL_ALG_DEVICE_STRU_ID_SCHEDULE, 1295 HAL_ALG_DEVICE_STRU_ID_AUTORATE, 1296 HAL_ALG_DEVICE_STRU_ID_AGGR, 1297 HAL_ALG_DEVICE_STRU_ID_RTS, 1298 HAL_ALG_DEVICE_STRU_ID_SMARTANT, 1299 HAL_ALG_DEVICE_STRU_ID_DBAC, 1300 HAL_ALG_DEVICE_STRU_ID_TXBF, 1301 HAL_ALG_DEVICE_STRU_ID_ANTI_INTF, 1302 HAL_ALG_DEVICE_STRU_ID_MWO_DET, 1303 HAL_ALG_DEVICE_STRU_ID_TPC, // TPC结构体 1304 HAL_ALG_DEVICE_STRU_ID_EDCA_OPT, 1305 HAL_ALG_DEVICE_STRU_ID_CCA_OPT, 1306 HAL_ALG_DEVICE_STRU_ID_INTF_DET, 1307 HAL_ALG_DEVICE_STRU_ID_TEMP_PROTECT, 1308 HAL_ALG_DEVICE_STRU_ID_BUTT 1309 } hal_alg_device_stru_id_enum; 1310 typedef osal_u8 hal_alg_device_stru_id_enum_uint8; 1311 1312 /* 挂在各个hal device上的数据结构 */ 1313 typedef struct { 1314 osal_void *alg_info[HAL_ALG_DEVICE_STRU_ID_BUTT]; 1315 } hal_alg_device_stru; 1316 1317 /* 设备距离、干扰状态等信息 */ 1318 typedef struct { 1319 hal_alg_user_distance_enum_uint8 alg_distance_stat; /* 距离状态 */ 1320 hal_alg_intf_det_mode_enum_uint8 adj_intf_state; /* 邻频干扰状态 */ 1321 oal_bool_enum_uint8 co_intf_state; /* 同频干扰状态 */ 1322 osal_u8 reserv; 1323 } hal_alg_stat_info_stru; 1324 1325 typedef struct { 1326 osal_u8 rate_max_tx_pow_ctrl_table[HAL_POW_RATE_POW_CODE_TABLE_LEN][WLAN_BAND_BUTT]; 1327 osal_u8 rev[2]; /* 保留2字节对齐 */ 1328 } hal_cfg_rate_max_tx_pow_stru; 1329 1330 typedef struct { 1331 osal_s16 as_pow_level_table[HAL_POW_LEVEL_NUM - 1][WLAN_BAND_BUTT]; 1332 } hal_cfg_tpc_lvl_vs_gain_stru; 1333 1334 /* DMAC_VAP发射功率TX功率控制相关的参数结构体 */ 1335 typedef struct { 1336 /* 1) MAX_Power@rate */ 1337 hal_cfg_rate_max_tx_pow_stru *max_tx_pow_per_rate_ctrl; 1338 1339 osal_u8 rsv_0; /* 对齐hal_cfg_rate_max_tx_pow_stru中的h8 */ 1340 osal_u8 tx_power; 1341 /* PAPR=5.5时的功率偏差值 */ 1342 osal_u8 pwr_compens_val_6m; 1343 osal_u8 pwr_compens_val_mcs0; 1344 /* 3) LPF Index@rate */ 1345 osal_u8 *lpf_idx_per_rate_ctrl_2g; 1346 osal_u8 *lpf_idx_per_rate_ctrl_5g; 1347 /* 4) TPC档位 vs Target Gain表 */ 1348 hal_cfg_tpc_lvl_vs_gain_stru *tpc_lvl_vs_gain_ctrl; 1349 hal_rate_pow_code_gain_table_stru *rate_pow_table_2g; 1350 hal_rate_pow_code_gain_table_stru *rate_pow_table_5g; 1351 osal_void *_rom; 1352 } hal_device_tx_pwr_ctrl_stru; 1353 typedef struct { 1354 osal_u16 rpt_obss_pd_tx_num; 1355 osal_u16 rpt_obss_pd_tx_success_num; 1356 osal_u16 rpt_psr_sr_tx_num; 1357 osal_u16 rpt_psr_sr_tx_success_num; 1358 } dmac_sr_sta_vfs_stru; 1359 1360 typedef struct { 1361 osal_u16 rpt_non_srg_62_68_cnt; 1362 osal_u16 rpt_non_srg_68_74_cnt; 1363 osal_u16 rpt_non_srg_74_78_cnt; 1364 osal_u16 rpt_non_srg_78_82_cnt; 1365 } dmac_sr_sta_non_srg_stru; 1366 1367 typedef struct { 1368 osal_u16 rpt_srg_62_68_cnt; 1369 osal_u16 rpt_srg_68_74_cnt; 1370 osal_u16 rpt_srg_74_78_cnt; 1371 osal_u16 rpt_srg_78_82_cnt; 1372 } dmac_sr_sta_srg_stru; 1373 1374 typedef struct { 1375 osal_u32 duration; 1376 osal_u32 interval; 1377 osal_u64 start_tsf; 1378 } twt_reg_param_stru; 1379 1380 #ifdef _PRE_WLAN_FEATURE_WUR_TX 1381 /* WUR周期配置参数 */ 1382 typedef struct { 1383 osal_u32 duration; 1384 osal_u32 interval; 1385 osal_u64 start_tsf; 1386 } wur_reg_param_stru; 1387 1388 /* WUR BEACON帧发送参数 */ 1389 typedef struct { 1390 osal_u16 wur_bcn_period; 1391 osal_u16 rsvd; 1392 osal_u32 pkt_ptr; 1393 osal_u32 pkt_len; 1394 osal_u32 phy_tx_mode; 1395 osal_u32 tx_data_rate; 1396 } wur_bcn_reg_param_stru; 1397 1398 /* WUR WAKE UP帧发送参数 */ 1399 typedef struct { 1400 osal_u16 id : 12, 1401 counter : 4; 1402 osal_u16 group_buffer : 1, 1403 rsvd1 : 15; 1404 } wur_wakeup_reg_param_stru; 1405 #endif 1406 1407 typedef struct { 1408 hal_coex_sw_preempt_mode_stru sw_preempt_mode; 1409 hal_coex_sw_preempt_type_uint8 sw_preempt_type; 1410 hal_coex_sw_preempt_subtype_uint8 sw_preempt_subtype; 1411 hal_fcs_protect_coex_pri_enum_uint8 protect_coex_pri; /* one pkt帧发送优先级 */ 1412 osal_u16 timeout_ms; /* ps超时时间,page扫描190slot 音乐和数传30slot */ 1413 osal_u8 last_acl_status : 1, /* 保存上一次acl状态 */ 1414 ps_stop : 1, /* 特定业务下,不需要开启ps,通知蓝牙不要发送ps中断 */ 1415 ps_pause : 1, /* 特定业务下,需要暂停ps,不影响ps中断处理,防止和wifi特定业务冲突 */ 1416 coex_pri_forbit : 1, /* coex pri控制开关,ldac下需要关闭该功能 */ 1417 resv0 : 4; 1418 osal_u8 resv; 1419 osal_u32 ps_cur_time; /* 用于ps中断上下半部执行时间统计 */ 1420 osal_atomic ps_event_num; /* ps中断event数目 */ 1421 osal_u32 ps_on_cnt; /* DFX统计ps on切换次数 */ 1422 osal_u32 ps_off_cnt; /* DFX统计ps off切换次数 */ 1423 osal_u32 ps_timeout_cnt; /* DFX统计ps超时切换次数 */ 1424 } hal_device_btcoex_sw_preempt_stru; 1425 1426 /* 接收端描述符分配算法进行吞吐量统计的结构体 */ 1427 typedef struct { 1428 /* 记录一个周期(100ms)内接收队列接收帧的数量 */ 1429 osal_u16 rx_event_pkts_sum; 1430 1431 /* 记录一个周期(100ms)内接收队列产生isr info数量 */ 1432 osal_u16 rx_event_cnt; 1433 1434 /* 记录一个周期(100ms)内接收队列挂载的资源个数的峰值 */ 1435 osal_u16 rx_max_dscr_used_cnt; 1436 1437 /* 记录一个周期(100ms)内接收队列接收帧的数量的平滑值 */ 1438 osal_u16 rx_dscr_smooth_event_pkts; 1439 1440 /* 记录一个周期(100ms)内接收队列挂载的资源个数的峰值的平滑值 */ 1441 osal_u16 rx_dscr_smooth_avr_dscr; 1442 1443 /* 记录一个周期(100ms)内接收描述符上报Q_EMPTY数量 */ 1444 osal_u16 rx_dscr_q_empty; 1445 } alg_rx_dscr_ctl_alg_info_stru; 1446 1447 /* 接收端描述符分配算法进行吞吐量统计的结构体 */ 1448 typedef struct { 1449 alg_rx_dscr_ctl_alg_info_stru *rx_dscr_ctl_alg_info; 1450 } alg_rx_dscr_ctl_device_info_stru; 1451 1452 typedef struct { 1453 /* MAC统计 */ 1454 osal_u32 rx_direct_time; 1455 osal_u32 rx_nondir_time; 1456 osal_u32 tx_time; 1457 } hal_ch_mac_statics_stru; 1458 typedef struct { 1459 /* 干扰相关统计 */ 1460 osal_u16 duty_cyc_ratio_20; /* 20M干扰繁忙度 */ 1461 osal_u16 duty_cyc_ratio_40; /* 40M干扰繁忙度 */ 1462 osal_u16 duty_cyc_ratio_80; /* 80M干扰繁忙度 */ 1463 osal_u16 sync_err_ratio; /* 同步错误率 */ 1464 osal_u32 rx_time; /* rx总时间 */ 1465 osal_u32 tx_time; /* tx总时间 */ 1466 osal_u32 free_time; /* 空闲时间 */ 1467 osal_u32 abort_time_us; /* 被打断时间,包括共存和扫描 */ 1468 } hal_ch_intf_statics_stru; 1469 1470 /* coex siso业务管理结构体 */ 1471 typedef struct { 1472 osal_u8 m2s_on_6slot : 1, /* 6slot申请siso */ 1473 ldac_m2s_on : 1, /* ldac申请siso */ 1474 m2s_resv : 6; 1475 } hal_coex_m2s_mode_bitmap_stru; 1476 1477 /* coex mimo业务管理结构体 */ 1478 typedef struct { 1479 osal_u8 s2m_on_6slot : 1, /* sco申请回mimo */ 1480 ldac_s2m_on : 1, /* ldac申请回mimo */ 1481 a2dp_s2m_on : 1, /* a2dp申请回mimo */ 1482 s2m_resv : 5; 1483 } hal_coex_s2m_mode_bitmap_stru; 1484 1485 typedef struct { 1486 osal_s16 vdet_val; 1487 osal_u8 ppa_working; /* 0:PA;1:PPA */ 1488 osal_u8 rsv; 1489 hal_dyn_cali_record_union record_para; 1490 } hal_dyn_cali_pa_ppa_asjust_stru; 1491 1492 #ifdef _PRE_WLAN_FEATURE_FTM 1493 /* HAL模块和DMAC模块共用的FTM TIME RX结构体 */ 1494 typedef struct { 1495 osal_u8 dialog_token; 1496 osal_u8 resv[3]; 1497 osal_u64 t2; 1498 osal_u64 t3; 1499 } hal_wlan_ftm_t2t3_rx_event_stru; 1500 1501 typedef enum { 1502 DMAC_TX_FTM_FRAME = 0, 1503 DMAC_TX_FTM_REQ_FRAME = 1, 1504 DMAC_TX_OTHER_FRAME, 1505 } dmac_tx_ftm_frame_enum; 1506 typedef osal_u8 dmac_tx_ftm_frame_enum_uint8; 1507 1508 typedef struct { 1509 osal_u8 frame_type; 1510 osal_u8 dialog_token_ack; 1511 osal_u8 address[WLAN_MAC_ADDR_LEN]; 1512 osal_u64 t1; 1513 osal_u64 t4; 1514 } dmac_tx_ftm_frame_stru; 1515 #endif 1516 1517 typedef struct { 1518 osal_u8 p2p_noa_status; /* 0: 表示noa 定时器停止,1: 表示noa 定时器正在工作 */ 1519 osal_u8 auc_resv[3]; /* 预留3字节对齐 */ 1520 } hal_p2p_pm_event_stru; 1521 1522 typedef struct { 1523 osal_u8 bw; /* 值0代表20M, 值1代表40M, 值2代表80M, 值3代表160M */ 1524 osal_u8 nss; /* 值0代表单流, 值1代表双流 */ 1525 osal_u8 vap_id; 1526 } hal_to_dmac_he_rom_update_stru; 1527 1528 typedef struct { 1529 osal_u8 lut_index; /* BA会话LUT session index */ 1530 osal_u8 tid; /* tid num */ 1531 osal_u16 seq_no; /* 第一个未确认的MPDU的序列号 */ 1532 osal_u8 win_size; /* Block_Ack会话的buffer size大小 */ 1533 osal_u8 mmss; /* Min AMPDU Start Spacing */ 1534 wlan_protocol_enum_uint8 user_protocol_mode; 1535 wlan_protocol_enum_uint8 sta_protocol_mode; 1536 osal_u8 ba_32bit_flag; 1537 osal_u8 resv[3]; /* 3BYTE保留字段 */ 1538 } machw_tx_ba_params_stru; 1539 1540 typedef struct { 1541 osal_u8 lut_index; 1542 osal_u8 tid; 1543 oal_bool_enum_uint8 qos_flag; 1544 } machw_tx_sequence_stru; 1545 1546 /* 寄存器地址和值配置数据结构 */ 1547 typedef struct { 1548 osal_u32 address; 1549 osal_u32 value; 1550 } hal_reg32_cfg_stru; 1551 1552 typedef struct { 1553 osal_u32 address; 1554 osal_u16 value; 1555 } hal_reg16_cfg_stru; 1556 1557 typedef union { 1558 osal_u64 trig_para_value; 1559 struct { 1560 osal_u32 aid : 12; /* STA的关联ID */ 1561 osal_u32 mac_vap_id : 4; 1562 osal_u32 he_ltf_num : 4; 1563 osal_u32 doppler : 1; 1564 osal_u32 midamble_period : 1; 1565 osal_u32 resv : 10; 1566 osal_u16 psdu_tx_time; /* AP允许TB PPDU发送时常,单位us */ 1567 osal_u16 bw : 2; /* 上行带宽,0:20M,1:40M,2:80M,3:80+80或160M */ 1568 osal_u16 ltf_gi_type : 2; /* AP指定gi */ 1569 osal_u16 ru_type : 4; /* AP指定ru size */ 1570 osal_u16 mcs : 4; /* AP指定mcs */ 1571 osal_u16 nss : 4; /* AP指定nss */ 1572 }basic_trig_para; 1573 } hal_tx_ul_ofdma_para_stru; 1574 1575 typedef struct { 1576 osal_u64 trigger_type : 4, 1577 length : 12, 1578 more_tf : 1, 1579 cs_required : 1, 1580 bw : 2, 1581 gi_and_ltf_type : 2, 1582 mu_mimo_ltf_mode : 1, 1583 num_of_he_ltf_syms_and_midamble_period : 3, 1584 stbc : 1, 1585 ldpc_extra_symbol_segment : 1, 1586 ap_tx_power : 6, 1587 pre_fec_padding_factor : 2, 1588 pe_disambiguity : 1, 1589 spatial_reuse : 16, 1590 doppler : 1, 1591 he_sig_a2_resv : 9, 1592 resv : 1; 1593 } hal_trig_common_info_field_stru; 1594 1595 typedef struct { 1596 osal_u64 aid12 : 12, 1597 ru_ch_offset : 1, /* 对20MHz,40MHz and 80MHz PPDUs,置0;对80+80 MHz and 160MHz PPDUs,置1 */ 1598 ru_allocation : 7, 1599 fec_coding_type : 1, 1600 mcs : 4, 1601 dcm : 1, 1602 ss_allocation : 3, 1603 nss : 3, 1604 target_rssi : 7, 1605 resv : 25; 1606 } hal_trig_user_info_field_stru; 1607 1608 typedef struct { 1609 osal_u8 mu_spacing_factor : 2; 1610 osal_u8 tid_aggr_limit : 3; 1611 osal_u8 res1 : 1; 1612 osal_u8 preferred_ac : 2; 1613 osal_u8 resv[3]; 1614 } hal_trig_user_trig_depend_info_stru; 1615 1616 typedef enum { 1617 HAL_RF_TRX_TYPE_0, /* WF0 */ 1618 HAL_RF_TRX_TYPE_1, /* WF1 */ 1619 HAL_RF_TRX_TYPE_2T2R, /* MIMO双发双收 */ 1620 HAL_RF_TRX_TYPE_1T2R, /* MIMO单发双收 */ 1621 HAL_RF_TRX_TYPE_2T1R, /* MIMO双发单收 */ 1622 HAL_RF_TRX_TYPE_BUTT 1623 } hal_rf_trx_type_enum; /* 不能调整顺序或增加类型,如果需要,要同步修改hh503_rf_set_stb_mode函数 */ 1624 typedef osal_u8 hal_rf_trx_type_enum_uint8; 1625 1626 typedef struct { 1627 osal_u32 lpf_gain : 4; 1628 osal_u32 mod_pga_unit : 6; 1629 osal_u32 mod_gm_unit : 6; 1630 osal_u32 mod_slice_tpc : 2; 1631 osal_u32 pa_unit : 4; 1632 osal_u32 pa_slice_idx : 4; 1633 osal_u32 resv0 : 6; 1634 } hal_pow_phy_tpc_value_stru; 1635 1636 /* 校准维测命令参数结构体 */ 1637 typedef struct { 1638 osal_u8 cali_mode; /* 需查询的校准项idx */ 1639 osal_u8 chnl; /* 物理通道 */ 1640 osal_u8 band; /* 0:2G 1:5G */ 1641 osal_u8 bw; /* 带宽 */ 1642 osal_u16 freq; /* 信道 */ 1643 } hal_cali_info_dump_stru; 1644 1645 #ifdef __cplusplus 1646 #if __cplusplus 1647 } 1648 #endif 1649 #endif 1650 1651 #endif 1652