Update to 5.8.7.1

This commit is contained in:
Rin Cat
2020-08-02 05:12:24 -04:00
parent 314b662331
commit e3b09b28f7
449 changed files with 106089 additions and 83748 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -20,17 +20,15 @@
#ifdef LOAD_FW_HEADER_FROM_DRIVER
#if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP)))
extern u8 array_mp_8822b_fw_ap[104872];
extern u8 array_mp_8822b_fw_ap[106848];
extern u32 array_length_mp_8822b_fw_ap;
#endif
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE))
extern u8 array_mp_8822b_fw_hybrid[174352];
extern u32 array_length_mp_8822b_fw_hybrid;
extern u8 array_mp_8822b_fw_nic[153424];
extern u8 array_mp_8822b_fw_nic[160504];
extern u32 array_length_mp_8822b_fw_nic;
#ifdef CONFIG_WOWLAN
extern u8 array_mp_8822b_fw_wowlan[85064];
extern u8 array_mp_8822b_fw_wowlan[102944];
extern u32 array_length_mp_8822b_fw_wowlan;
#endif /*CONFIG_WOWLAN*/
#endif

View File

@@ -158,9 +158,7 @@ u32 rtl8822b_read_rf_reg(PADAPTER adapter, enum rf_path path, u32 addr, u32 mask
void rtl8822b_write_rf_reg(PADAPTER adapter, enum rf_path path, u32 addr, u32 mask, u32 val);
void rtl8822b_set_channel_bw(PADAPTER adapter, u8 center_ch, enum channel_width, u8 offset40, u8 offset80);
void rtl8822b_set_tx_power_level(PADAPTER, u8 channel);
void rtl8822b_get_tx_power_level(PADAPTER, s32 *power);
void rtl8822b_set_tx_power_index(PADAPTER adapter, u32 powerindex, enum rf_path rfpath, u8 rate);
u8 rtl8822b_get_tx_power_index(PADAPTER adapter, enum rf_path rfpath, u8 rate, u8 bandwidth, u8 channel, struct txpwr_idx_comp *tic);
void rtl8822b_notch_filter_switch(PADAPTER, bool enable);
#ifdef CONFIG_BEAMFORMING
void rtl8822b_phy_bf_init(PADAPTER);

View File

@@ -1,6 +1,6 @@
/******************************************************************************
*
* Copyright(c) 2015 - 2017 Realtek Corporation.
* Copyright(c) 2015 - 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
@@ -76,21 +76,6 @@ exit:
return ret;
}
static u8 get_ra_vht_en(u32 wirelessMode, u32 bitmap)
{
u8 ret = 0;
if (wirelessMode == WIRELESS_11_24AC) {
if (bitmap & 0xfff00000) /* 2SS */
ret = 3;
else /* 1SS */
ret = 2;
} else if (wirelessMode == WIRELESS_11_5AC)
ret = 1;
return ret;
}
void rtl8822b_req_txrpt_cmd(PADAPTER adapter, u8 macid)
{
u8 h2c[RTW_HALMAC_H2C_MAX_SIZE] = {0};
@@ -129,7 +114,7 @@ void rtl8822b_set_FwPwrMode_cmd(PADAPTER adapter, u8 psmode)
u8 h2c[RTW_HALMAC_H2C_MAX_SIZE] = {0};
u8 PowerState = 0, awake_intvl = 1, rlbm = 0;
u8 allQueueUAPSD = 0;
char *fw_psmode_str = "";
char *fw_psmode_str = "UNSPECIFIED";
#ifdef CONFIG_P2P
struct wifidirect_info *wdinfo = &adapter->wdinfo;
#endif /* CONFIG_P2P */
@@ -219,8 +204,6 @@ void rtl8822b_set_FwPwrMode_cmd(PADAPTER adapter, u8 psmode)
fw_psmode_str = "LPS";
else if (mode == 2)
fw_psmode_str = "WMMPS";
else
fw_psmode_str = "UNSPECIFIED";
RTW_INFO(FUNC_ADPT_FMT": fw ps mode = %s, drv ps mode = %d, rlbm = %d , smart_ps = %d, allQueueUAPSD = %d\n",
FUNC_ADPT_ARG(adapter), fw_psmode_str, psmode, rlbm, smart_ps, allQueueUAPSD);
@@ -354,10 +337,6 @@ void rtl8822b_set_fw_thermal_rpt_cmd(_adapter *adapter, u8 enable, u8 thermal_va
}
#endif
static s32 rtl8822b_set_FwLowPwrLps_cmd(PADAPTER adapter, u8 enable)
{
return _FALSE;
}
#ifdef CONFIG_BT_COEXIST
void rtl8822b_download_BTCoex_AP_mode_rsvd_page(PADAPTER adapter)
@@ -386,11 +365,11 @@ static void c2h_ccx_rpt(PADAPTER adapter, u8 *pdata)
#endif /* CONFIG_XMIT_ACK */
}
static VOID
static void
C2HTxRPTHandler_8822b(
IN PADAPTER Adapter,
IN u8 *CmdBuf,
IN u8 CmdLen
PADAPTER Adapter,
u8 *CmdBuf,
u8 CmdLen
)
{
_irqL irqL;
@@ -433,11 +412,11 @@ C2HTxRPTHandler_8822b(
}
static VOID
static void
C2HSPC_STAT_8822b(
IN PADAPTER Adapter,
IN u8 *CmdBuf,
IN u8 CmdLen
PADAPTER Adapter,
u8 *CmdBuf,
u8 CmdLen
)
{
_irqL irqL;

View File

@@ -32,11 +32,12 @@ void rtl8822b_init_hal_spec(PADAPTER adapter)
hal_spec->macid_num = 128;
/* hal_spec->sec_cam_ent_num follow halmac setting */
hal_spec->sec_cap = SEC_CAP_CHK_BMC;
hal_spec->rfpath_num_2g = 2;
hal_spec->rfpath_num_5g = 2;
hal_spec->txgi_max = 63;
hal_spec->txgi_pdbm = 2;
hal_spec->rf_reg_path_num = 2;
hal_spec->max_tx_cnt = 2;
hal_spec->tx_nss_num = 2;
hal_spec->rx_nss_num = 2;
hal_spec->band_cap = BAND_CAP_2G | BAND_CAP_5G;
@@ -44,12 +45,19 @@ void rtl8822b_init_hal_spec(PADAPTER adapter)
hal_spec->port_num = 5;
hal_spec->proto_cap = PROTO_CAP_11B | PROTO_CAP_11G | PROTO_CAP_11N | PROTO_CAP_11AC;
hal_spec->txgi_max = 63;
hal_spec->txgi_pdbm = 2;
hal_spec->wl_func = 0
| WL_FUNC_P2P
| WL_FUNC_MIRACAST
| WL_FUNC_TDLS
;
#if CONFIG_TX_AC_LIFETIME
hal_spec->tx_aclt_unit_factor = 8;
#endif
hal_spec->rx_tsf_filter = 1;
hal_spec->pg_txpwr_saddr = 0x10;
@@ -230,11 +238,6 @@ void rtl8822b_init_misc(PADAPTER adapter)
}
}
/* Modify to make sure first time change channel(band) would be done properly */
hal->current_channel = 0;
hal->current_channel_bw = CHANNEL_WIDTH_MAX;
hal->current_band_type = BAND_MAX;
/* initial security setting */
invalidate_cam_all(adapter);

View File

@@ -20,7 +20,7 @@
#include <rtw_sreset.h>
#endif /* DBG_CONFIG_ERROR_DETECT */
#include <hal_data.h> /* PHAL_DATA_TYPE, GET_HAL_DATA() */
#include <hal_com.h> /* rtw_hal_config_rftype(), dump_chip_info() and etc. */
#include <hal_com.h> /* dump_chip_info() and etc. */
#include "../hal_halmac.h" /* GET_RX_DESC_XXX_8822B() */
#include "rtl8822b.h"
#include "rtl8822b_hal.h"
@@ -121,6 +121,7 @@ exit:
return addr;
}
#ifdef CONFIG_CLIENT_PORT_CFG
static void hw_bcn_ctrl_set(_adapter *adapter, u8 hw_port, u8 bcn_ctl_val)
{
u32 bcn_ctl_addr = 0;
@@ -134,6 +135,7 @@ static void hw_bcn_ctrl_set(_adapter *adapter, u8 hw_port, u8 bcn_ctl_val)
bcn_ctl_addr = port_cfg[hw_port].bcn_ctl;
rtw_write8(adapter, bcn_ctl_addr, bcn_ctl_val);
}
#endif
static void hw_bcn_ctrl_add(_adapter *adapter, u8 hw_port, u8 bcn_ctl_val)
{
@@ -195,8 +197,6 @@ static void read_chip_version(PADAPTER adapter)
}
hal->version_id.RFType = ((value32 & BIT_RF_TYPE_ID_8822B) ? RF_TYPE_2T2R : RF_TYPE_1T1R);
if (adapter->registrypriv.special_rf_path == 1)
hal->version_id.RFType = RF_TYPE_1T1R; /* RF_1T1R; */
hal->RegulatorMode = ((value32 & BIT_SPSLDO_SEL_8822B) ? RT_LDO_REGULATOR : RT_SWITCHING_REGULATOR);
@@ -210,8 +210,6 @@ static void read_chip_version(PADAPTER adapter)
hal->MultiFunc |= ((value32 & BIT_BT_FUNC_EN_8822B) ? RT_MULTI_FUNC_BT : 0);
hal->PolarityCtl = ((value32 & BIT_WL_HWPDN_SL_8822B) ? RT_POLARITY_HIGH_ACT : RT_POLARITY_LOW_ACT);
rtw_hal_config_rftype(adapter);
dump_chip_info(hal->version_id);
}
@@ -251,10 +249,8 @@ static void Hal_EfuseParseEEPROMVer(PADAPTER adapter, u8 *map, u8 mapvalid)
static void Hal_EfuseParseTxPowerInfo(PADAPTER adapter, u8 *map, u8 mapvalid)
{
PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter);
TxPowerInfo24G tbl2G4;
TxPowerInfo5G tbl5g;
hal_load_txpwr_info(adapter, &tbl2G4, &tbl5g, map);
hal->txpwr_pg_mode = TXPWR_PG_WITH_PWR_IDX;
if ((_TRUE == mapvalid) && (map[EEPROM_RF_BOARD_OPTION_8822B] != 0xFF))
hal->EEPROMRegulatory = map[EEPROM_RF_BOARD_OPTION_8822B] & 0x7; /* bit0~2 */
@@ -306,7 +302,6 @@ static void Hal_EfuseParseBTCoexistInfo(PADAPTER adapter, u8 *map, u8 mapvalid)
hal->ant_path = RF_PATH_A;
}
exit:
RTW_INFO("EEPROM %s BT-coex, ant_num=%d\n",
hal->EEPROMBluetoothCoexist == _TRUE ? "Enable" : "Disable",
hal->EEPROMBluetoothAntNum == Ant_x2 ? 2 : 1);
@@ -320,7 +315,6 @@ static void Hal_EfuseParseChnlPlan(PADAPTER adapter, u8 *map, u8 autoloadfail)
map ? map[EEPROM_ChannelPlan_8822B] : 0xFF,
adapter->registrypriv.alpha2,
adapter->registrypriv.channel_plan,
RTW_CHPLAN_REALTEK_DEFINE,
autoloadfail
);
}
@@ -684,7 +678,6 @@ u8 rtl8822b_read_efuse(PADAPTER adapter)
/* set coex. ant info once efuse parsing is done */
rtw_btcoex_set_ant_info(adapter);
#ifdef CONFIG_RTW_MAC_HIDDEN_RPT
hal_read_mac_hidden_rpt(adapter);
{
struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter);
@@ -695,7 +688,7 @@ u8 rtl8822b_read_efuse(PADAPTER adapter)
rtw_btcoex_wifionly_AntInfoSetting(adapter);
}
}
#endif
rtw_phydm_read_efuse(adapter);
ret = _SUCCESS;
@@ -900,7 +893,7 @@ static void xmit_status_check(PADAPTER p)
return;
}
}
#ifdef CONFIG_USB_HCI
static void check_rx_count(PADAPTER p)
{
PHAL_DATA_TYPE hal = GET_HAL_DATA(p);
@@ -933,7 +926,7 @@ exit:
rtw_hal_sreset_reset(p);
}
}
#endif/*#ifdef CONFIG_USB_HCI*/
static void linked_status_check(PADAPTER p)
{
PHAL_DATA_TYPE hal = GET_HAL_DATA(p);
@@ -1305,75 +1298,6 @@ static void hw_var_set_opmode(PADAPTER adapter, u8 mode)
#endif
}
static void hw_var_set_basic_rate(PADAPTER adapter, u8 *ratetbl)
{
#define RATE_1M BIT(0)
#define RATE_2M BIT(1)
#define RATE_5_5M BIT(2)
#define RATE_11M BIT(3)
#define RATE_6M BIT(4)
#define RATE_9M BIT(5)
#define RATE_12M BIT(6)
#define RATE_18M BIT(7)
#define RATE_24M BIT(8)
#define RATE_36M BIT(9)
#define RATE_48M BIT(10)
#define RATE_54M BIT(11)
#define RATE_MCS0 BIT(12)
#define RATE_MCS1 BIT(13)
#define RATE_MCS2 BIT(14)
#define RATE_MCS3 BIT(15)
#define RATE_MCS4 BIT(16)
#define RATE_MCS5 BIT(17)
#define RATE_MCS6 BIT(18)
#define RATE_MCS7 BIT(19)
#define RATES_CCK (RATE_11M | RATE_5_5M | RATE_2M | RATE_1M)
#define RATES_OFDM (RATE_54M | RATE_48M | RATE_36M | RATE_24M | RATE_18M | RATE_12M | RATE_9M | RATE_6M)
struct mlme_ext_info *mlmext_info = &adapter->mlmeextpriv.mlmext_info;
PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter);
u16 input_b = 0, masked = 0, ioted = 0, BrateCfg = 0;
u16 rrsr_2g_force_mask = RATES_CCK;
u16 rrsr_2g_allow_mask = RATE_24M | RATE_12M | RATE_6M | RATES_CCK;
u16 rrsr_5g_force_mask = RATE_6M;
u16 rrsr_5g_allow_mask = RATES_OFDM;
u32 val32;
HalSetBrateCfg(adapter, ratetbl, &BrateCfg);
input_b = BrateCfg;
/* apply force and allow mask */
if (hal->current_band_type == BAND_ON_2_4G) {
BrateCfg |= rrsr_2g_force_mask;
BrateCfg &= rrsr_2g_allow_mask;
} else {
BrateCfg |= rrsr_5g_force_mask;
BrateCfg &= rrsr_5g_allow_mask;
}
masked = BrateCfg;
/* IOT consideration */
if (mlmext_info->assoc_AP_vendor == HT_IOT_PEER_CISCO) {
/* if peer is cisco and didn't use ofdm rate, we enable 6M ack */
if ((BrateCfg & (RATE_24M | RATE_12M | RATE_6M)) == 0)
BrateCfg |= RATE_6M;
}
ioted = BrateCfg;
hal->BasicRateSet = BrateCfg;
RTW_INFO("[HW_VAR_BASIC_RATE] %#x->%#x->%#x\n", input_b, masked, ioted);
/* Set RRSR rate table. */
val32 = rtw_read32(adapter, REG_RRSR_8822B);
val32 &= ~(BIT_MASK_RRSC_BITMAP << BIT_SHIFT_RRSC_BITMAP);
val32 |= BIT_RRSC_BITMAP(BrateCfg);
val32 = rtw_write32(adapter, REG_RRSR_8822B, val32);
}
static void hw_var_hw_port_cfg(_adapter *adapter, u8 enable)
{
if (enable)
@@ -1540,9 +1464,6 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable)
rtw_hal_rcr_set_chk_bssid(adapter, MLME_SCAN_ENTER);
/* Save orignal RRSR setting. */
hal->RegRRSR = rtw_read16(adapter, REG_RRSR_8822B);
if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter))
StopTxBeacon(adapter);
} else {
@@ -1557,9 +1478,6 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable)
rtw_hal_rcr_set_chk_bssid(adapter, MLME_SCAN_DONE);
/* Restore orignal RRSR setting. */
rtw_write16(adapter, REG_RRSR_8822B, hal->RegRRSR);
if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) {
ResumeTxBeacon(adapter);
rtw_mi_tx_beacon_hdl(adapter);
@@ -1567,21 +1485,6 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable)
}
}
static void clear_macid_drop(struct _ADAPTER *a)
{
u16 offset;
u32 drop;
u8 i;
for (i = 0; i < 4; i++) {
offset = REG_MACID_DROP0_8822B + (i * 4);
drop = rtw_read32(a, offset);
if (drop)
rtw_write32(a, offset, 0);
}
}
static void hw_var_set_mlme_join(PADAPTER adapter, u8 type)
{
u8 val8;
@@ -1696,10 +1599,6 @@ static void hw_var_set_mlme_join(PADAPTER adapter, u8 type)
val16 = BIT_LRL_8822B(RetryLimit) | BIT_SRL_8822B(RetryLimit);
rtw_write16(adapter, REG_RETRY_LIMIT_8822B, val16);
#endif /* !CONFIG_CONCURRENT_MODE */
if (type == 0)
/* Clear macid drop to avoid lost data frame */
clear_macid_drop(adapter);
}
static void hw_var_set_acm_ctrl(PADAPTER adapter, u8 ctrl)
@@ -1760,29 +1659,6 @@ static void hw_var_set_bcn_valid(PADAPTER adapter)
rtw_write8(adapter, REG_FIFOPAGE_CTRL_2_8822B + 1, val8);
}
static void hw_var_set_cam_empty_entry(PADAPTER adapter, u8 ucIndex)
{
u8 i;
u32 ulCommand = 0;
u32 ulContent = 0;
u32 ulEncAlgo = CAM_AES;
for (i = 0; i < CAM_CONTENT_COUNT; i++) {
/* filled id in CAM config 2 byte */
if (i == 0)
ulContent |= (ucIndex & 0x03) | ((u16)(ulEncAlgo) << 2);
else
ulContent = 0;
/* polling bit, and No Write enable, and address */
ulCommand = CAM_CONTENT_COUNT * ucIndex + i;
ulCommand |= BIT_SECCAM_POLLING_8822B | BIT_SECCAM_WE_8822B;
/* write content 0 is equall to mark invalid */
rtw_write32(adapter, REG_CAMWRITE_8822B, ulContent);
rtw_write32(adapter, REG_CAMCMD_8822B, ulCommand);
}
}
static void hw_var_set_ack_preamble(PADAPTER adapter, u8 bShortPreamble)
{
u8 val8 = 0;
@@ -2065,7 +1941,7 @@ u8 rtl8822b_sethwreg(PADAPTER adapter, u8 variable, u8 *val)
break;
*/
case HW_VAR_BASIC_RATE:
hw_var_set_basic_rate(adapter, val);
rtw_var_set_basic_rate(adapter, val);
break;
case HW_VAR_TXPAUSE:
@@ -2096,12 +1972,6 @@ u8 rtl8822b_sethwreg(PADAPTER adapter, u8 variable, u8 *val)
case HW_VAR_MLME_JOIN:
hw_var_set_mlme_join(adapter, *val);
#ifdef CONFIG_BT_COEXIST
if (hal->EEPROMBluetoothCoexist)
rtw_btcoex_ConnectNotify(adapter, *val ? _FALSE : _TRUE);
else
#endif /* CONFIG_BT_COEXIST */
rtw_btcoex_wifionly_connect_notify(adapter);
break;
case HW_VAR_RCR:
@@ -2141,13 +2011,6 @@ u8 rtl8822b_sethwreg(PADAPTER adapter, u8 variable, u8 *val)
case HW_VAR_BCN_VALID:
hw_var_set_bcn_valid(adapter);
break;
/*
case HW_VAR_RF_TYPE:
break;
*/
case HW_VAR_CAM_EMPTY_ENTRY:
hw_var_set_cam_empty_entry(adapter, *val);
break;
case HW_VAR_CAM_INVALID_ALL:
val32 = BIT_SECCAM_POLLING_8822B | BIT_SECCAM_CLR_8822B;
@@ -2707,9 +2570,7 @@ void rtl8822b_gethwreg(PADAPTER adapter, u8 variable, u8 *val)
*val = hw_var_get_bcn_valid(adapter);
break;
/*
case HW_VAR_RF_TYPE:
case HW_VAR_FREECNT:
case HW_VAR_CAM_EMPTY_ENTRY:
case HW_VAR_CAM_INVALID_ALL:
*/
case HW_VAR_AC_PARAM_VO:
@@ -3033,18 +2894,6 @@ u8 rtl8822b_gethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE variable, void *pval
*(u8 *)pval = _TRUE;
break;
/* support 1T STBC under 2TX */
case HAL_DEF_TX_STBC:
#ifdef CONFIG_ALPHA_SMART_ANTENNA
*(u8 *)pval = 0;
#else
if (hal->rf_type == RF_1T2R || hal->rf_type == RF_1T1R)
*(u8 *)pval = 0;
else
*(u8 *)pval = 1;
#endif
break;
/* support 1RX for STBC */
case HAL_DEF_RX_STBC:
*(u8 *)pval = 1;
@@ -3059,18 +2908,8 @@ u8 rtl8822b_gethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE variable, void *pval
break;
case HAL_DEF_BEAMFORMER_CAP:
val8 = 0;
rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, &val8);
switch (val8) {
case RF_1T1R:
case RF_1T2R:
*(u8 *)pval = 0;
break;
default:
case RF_2T2R:
*(u8 *)pval = 1;
break;
}
val8 = GET_HAL_TX_NSS(adapter);
*(u8 *)pval = (val8 - 1);
break;
case HAL_DEF_BEAMFORMEE_CAP:
@@ -3520,6 +3359,9 @@ static void fill_default_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf)
drv_userate = 1;
}
#endif
#ifdef CONFIG_SUPPORT_DYNAMIC_TXPWR
rtw_phydm_set_dyntxpwr(adapter, pbuf, pattrib->mac_id);
#endif
if ((pattrib->ether_type != 0x888e) &&
(pattrib->ether_type != 0x0806) &&
@@ -3692,13 +3534,13 @@ static void fill_default_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf)
SET_TX_DESC_PKT_OFFSET_8822B(pbuf, pkt_offset);
SET_TX_DESC_OFFSET_8822B(pbuf, offset);
#ifdef CONFIG_TX_CSUM_OFFLOAD
#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX
if (pattrib->hw_csum == 1) {
int offset = 48 + pkt_offset*8 + 8;
SET_TX_DESC_OFFSET_8822B(pbuf, offset);
SET_TX_DESC_CHK_EN_8822B(pbuf, 1);
SET_TX_DESC_WHEADER_LEN_8822B(pbuf, (pattrib->hdrlen + pattrib->iv_len)>>1);
SET_TX_DESC_WHEADER_LEN_8822B(pbuf, (pattrib->hdrlen + pattrib->iv_len + XATTRIB_GET_MCTRL_LEN(pattrib))>>1);
}
#endif
}
@@ -4014,10 +3856,8 @@ void rtl8822b_set_hal_ops(PADAPTER adapter)
ops->set_chnl_bw_handler = rtl8822b_set_channel_bw;
ops->set_tx_power_level_handler = rtl8822b_set_tx_power_level;
ops->get_tx_power_level_handler = rtl8822b_get_tx_power_level;
ops->set_tx_power_index_handler = rtl8822b_set_tx_power_index;
ops->get_tx_power_index_handler = rtl8822b_get_tx_power_index;
ops->get_tx_power_index_handler = hal_com_get_txpwr_idx;
ops->hal_dm_watchdog = rtl8822b_phy_haldm_watchdog;

View File

@@ -173,7 +173,11 @@ static u8 init_bb_reg(PADAPTER adapter)
*/
ret = _init_bb_reg(adapter);
hal_set_crystal_cap(adapter, hal->crystal_cap);
if (rtw_phydm_set_crystal_cap(adapter, hal->crystal_cap) == _FALSE) {
RTW_ERR("Init crystal_cap failed\n");
rtw_warn_on(1);
ret = _FALSE;
}
return ret;
}
@@ -226,7 +230,9 @@ static u8 _init_rf_reg(PADAPTER adapter)
status = odm_config_rf_with_header_file(&hal->odmpriv, CONFIG_RF_RADIO, phydm_path);
if (HAL_STATUS_SUCCESS != status)
goto exit;
#if 0 /* Remove because coverity check fail */
ret = _TRUE;
#endif
}
}
@@ -274,9 +280,6 @@ u8 rtl8822b_phy_init(PADAPTER adapter)
{
struct dvobj_priv *d;
struct dm_struct *phydm;
enum bb_path txpath = BB_PATH_A | BB_PATH_B;
enum bb_path rxpath = BB_PATH_A | BB_PATH_B;
BOOLEAN tx2path;
int err;
u8 ok = _TRUE;
BOOLEAN ret;
@@ -306,19 +309,9 @@ u8 rtl8822b_phy_init(PADAPTER adapter)
if (FALSE == ret)
return _FALSE;
rtw_hal_get_rf_path(d, NULL, &txpath, &rxpath);
tx2path = FALSE;
ret = config_phydm_trx_mode_8822b(phydm, txpath, rxpath, tx2path);
if (FALSE == ret)
return _FALSE;
return _TRUE;
}
static void dm_CheckProtection(PADAPTER adapter)
{
}
#ifdef CONFIG_SUPPORT_HW_WPS_PBC
static void dm_CheckPbcGPIO(PADAPTER adapter)
{
@@ -451,7 +444,7 @@ static void init_phydm_cominfo(PADAPTER adapter)
else if (IS_CHIP_VENDOR_SMIC(hal->version_id))
fab_ver = ODM_UMC + 1;
else
RTW_INFO("%s: unknown fab_ver=%d !!\n",
RTW_INFO("%s: unknown Fv=%d !!\n",
__FUNCTION__, GET_CVID_MANUFACTUER(hal->version_id));
if (IS_A_CUT(hal->version_id))
@@ -473,10 +466,10 @@ static void init_phydm_cominfo(PADAPTER adapter)
else if (IS_K_CUT(hal->version_id))
cut_ver = ODM_CUT_K;
else
RTW_INFO("%s: unknown cut_ver=%d !!\n",
RTW_INFO("%s: unknown Cv=%d !!\n",
__FUNCTION__, GET_CVID_CUT_VERSION(hal->version_id));
RTW_INFO("%s: fab_ver=%d cut_ver=%d\n", __FUNCTION__, fab_ver, cut_ver);
RTW_INFO("%s: Fv=%d Cv=%d\n", __FUNCTION__, fab_ver, cut_ver);
odm_cmn_info_init(p_dm_odm, ODM_CMNINFO_FAB_VER, fab_ver);
odm_cmn_info_init(p_dm_odm, ODM_CMNINFO_CUT_VER, cut_ver);
@@ -564,15 +557,14 @@ void rtl8822b_phy_haldm_watchdog(PADAPTER adapter)
/*
* Dynamically switch RTS/CTS protection.
*/
dm_CheckProtection(adapter);
}
#ifdef CONFIG_DISABLE_ODM
goto skip_dm;
#endif
#ifdef CONFIG_LPS
if (pwrpriv->bLeisurePs && bFwCurrentInPSMode && pwrpriv->pwr_mode != PS_MODE_ACTIVE) {
if (pwrpriv->bLeisurePs && bFwCurrentInPSMode && pwrpriv->pwr_mode != PS_MODE_ACTIVE
#ifdef CONFIG_WMMPS_STA
&& !rtw_is_wmmps_mode(adapter)
#endif /* CONFIG_WMMPS_STA */
) {
for (i = 0; i < dvobj->iface_nums; i++) {
iface = dvobj->padapters[i];
@@ -582,18 +574,10 @@ void rtl8822b_phy_haldm_watchdog(PADAPTER adapter)
lps_changed = _TRUE;
in_lps = _TRUE;
LPS_Leave(current_lps_iface, "LPS_CTRL_PHYDM");
LPS_Leave(current_lps_iface, LPS_CTRL_PHYDM);
}
#endif
rtw_phydm_watchdog(adapter, in_lps);
#ifdef CONFIG_LPS
if (lps_changed)
LPS_Enter(current_lps_iface, "LPS_CTRL_PHYDM");
#endif
#ifdef CONFIG_BEAMFORMING
#ifdef RTW_BEAMFORMING_VERSION_2
if (check_fwstate(&adapter->mlmepriv, WIFI_STATION_STATE) &&
@@ -602,7 +586,20 @@ void rtl8822b_phy_haldm_watchdog(PADAPTER adapter)
#endif
#endif
#ifdef CONFIG_DISABLE_ODM
goto skip_dm;
#endif
rtw_phydm_watchdog(adapter, in_lps);
skip_dm:
#ifdef CONFIG_LPS
if (lps_changed)
LPS_Enter(current_lps_iface, LPS_CTRL_PHYDM);
#endif
/*
* Check GPIO to determine current RF on/off and Pbc status.
* Check Hardware Radio ON/OFF or not
@@ -733,10 +730,6 @@ void rtl8822b_set_tx_power_level(PADAPTER adapter, u8 channel)
}
}
void rtl8822b_get_tx_power_level(PADAPTER adapter, s32 *power)
{
}
/*
* Parameters:
* padatper
@@ -746,87 +739,47 @@ void rtl8822b_get_tx_power_level(PADAPTER adapter, s32 *power)
*/
void rtl8822b_set_tx_power_index(PADAPTER adapter, u32 powerindex, enum rf_path rfpath, u8 rate)
{
HAL_DATA_TYPE *hal = GET_HAL_DATA(adapter);
struct dm_struct *phydm = adapter_to_phydm(adapter);
u8 shift = 0;
static u32 index = 0;
boolean write_ret;
if (!IS_1T_RATE(rate) && !IS_2T_RATE(rate)) {
RTW_ERR(FUNC_ADPT_FMT" invalid rate(%s)\n", FUNC_ADPT_ARG(adapter), MGN_RATE_STR(rate));
rtw_warn_on(1);
goto exit;
}
rate = PHY_GetRateIndexOfTxPowerByRate(rate);
rate = MRateToHwRate(rate);
/*
* For 8822B, phydm api use 4 bytes txagc value
* driver must combine every four 1 byte to one 4 byte and send to phydm api
*/
shift = rate % 4;
index |= ((powerindex & 0xff) << (shift * 8));
hal->txagc_set_buf |= ((powerindex & 0xff) << (shift * 8));
if (shift == 3) {
rate = rate - 3;
if (shift != 3)
goto exit;
if (!config_phydm_write_txagc_8822b(phydm, index, rfpath, rate)) {
RTW_INFO("%s(index:%d, rfpath:%d, rate:0x%02x, disable api:%d) fail\n",
__FUNCTION__, index, rfpath, rate, phydm->is_disable_phy_api);
rate = rate & 0xFC;
write_ret = config_phydm_write_txagc_8822b(phydm, hal->txagc_set_buf, rfpath, rate);
rtw_warn_on(1);
}
index = 0;
}
}
if (write_ret == true && !DBG_TX_POWER_IDX)
goto clear_buf;
RTW_INFO(FUNC_ADPT_FMT" (index:0x%08x, %c, rate:%s(0x%02x), disable api:%d) %s\n"
, FUNC_ADPT_ARG(adapter), hal->txagc_set_buf, rf_path_char(rfpath)
, HDATA_RATE(rate), rate, phydm->is_disable_phy_api
, write_ret == true ? "OK" : "FAIL");
/*
* Parameters:
* padatper
* rfpath Antenna(RF) path, type "enum rf_path"
* rate data rate, type "enum MGN_RATE"
* bandwidth Bandwidth, type "enum _CHANNEL_WIDTH"
* channel Channel number
*
* Rteurn:
* tx_power power index for rate
*/
u8 rtl8822b_get_tx_power_index(PADAPTER adapter, enum rf_path rfpath, u8 rate, u8 bandwidth, u8 channel, struct txpwr_idx_comp *tic)
{
PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter);
struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter);
s16 power_idx;
u8 base_idx = 0;
s8 by_rate_diff = 0, limit = 0, tpt_offset = 0, extra_bias = 0;
u8 ntx_idx = phy_get_current_tx_num(adapter, rate);
u8 bIn24G = _FALSE;
rtw_warn_on(write_ret != true);
base_idx = PHY_GetTxPowerIndexBase(adapter, rfpath, rate, ntx_idx, bandwidth, channel, &bIn24G);
clear_buf:
hal->txagc_set_buf = 0;
by_rate_diff = PHY_GetTxPowerByRate(adapter, (u8)(!bIn24G), rfpath, rate);
limit = PHY_GetTxPowerLimit(adapter, NULL, (BAND_TYPE)(!bIn24G),
hal->current_channel_bw, rfpath, rate, ntx_idx, hal->current_channel);
/* tpt_offset += PHY_GetTxPowerTrackingOffset(adapter, rfpath, rate); */
if (tic) {
tic->ntx_idx = ntx_idx;
tic->base = base_idx;
tic->by_rate = by_rate_diff;
tic->limit = limit;
tic->tpt = tpt_offset;
tic->ebias = extra_bias;
}
by_rate_diff = by_rate_diff > limit ? limit : by_rate_diff;
power_idx = base_idx + by_rate_diff + tpt_offset + extra_bias;
#if 0
#if CCX_SUPPORT
CCX_CellPowerLimit(adapter, channel, rate, (pu1Byte)&power_idx);
#endif
#endif
if (power_idx < 0)
power_idx = 0;
else if (power_idx > hal_spec->txgi_max)
power_idx = hal_spec->txgi_max;
return power_idx;
exit:
return;
}
/*
@@ -1261,7 +1214,7 @@ void rtl8822b_mp_config_rfpath(PADAPTER adapter)
break;
}
config_phydm_trx_mode_8822b(GET_PDM_ODM(adapter), bb_tx, bb_rx, FALSE);
phydm_api_trx_mode(GET_PDM_ODM(adapter), bb_tx, bb_rx, bb_tx);
RTW_INFO("-Config RF Path Finish\n");
}
@@ -1338,23 +1291,10 @@ enum _HW_CFG_SOUNDING_TYPE {
static u8 _bf_get_nrx(PADAPTER adapter)
{
u8 rf;
u8 nrx = 0;
rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, &rf);
switch (rf) {
case RF_1T1R:
nrx = 0;
break;
default:
case RF_1T2R:
case RF_2T2R:
nrx = 1;
break;
}
return nrx;
nrx = GET_HAL_RX_NSS(adapter);
return (nrx - 1);
}
static void _sounding_reset_all(PADAPTER adapter)
@@ -2384,9 +2324,10 @@ void rtw_lps_pwr_tracking(_adapter *adapter, u8 thermal_value)
if (adapter_to_pwrctl(adapter)->bLeisurePs &&
adapter_to_pwrctl(adapter)->bFwCurrentInPSMode &&
adapter_to_pwrctl(adapter)->pwr_mode != PS_MODE_ACTIVE)
adapter_to_pwrctl(adapter)->pwr_mode != PS_MODE_ACTIVE) {
lps_changed = _TRUE;
LPS_Leave(adapter, "LPS_CTRL_TXSS");
}
rtw_phydm_pwr_tracking_directly(adapter);

View File

@@ -25,20 +25,6 @@
#endif
static void _dbg_dump_macreg(PADAPTER padapter)
{
u32 offset = 0;
u32 val32 = 0;
u32 index = 0;
for (index = 0; index < 64; index++) {
offset = index * 4;
val32 = rtw_read32(padapter, offset);
RTW_INFO("offset : 0x%02x ,val:0x%08x\n", offset, val32);
}
}
#ifdef CONFIG_FWLPS_IN_IPS
u8 rtl8822bu_fw_ips_init(_adapter *padapter)
{
@@ -218,9 +204,10 @@ u32 rtl8822bu_init(PADAPTER padapter)
hal_init_misc(padapter);
#ifdef CONFIG_FWLPS_IN_IPS
exit:
#endif
RTW_INFO("%s in %dms\n", __func__, rtw_get_passing_time_ms(init_start_time));
return status;
}
@@ -258,7 +245,9 @@ u32 rtl8822bu_deinit(PADAPTER padapter)
return _FAIL;
}
#ifdef CONFIG_FWLPS_IN_IPS
exit:
#endif
RTW_INFO("%s <==\n", __func__);
return _SUCCESS;
}
@@ -424,8 +413,6 @@ void rtl8822bu_interface_configure(PADAPTER padapter)
else
pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE;
pHalData->interfaceIndex = pdvobjpriv->InterfaceNumber;
#ifdef CONFIG_USB_TX_AGGREGATION
/* according to value defined by halmac */
pHalData->UsbTxAggMode = 1;

View File

@@ -152,7 +152,7 @@ static void gethwreg(PADAPTER padapter, u8 variable, u8 *val)
Description:
Change default setting of specified variable.
*/
static u8 sethaldefvar(PADAPTER padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
static u8 sethaldefvar(PADAPTER padapter, HAL_DEF_VARIABLE eVariable, void *pValue)
{
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
u8 bResult = _SUCCESS;
@@ -170,7 +170,7 @@ static u8 sethaldefvar(PADAPTER padapter, HAL_DEF_VARIABLE eVariable, PVOID pVal
Description:
Query setting of specified variable.
*/
static u8 gethaldefvar(PADAPTER padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
static u8 gethaldefvar(PADAPTER padapter, HAL_DEF_VARIABLE eVariable, void *pValue)
{
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
u8 bResult = _SUCCESS;

View File

@@ -36,7 +36,6 @@ static u8 recvbuf2recvframe_proccess_c2h(PADAPTER padapter, u8 *pbuf, s32 transf
/* send rx desc + c2h content to halmac */
rtl8822b_c2h_handler_no_io(padapter, pbuf, transfer_len);
exit:
return ret;
}

View File

@@ -112,13 +112,13 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) {
/* RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); */
rtl8822b_fill_txdesc_sectype(pattrib, ptxdesc);
#ifdef CONFIG_TX_CSUM_OFFLOAD
#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX
if (pattrib->hw_csum == 1) {
int offset = 48 + pxmitframe->pkt_offset*8 + 8;
SET_TX_DESC_OFFSET_8822B(ptxdesc, offset);
SET_TX_DESC_CHK_EN_8822B(ptxdesc, 1);
SET_TX_DESC_WHEADER_LEN_8822B(ptxdesc, (pattrib->hdrlen + pattrib->iv_len)>>1);
SET_TX_DESC_WHEADER_LEN_8822B(ptxdesc, (pattrib->hdrlen + pattrib->iv_len + XATTRIB_GET_MCTRL_LEN(pattrib))>>1);
}
#endif
@@ -136,6 +136,9 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
if (bmcst)
rtl8822b_fill_txdesc_force_bmc_camid(pattrib, ptxdesc);
#endif
#ifdef CONFIG_SUPPORT_DYNAMIC_TXPWR
rtw_phydm_set_dyntxpwr(padapter, ptxdesc, pattrib->mac_id);
#endif
if ((pattrib->ether_type != 0x888e) &&
(pattrib->ether_type != 0x0806) &&