/****************************************************************************** * * Copyright(c) 2019 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * *****************************************************************************/ #define _HAL_CUSTOM_C_ #include "hal_headers.h" #ifdef CONFIG_PHL_CUSTOM_FEATURE enum rtw_hal_status rtw_hal_custom_cfg_tx_ampdu(void *hal, struct rtw_wifi_role_link_t *rlink, struct rtw_phl_custom_ampdu_cfg *ampdu) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; enum rtw_hal_status hsts = RTW_HAL_STATUS_FAILURE; if (rlink == NULL || ampdu == NULL) return hsts; hsts = rtw_hal_mac_set_hw_ampdu_cfg(hal_info, rlink->hw_band, (u16)ampdu->max_agg_num, (u8)ampdu->max_agg_time_32us); return hsts; } enum rtw_hal_status rtw_hal_get_ampdu_cfg(void *hal, struct rtw_wifi_role_link_t *rlink, struct rtw_phl_custom_ampdu_cfg *cfg) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; enum rtw_hal_status hsts = RTW_HAL_STATUS_FAILURE; struct mac_ax_ampdu_cfg ampdu_cfg = {0}; if (rlink == NULL || cfg == NULL) return hsts; hsts = rtw_hal_mac_get_ampdu_cfg(hal_info->hal_com, rlink->hw_band, &du_cfg); if (hsts == RTW_HAL_STATUS_SUCCESS) { cfg->max_agg_num = ampdu_cfg.max_agg_num; cfg->max_agg_time_32us = ampdu_cfg.max_agg_time_32us; } return hsts; } enum rtw_hal_status rtw_hal_get_edca(void *hal, struct rtw_wifi_role_link_t *rlink, struct rtw_edca_param *edca_param) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; enum rtw_hal_status hal_status; hal_status = rtw_hal_mac_get_edca(hal_info->hal_com, rlink->hw_band, rlink->hw_wmm, edca_param); PHL_INFO("%s\n, ac(%d), param(0x%x)\n, ret(%d)", __FUNCTION__, edca_param->ac, edca_param->param, hal_status); return hal_status; } enum rtw_hal_status rtw_hal_set_usr_edca(void *hal, u32 idx, u32 enable, u32 band, u32 wmm, struct rtw_edca_param *aggr, struct rtw_edca_param *mod) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_mac_set_usr_edca(hal_info, idx, enable, band, wmm, aggr, mod); } enum rtw_hal_status rtw_hal_set_pop_en(void *hal, bool en, enum phl_phy_idx phy_idx) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_set_pop_en(hal_info, en, phy_idx); } bool rtw_hal_query_pop_en(void *hal, enum phl_phy_idx phy_idx) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_query_pop_en(hal_info, phy_idx); } enum rtw_hal_status rtw_hal_set_pkt_detect_thold(void *hal, enum phl_band_idx band_idx, u32 bound) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_set_pkt_detect_thold(hal_info, band_idx, bound); } u8 rtw_hal_query_pkt_detect_thold(void *hal, bool get_en_info, enum phl_phy_idx phy_idx) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_query_pkt_detect_thold(hal_info, get_en_info, phy_idx); } void rtw_hal_set_tx_rate_rty_tbl(void *hal, bool en, u8 *rty_rate_tbl) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; rtw_hal_bb_set_tx_rate_rty_tbl(hal_info, en, rty_rate_tbl); } enum rtw_hal_status rtw_hal_set_spatial_reuse_en(void *hal, bool en) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_set_spatial_reuse_en(hal_info, en); } bool rtw_hal_is_spatial_reuse_en(void *hal) { struct hal_info_t *hal_info = (struct hal_info_t *)hal; return rtw_hal_bb_is_spatial_reuse_en(hal_info); } #endif