staging: rtl8723au: Make some of the bt-coexist code less unreadable
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7d620c81fa
commit
4d435952bd
|
@ -5762,13 +5762,17 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter)
|
||||||
pBtdm8723 = &pBtCoex->btdm1Ant;
|
pBtdm8723 = &pBtCoex->btdm1Ant;
|
||||||
BtState = pBtCoex->c2hBtInfo;
|
BtState = pBtCoex->c2hBtInfo;
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], WiFi is %s\n",
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is %s\n", BtStateString[BtState]));
|
BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
||||||
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is %s\n",
|
||||||
|
BtStateString[BtState]));
|
||||||
|
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = false;
|
padapter->pwrctrlpriv.btcoex_rfon = false;
|
||||||
|
|
||||||
if ((!BTDM_IsWifiBusy(padapter)) && (!check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE)) &&
|
if (!BTDM_IsWifiBusy(padapter) &&
|
||||||
((BtState == BT_INFO_STATE_NO_CONNECTION) || (BtState == BT_INFO_STATE_CONNECT_IDLE))) {
|
!check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) &&
|
||||||
|
(BtState == BT_INFO_STATE_NO_CONNECTION ||
|
||||||
|
BtState == BT_INFO_STATE_CONNECT_IDLE)) {
|
||||||
switch (BtState) {
|
switch (BtState) {
|
||||||
case BT_INFO_STATE_NO_CONNECTION:
|
case BT_INFO_STATE_NO_CONNECTION:
|
||||||
_btdm_1AntSetPSTDMA(padapter, true, 2, 0x26, false, 9);
|
_btdm_1AntSetPSTDMA(padapter, true, 2, 0x26, false, 9);
|
||||||
|
@ -5787,20 +5791,25 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter)
|
||||||
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
||||||
break;
|
break;
|
||||||
case BT_INFO_STATE_ACL_INQ_OR_PAG:
|
case BT_INFO_STATE_ACL_INQ_OR_PAG:
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is BT_INFO_STATE_ACL_INQ_OR_PAG\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is "
|
||||||
|
"BT_INFO_STATE_ACL_INQ_OR_PAG\n"));
|
||||||
case BT_INFO_STATE_INQ_OR_PAG:
|
case BT_INFO_STATE_INQ_OR_PAG:
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon = true;
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 30);
|
btdm_1AntSetPSTDMA(padapter, true, 0, true, 30);
|
||||||
break;
|
break;
|
||||||
case BT_INFO_STATE_SCO_ONLY_BUSY:
|
case BT_INFO_STATE_SCO_ONLY_BUSY:
|
||||||
case BT_INFO_STATE_ACL_SCO_BUSY:
|
case BT_INFO_STATE_ACL_SCO_BUSY:
|
||||||
if (true == pBtCoex->bC2hBtInquiryPage) {
|
if (true == pBtCoex->bC2hBtInquiryPage)
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 32);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
} else {
|
true, 32);
|
||||||
|
else {
|
||||||
#ifdef BTCOEX_CMCC_TEST
|
#ifdef BTCOEX_CMCC_TEST
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 23);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
true, 23);
|
||||||
#else /* !BTCOEX_CMCC_TEST */
|
#else /* !BTCOEX_CMCC_TEST */
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 8);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
false, 8);
|
||||||
rtw_write32(padapter, 0x6c0, 0x5a5a5a5a);
|
rtw_write32(padapter, 0x6c0, 0x5a5a5a5a);
|
||||||
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
||||||
#endif /* !BTCOEX_CMCC_TEST */
|
#endif /* !BTCOEX_CMCC_TEST */
|
||||||
|
@ -5809,19 +5818,28 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter)
|
||||||
case BT_INFO_STATE_ACL_ONLY_BUSY:
|
case BT_INFO_STATE_ACL_ONLY_BUSY:
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon = true;
|
||||||
if (pBtCoex->c2hBtProfile == BT_INFO_HID) {
|
if (pBtCoex->c2hBtProfile == BT_INFO_HID) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is HID\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is HID\n"));
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 31);
|
btdm_1AntSetPSTDMA(padapter, true, 0, true, 31);
|
||||||
} else if (pBtCoex->c2hBtProfile == BT_INFO_FTP) {
|
} else if (pBtCoex->c2hBtProfile == BT_INFO_FTP) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is FTP/OPP\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is FTP/OPP\n"));
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 3);
|
btdm_1AntSetPSTDMA(padapter, true, 0, true, 3);
|
||||||
} else if (pBtCoex->c2hBtProfile == (BT_INFO_A2DP|BT_INFO_FTP)) {
|
} else if (pBtCoex->c2hBtProfile == (BT_INFO_A2DP|BT_INFO_FTP)) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is A2DP_FTP\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is A2DP_FTP\n"));
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 11);
|
btdm_1AntSetPSTDMA(padapter, true, 0, true, 11);
|
||||||
} else {
|
} else {
|
||||||
if (pBtCoex->c2hBtProfile == BT_INFO_A2DP)
|
if (pBtCoex->c2hBtProfile == BT_INFO_A2DP)
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is A2DP\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is "
|
||||||
|
"A2DP\n"));
|
||||||
else
|
else
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is UNKNOWN(0x%02X)! Use A2DP Profile\n", pBtCoex->c2hBtProfile));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], BT PROFILE is "
|
||||||
|
"UNKNOWN(0x%02X)! Use A2DP "
|
||||||
|
"Profile\n",
|
||||||
|
pBtCoex->c2hBtProfile));
|
||||||
btdm_1AntTdmaDurationAdjustForACL(padapter);
|
btdm_1AntTdmaDurationAdjustForACL(padapter);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -5831,13 +5849,14 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter)
|
||||||
pBtdm8723->psTdmaGlobalCnt++;
|
pBtdm8723->psTdmaGlobalCnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter)
|
static void
|
||||||
|
btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter)
|
||||||
{
|
{
|
||||||
u8 init_rate = 0;
|
u8 init_rate = 0;
|
||||||
u8 raid;
|
u8 raid;
|
||||||
u32 mask;
|
u32 mask;
|
||||||
u8 shortGIrate = false;
|
u8 shortGIrate = false;
|
||||||
int supportRateNum = 0;
|
int supportRateNum = 0;
|
||||||
struct sta_info *psta;
|
struct sta_info *psta;
|
||||||
struct hal_data_8723a *pHalData;
|
struct hal_data_8723a *pHalData;
|
||||||
struct dm_priv *pdmpriv;
|
struct dm_priv *pdmpriv;
|
||||||
|
@ -5845,7 +5864,8 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u
|
||||||
struct mlme_ext_info *pmlmeinfo;
|
struct mlme_ext_info *pmlmeinfo;
|
||||||
struct wlan_bssid_ex *cur_network;
|
struct wlan_bssid_ex *cur_network;
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d, filter = 0x%08x!!\n", __func__, mac_id, filter));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d, filter = 0x%08x!!\n",
|
||||||
|
__func__, mac_id, filter));
|
||||||
|
|
||||||
pHalData = GET_HAL_DATA(padapter);
|
pHalData = GET_HAL_DATA(padapter);
|
||||||
pdmpriv = &pHalData->dmpriv;
|
pdmpriv = &pHalData->dmpriv;
|
||||||
|
@ -5854,13 +5874,15 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u
|
||||||
cur_network = &pmlmeinfo->network;
|
cur_network = &pmlmeinfo->network;
|
||||||
|
|
||||||
if (mac_id >= NUM_STA) { /* CAM_SIZE */
|
if (mac_id >= NUM_STA) { /* CAM_SIZE */
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d illegal!!\n", __func__, mac_id));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d illegal!!\n",
|
||||||
|
__func__, mac_id));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
psta = pmlmeinfo->FW_sta_info[mac_id].psta;
|
psta = pmlmeinfo->FW_sta_info[mac_id].psta;
|
||||||
if (psta == NULL) {
|
if (!psta) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, Can't find station!!\n", __func__));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, Can't find station!!\n",
|
||||||
|
__func__));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5868,19 +5890,26 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u
|
||||||
|
|
||||||
switch (mac_id) {
|
switch (mac_id) {
|
||||||
case 0:/* for infra mode */
|
case 0:/* for infra mode */
|
||||||
supportRateNum = rtw_get_rateset_len23a(cur_network->SupportedRates);
|
supportRateNum =
|
||||||
mask = update_supported_rate23a(cur_network->SupportedRates, supportRateNum);
|
rtw_get_rateset_len23a(cur_network->SupportedRates);
|
||||||
mask |= (pmlmeinfo->HT_enable) ? update_MSC_rate23a(&pmlmeinfo->HT_caps):0;
|
mask = update_supported_rate23a(cur_network->SupportedRates,
|
||||||
|
supportRateNum);
|
||||||
|
mask |= (pmlmeinfo->HT_enable) ?
|
||||||
|
update_MSC_rate23a(&pmlmeinfo->HT_caps):0;
|
||||||
if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps))
|
if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps))
|
||||||
shortGIrate = true;
|
shortGIrate = true;
|
||||||
break;
|
break;
|
||||||
case 1:/* for broadcast/multicast */
|
case 1:/* for broadcast/multicast */
|
||||||
supportRateNum = rtw_get_rateset_len23a(pmlmeinfo->FW_sta_info[mac_id].SupportedRates);
|
supportRateNum = rtw_get_rateset_len23a(
|
||||||
mask = update_basic_rate23a(cur_network->SupportedRates, supportRateNum);
|
pmlmeinfo->FW_sta_info[mac_id].SupportedRates);
|
||||||
|
mask = update_basic_rate23a(cur_network->SupportedRates,
|
||||||
|
supportRateNum);
|
||||||
break;
|
break;
|
||||||
default: /* for each sta in IBSS */
|
default: /* for each sta in IBSS */
|
||||||
supportRateNum = rtw_get_rateset_len23a(pmlmeinfo->FW_sta_info[mac_id].SupportedRates);
|
supportRateNum = rtw_get_rateset_len23a(
|
||||||
mask = update_supported_rate23a(cur_network->SupportedRates, supportRateNum);
|
pmlmeinfo->FW_sta_info[mac_id].SupportedRates);
|
||||||
|
mask = update_supported_rate23a(cur_network->SupportedRates,
|
||||||
|
supportRateNum);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mask |= ((raid<<28)&0xf0000000);
|
mask |= ((raid<<28)&0xf0000000);
|
||||||
|
@ -5897,8 +5926,8 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u
|
||||||
arg |= BIT(5);
|
arg |= BIT(5);
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE,
|
RTPRINT(FBT, BT_TRACE,
|
||||||
("[BTCoex], Update FW RAID entry, MASK = 0x%08x, arg = 0x%02x\n",
|
("[BTCoex], Update FW RAID entry, MASK = 0x%08x, "
|
||||||
mask, arg));
|
"arg = 0x%02x\n", mask, arg));
|
||||||
|
|
||||||
rtl8723a_set_raid_cmd(padapter, mask, arg);
|
rtl8723a_set_raid_cmd(padapter, mask, arg);
|
||||||
} else {
|
} else {
|
||||||
|
@ -5912,7 +5941,8 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u
|
||||||
pdmpriv->INIDATA_RATE[mac_id] = init_rate;
|
pdmpriv->INIDATA_RATE[mac_id] = init_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forceUpdate)
|
static void
|
||||||
|
btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forceUpdate)
|
||||||
{
|
{
|
||||||
struct btdm_8723a_1ant *pBtdm8723;
|
struct btdm_8723a_1ant *pBtdm8723;
|
||||||
struct sta_priv *pstapriv;
|
struct sta_priv *pstapriv;
|
||||||
|
@ -5923,7 +5953,7 @@ static void btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forc
|
||||||
|
|
||||||
pBtdm8723 = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant;
|
pBtdm8723 = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant;
|
||||||
|
|
||||||
if ((pBtdm8723->bRAChanged == true) && (forceUpdate == false))
|
if (pBtdm8723->bRAChanged == true && forceUpdate == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pstapriv = &padapter->stapriv;
|
pstapriv = &padapter->stapriv;
|
||||||
|
@ -5966,9 +5996,13 @@ static void btdm_1AntRecoverHalRAMask(struct rtw_adapter *padapter)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter,
|
btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter,
|
||||||
enum bt_state_1ant oldState, enum bt_state_1ant newState)
|
enum bt_state_1ant oldState,
|
||||||
|
enum bt_state_1ant newState)
|
||||||
{
|
{
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT state change, %s => %s\n", BtStateString[oldState], BtStateString[newState]));
|
struct hal_data_8723a *phaldata;
|
||||||
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT state change, %s => %s\n",
|
||||||
|
BtStateString[oldState],
|
||||||
|
BtStateString[newState]));
|
||||||
|
|
||||||
/* BT default ignore wlan active, */
|
/* BT default ignore wlan active, */
|
||||||
/* WiFi MUST disable this when BT is enable */
|
/* WiFi MUST disable this when BT is enable */
|
||||||
|
@ -5985,22 +6019,23 @@ btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter,
|
||||||
btdm_1AntRecoverHalRAMask(padapter);
|
btdm_1AntRecoverHalRAMask(padapter);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bRAChanged = false;
|
phaldata = GET_HAL_DATA(padapter);
|
||||||
|
phaldata->bt_coexist.halCoex8723.btdm1Ant.bRAChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oldState == newState)
|
if (oldState == newState)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (oldState == BT_INFO_STATE_ACL_ONLY_BUSY) {
|
if (oldState == BT_INFO_STATE_ACL_ONLY_BUSY) {
|
||||||
struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
|
struct hal_data_8723a *Hal = GET_HAL_DATA(padapter);
|
||||||
pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCnt = 0;
|
Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCnt = 0;
|
||||||
pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0;
|
Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((oldState == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
if ((oldState == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
||||||
(oldState == BT_INFO_STATE_ACL_SCO_BUSY)) {
|
(oldState == BT_INFO_STATE_ACL_SCO_BUSY)) {
|
||||||
struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
|
struct hal_data_8723a *Hal = GET_HAL_DATA(padapter);
|
||||||
pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0;
|
Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Active 2Ant mechanism when BT Connected */
|
/* Active 2Ant mechanism when BT Connected */
|
||||||
|
@ -6008,14 +6043,16 @@ btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter,
|
||||||
(oldState == BT_INFO_STATE_NO_CONNECTION)) {
|
(oldState == BT_INFO_STATE_NO_CONNECTION)) {
|
||||||
if ((newState != BT_INFO_STATE_DISABLED) &&
|
if ((newState != BT_INFO_STATE_DISABLED) &&
|
||||||
(newState != BT_INFO_STATE_NO_CONNECTION)) {
|
(newState != BT_INFO_STATE_NO_CONNECTION)) {
|
||||||
BTDM_SetSwRfRxLpfCorner(padapter, BT_RF_RX_LPF_CORNER_SHRINK);
|
BTDM_SetSwRfRxLpfCorner(padapter,
|
||||||
|
BT_RF_RX_LPF_CORNER_SHRINK);
|
||||||
BTDM_AGCTable(padapter, BT_AGCTABLE_ON);
|
BTDM_AGCTable(padapter, BT_AGCTABLE_ON);
|
||||||
BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_ON);
|
BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_ON);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((newState == BT_INFO_STATE_DISABLED) ||
|
if ((newState == BT_INFO_STATE_DISABLED) ||
|
||||||
(newState == BT_INFO_STATE_NO_CONNECTION)) {
|
(newState == BT_INFO_STATE_NO_CONNECTION)) {
|
||||||
BTDM_SetSwRfRxLpfCorner(padapter, BT_RF_RX_LPF_CORNER_RESUME);
|
BTDM_SetSwRfRxLpfCorner(padapter,
|
||||||
|
BT_RF_RX_LPF_CORNER_RESUME);
|
||||||
BTDM_AGCTable(padapter, BT_AGCTABLE_OFF);
|
BTDM_AGCTable(padapter, BT_AGCTABLE_OFF);
|
||||||
BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_OFF);
|
BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_OFF);
|
||||||
}
|
}
|
||||||
|
@ -6036,17 +6073,23 @@ static void btdm_1AntBtCoexistHandler(struct rtw_adapter *padapter)
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is disabled\n"));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is disabled\n"));
|
||||||
|
|
||||||
if (BTDM_IsWifiConnectionExist(padapter)) {
|
if (BTDM_IsWifiConnectionExist(padapter)) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is connected\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is connected\n"));
|
||||||
|
|
||||||
if (BTDM_IsWifiBusy(padapter)) {
|
if (BTDM_IsWifiBusy(padapter)) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], Wifi is busy\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 9);
|
("[BTCoex], Wifi is busy\n"));
|
||||||
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
false, 9);
|
||||||
} else {
|
} else {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], Wifi is idle\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
_btdm_1AntSetPSTDMA(padapter, true, 2, 1, false, 9);
|
("[BTCoex], Wifi is idle\n"));
|
||||||
|
_btdm_1AntSetPSTDMA(padapter, true, 2, 1,
|
||||||
|
false, 9);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is disconnected\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is disconnected\n"));
|
||||||
|
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 9);
|
btdm_1AntSetPSTDMA(padapter, false, 0, false, 9);
|
||||||
}
|
}
|
||||||
|
@ -6054,24 +6097,29 @@ static void btdm_1AntBtCoexistHandler(struct rtw_adapter *padapter)
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is enabled\n"));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is enabled\n"));
|
||||||
|
|
||||||
if (BTDM_IsWifiConnectionExist(padapter)) {
|
if (BTDM_IsWifiConnectionExist(padapter)) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is connected\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is connected\n"));
|
||||||
|
|
||||||
btdm_1AntWifiParaAdjust(padapter, true);
|
btdm_1AntWifiParaAdjust(padapter, true);
|
||||||
btdm_1AntCoexProcessForWifiConnect(padapter);
|
btdm_1AntCoexProcessForWifiConnect(padapter);
|
||||||
} else {
|
} else {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is disconnected\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is disconnected\n"));
|
||||||
|
|
||||||
/* Antenna switch at BT side(0x870 = 0x300, 0x860 = 0x210) after PSTDMA off */
|
/* Antenna switch at BT side(0x870 = 0x300,
|
||||||
|
0x860 = 0x210) after PSTDMA off */
|
||||||
btdm_1AntWifiParaAdjust(padapter, false);
|
btdm_1AntWifiParaAdjust(padapter, false);
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 0);
|
btdm_1AntSetPSTDMA(padapter, false, 0, false, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
btdm_1AntBTStateChangeHandler(padapter, pBtCoex8723->prec2hBtInfo, pBtCoex8723->c2hBtInfo);
|
btdm_1AntBTStateChangeHandler(padapter, pBtCoex8723->prec2hBtInfo,
|
||||||
|
pBtCoex8723->c2hBtInfo);
|
||||||
pBtCoex8723->prec2hBtInfo = pBtCoex8723->c2hBtInfo;
|
pBtCoex8723->prec2hBtInfo = pBtCoex8723->c2hBtInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8 *rssi_bt)
|
void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter,
|
||||||
|
u8 *rssi_wifi, u8 *rssi_bt)
|
||||||
{
|
{
|
||||||
struct hal_data_8723a *pHalData;
|
struct hal_data_8723a *pHalData;
|
||||||
struct btdm_8723a_1ant *pBtdm8723;
|
struct btdm_8723a_1ant *pBtdm8723;
|
||||||
|
@ -6117,14 +6165,19 @@ void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rssi_wifi && RSSI_WiFi_Cmpnstn) {
|
if (rssi_wifi && RSSI_WiFi_Cmpnstn) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1AntSgnlCmpnstn, case %d, WiFiCmpnstn =%d(%d => %d)\n",
|
RTPRINT(FBT, BT_TRACE,
|
||||||
pBtdm8723->curPsTdma, RSSI_WiFi_Cmpnstn, *rssi_wifi, *rssi_wifi+RSSI_WiFi_Cmpnstn));
|
("[BTCoex], 1AntSgnlCmpnstn, case %d, WiFiCmpnstn "
|
||||||
|
"=%d(%d => %d)\n", pBtdm8723->curPsTdma,
|
||||||
|
RSSI_WiFi_Cmpnstn, *rssi_wifi,
|
||||||
|
*rssi_wifi+RSSI_WiFi_Cmpnstn));
|
||||||
*rssi_wifi += RSSI_WiFi_Cmpnstn;
|
*rssi_wifi += RSSI_WiFi_Cmpnstn;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rssi_bt && RSSI_BT_Cmpnstn) {
|
if (rssi_bt && RSSI_BT_Cmpnstn) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1AntSgnlCmpnstn, case %d, BTCmpnstn =%d(%d => %d)\n",
|
RTPRINT(FBT, BT_TRACE,
|
||||||
pBtdm8723->curPsTdma, RSSI_BT_Cmpnstn, *rssi_bt, *rssi_bt+RSSI_BT_Cmpnstn));
|
("[BTCoex], 1AntSgnlCmpnstn, case %d, BTCmpnstn "
|
||||||
|
"=%d(%d => %d)\n", pBtdm8723->curPsTdma,
|
||||||
|
RSSI_BT_Cmpnstn, *rssi_bt, *rssi_bt+RSSI_BT_Cmpnstn));
|
||||||
*rssi_bt += RSSI_BT_Cmpnstn;
|
*rssi_bt += RSSI_BT_Cmpnstn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6160,7 +6213,8 @@ static void BTDM_1AntForHalt(struct rtw_adapter *padapter)
|
||||||
{
|
{
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for halt\n"));
|
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for halt\n"));
|
||||||
|
|
||||||
GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = true;
|
GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt =
|
||||||
|
true;
|
||||||
|
|
||||||
btdm_1AntWifiParaAdjust(padapter, false);
|
btdm_1AntWifiParaAdjust(padapter, false);
|
||||||
|
|
||||||
|
@ -6178,7 +6232,8 @@ static void BTDM_1AntLpsLeave(struct rtw_adapter *padapter)
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for LPS Leave\n"));
|
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for LPS Leave\n"));
|
||||||
|
|
||||||
/* Prevent from entering LPS again */
|
/* Prevent from entering LPS again */
|
||||||
GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = true;
|
GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt =
|
||||||
|
true;
|
||||||
|
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 8);
|
btdm_1AntSetPSTDMA(padapter, false, 0, false, 8);
|
||||||
/*btdm_1AntPsTdma(padapter, false, 8); */
|
/*btdm_1AntPsTdma(padapter, false, 8); */
|
||||||
|
@ -6188,13 +6243,14 @@ static void BTDM_1AntWifiAssociateNotify(struct rtw_adapter *padapter, u8 type)
|
||||||
{
|
{
|
||||||
struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
|
struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for associate, type =%d\n", type));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("\n[BTCoex], 1Ant for associate, type =%d\n", type));
|
||||||
|
|
||||||
if (type) {
|
if (type) {
|
||||||
rtl8723a_CheckAntenna_Selection(padapter);
|
rtl8723a_CheckAntenna_Selection(padapter);
|
||||||
if (BT_IsBtDisabled(padapter)) {
|
if (BT_IsBtDisabled(padapter))
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 9);
|
btdm_1AntSetPSTDMA(padapter, false, 0, false, 9);
|
||||||
} else {
|
else {
|
||||||
struct bt_coexist_8723a *pBtCoex;
|
struct bt_coexist_8723a *pBtCoex;
|
||||||
u8 BtState;
|
u8 BtState;
|
||||||
|
|
||||||
|
@ -6203,20 +6259,24 @@ static void BTDM_1AntWifiAssociateNotify(struct rtw_adapter *padapter, u8 type)
|
||||||
|
|
||||||
btdm_1AntTSFSwitch(padapter, true);
|
btdm_1AntTSFSwitch(padapter, true);
|
||||||
|
|
||||||
if ((BtState == BT_INFO_STATE_NO_CONNECTION) ||
|
if (BtState == BT_INFO_STATE_NO_CONNECTION ||
|
||||||
(BtState == BT_INFO_STATE_CONNECT_IDLE)) {
|
BtState == BT_INFO_STATE_CONNECT_IDLE) {
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 28);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
} else if ((BtState == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
true, 28);
|
||||||
(BtState == BT_INFO_STATE_ACL_SCO_BUSY)) {
|
} else if (BtState == BT_INFO_STATE_SCO_ONLY_BUSY ||
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, false, 8);
|
BtState == BT_INFO_STATE_ACL_SCO_BUSY) {
|
||||||
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
false, 8);
|
||||||
rtw_write32(padapter, 0x6c0, 0x5a5a5a5a);
|
rtw_write32(padapter, 0x6c0, 0x5a5a5a5a);
|
||||||
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
rtw_write32(padapter, 0x6c4, 0x5a5a5a5a);
|
||||||
} else if ((BtState == BT_INFO_STATE_ACL_ONLY_BUSY) ||
|
} else if (BtState == BT_INFO_STATE_ACL_ONLY_BUSY ||
|
||||||
(BtState == BT_INFO_STATE_ACL_INQ_OR_PAG)) {
|
BtState == BT_INFO_STATE_ACL_INQ_OR_PAG) {
|
||||||
if (pBtCoex->c2hBtProfile == BT_INFO_HID)
|
if (pBtCoex->c2hBtProfile == BT_INFO_HID)
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 35);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
true, 35);
|
||||||
else
|
else
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 29);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
true, 29);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -6239,22 +6299,24 @@ BTDM_1AntMediaStatusNotify(struct rtw_adapter *padapter,
|
||||||
|
|
||||||
pBtCoex = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723;
|
pBtCoex = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723;
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n\n[BTCoex]******************************\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("\n\n[BTCoex]******************************\n"));
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], MediaStatus, WiFi %s !!\n",
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], MediaStatus, WiFi %s !!\n",
|
||||||
mstatus == RT_MEDIA_CONNECT?"CONNECT":"DISCONNECT"));
|
mstatus == RT_MEDIA_CONNECT?"CONNECT":"DISCONNECT"));
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex]******************************\n"));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex]******************************\n"));
|
||||||
|
|
||||||
if (RT_MEDIA_CONNECT == mstatus) {
|
if (RT_MEDIA_CONNECT == mstatus) {
|
||||||
if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE)) {
|
if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE)) {
|
||||||
if ((pBtCoex->c2hBtInfo == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
if (pBtCoex->c2hBtInfo == BT_INFO_STATE_SCO_ONLY_BUSY ||
|
||||||
(pBtCoex->c2hBtInfo == BT_INFO_STATE_ACL_SCO_BUSY))
|
pBtCoex->c2hBtInfo == BT_INFO_STATE_ACL_SCO_BUSY)
|
||||||
btdm_1AntUpdateHalRAMaskForSCO(padapter, true);
|
btdm_1AntUpdateHalRAMaskForSCO(padapter, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
padapter->pwrctrlpriv.DelayLPSLastTimeStamp = jiffies;
|
padapter->pwrctrlpriv.DelayLPSLastTimeStamp = jiffies;
|
||||||
BTDM_1AntForDhcp(padapter);
|
BTDM_1AntForDhcp(padapter);
|
||||||
} else {
|
} else {
|
||||||
/* DBG_8723A("%s rtl8723a_DeinitAntenna_Selection\n", __func__); */
|
/* DBG_8723A("%s rtl8723a_DeinitAntenna_Selection\n",
|
||||||
|
__func__); */
|
||||||
rtl8723a_DeinitAntenna_Selection(padapter);
|
rtl8723a_DeinitAntenna_Selection(padapter);
|
||||||
btdm_1AntBtCoexistHandler(padapter);
|
btdm_1AntBtCoexistHandler(padapter);
|
||||||
pBtCoex->btdm1Ant.bRAChanged = false;
|
pBtCoex->btdm1Ant.bRAChanged = false;
|
||||||
|
@ -6274,8 +6336,10 @@ void BTDM_1AntForDhcp(struct rtw_adapter *padapter)
|
||||||
pBtdm8723 = &pBtCoex->btdm1Ant;
|
pBtdm8723 = &pBtCoex->btdm1Ant;
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for DHCP\n"));
|
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for DHCP\n"));
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, WiFi is %s\n",
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, %s\n", BtStateString[BtState]));
|
BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
||||||
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, %s\n",
|
||||||
|
BtStateString[BtState]));
|
||||||
|
|
||||||
BTDM_1AntWifiAssociateNotify(padapter, true);
|
BTDM_1AntWifiAssociateNotify(padapter, true);
|
||||||
}
|
}
|
||||||
|
@ -6292,9 +6356,12 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType)
|
||||||
pBtCoex = &pHalData->bt_coexist.halCoex8723;
|
pBtCoex = &pHalData->bt_coexist.halCoex8723;
|
||||||
pBtdm8723 = &pBtCoex->btdm1Ant;
|
pBtdm8723 = &pBtCoex->btdm1Ant;
|
||||||
|
|
||||||
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for wifi scan =%d!!\n", scanType));
|
RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for wifi scan =%d!!\n",
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
scanType));
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, %s\n", BtStateString[BtState]));
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, WiFi is %s\n",
|
||||||
|
BTDM_IsWifiBusy(padapter)?"Busy":"IDLE"));
|
||||||
|
RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, %s\n",
|
||||||
|
BtStateString[BtState]));
|
||||||
|
|
||||||
if (scanType) {
|
if (scanType) {
|
||||||
rtl8723a_CheckAntenna_Selection(padapter);
|
rtl8723a_CheckAntenna_Selection(padapter);
|
||||||
|
@ -6306,10 +6373,13 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType)
|
||||||
if ((BtState == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
if ((BtState == BT_INFO_STATE_SCO_ONLY_BUSY) ||
|
||||||
(BtState == BT_INFO_STATE_ACL_SCO_BUSY)) {
|
(BtState == BT_INFO_STATE_ACL_SCO_BUSY)) {
|
||||||
if (pBtCoex->bC2hBtInquiryPage) {
|
if (pBtCoex->bC2hBtInquiryPage) {
|
||||||
btdm_1AntSetPSTDMA(padapter, false, 0, true, 32);
|
btdm_1AntSetPSTDMA(padapter, false, 0,
|
||||||
|
true, 32);
|
||||||
} else {
|
} else {
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon =
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 33);
|
true;
|
||||||
|
btdm_1AntSetPSTDMA(padapter, true, 0,
|
||||||
|
true, 33);
|
||||||
}
|
}
|
||||||
} else if (true == pBtCoex->bC2hBtInquiryPage) {
|
} else if (true == pBtCoex->bC2hBtInquiryPage) {
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon = true;
|
||||||
|
@ -6317,9 +6387,11 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType)
|
||||||
} else if (BtState == BT_INFO_STATE_ACL_ONLY_BUSY) {
|
} else if (BtState == BT_INFO_STATE_ACL_ONLY_BUSY) {
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon = true;
|
||||||
if (pBtCoex->c2hBtProfile == BT_INFO_HID)
|
if (pBtCoex->c2hBtProfile == BT_INFO_HID)
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 34);
|
btdm_1AntSetPSTDMA(padapter, true, 0,
|
||||||
|
true, 34);
|
||||||
else
|
else
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 4);
|
btdm_1AntSetPSTDMA(padapter, true, 0,
|
||||||
|
true, 4);
|
||||||
} else {
|
} else {
|
||||||
padapter->pwrctrlpriv.btcoex_rfon = true;
|
padapter->pwrctrlpriv.btcoex_rfon = true;
|
||||||
btdm_1AntSetPSTDMA(padapter, true, 0, true, 5);
|
btdm_1AntSetPSTDMA(padapter, true, 0, true, 5);
|
||||||
|
@ -6363,16 +6435,18 @@ static void BTDM_1AntFwC2hBtInfo8723A(struct rtw_adapter *padapter)
|
||||||
pBtCoex->bC2hBtInquiryPage = false;
|
pBtCoex->bC2hBtInquiryPage = false;
|
||||||
btState &= ~BIT(2);
|
btState &= ~BIT(2);
|
||||||
|
|
||||||
if (!(btState & BIT(0))) {
|
if (!(btState & BIT(0)))
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_NO_CONNECTION;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_NO_CONNECTION;
|
||||||
} else {
|
else {
|
||||||
if (btState == 0x1) {
|
if (btState == 0x1)
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_CONNECT_IDLE;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_CONNECT_IDLE;
|
||||||
} else if (btState == 0x9) {
|
else if (btState == 0x9) {
|
||||||
if (pBtCoex->bC2hBtInquiryPage == true)
|
if (pBtCoex->bC2hBtInquiryPage == true)
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_INQ_OR_PAG;
|
pBtCoex->c2hBtInfo =
|
||||||
|
BT_INFO_STATE_ACL_INQ_OR_PAG;
|
||||||
else
|
else
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_ONLY_BUSY;
|
pBtCoex->c2hBtInfo =
|
||||||
|
BT_INFO_STATE_ACL_ONLY_BUSY;
|
||||||
pBtMgnt->ExtConfig.bBTBusy = true;
|
pBtMgnt->ExtConfig.bBTBusy = true;
|
||||||
} else if (btState == 0x3) {
|
} else if (btState == 0x3) {
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_SCO_ONLY_BUSY;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_SCO_ONLY_BUSY;
|
||||||
|
@ -6380,15 +6454,15 @@ static void BTDM_1AntFwC2hBtInfo8723A(struct rtw_adapter *padapter)
|
||||||
} else if (btState == 0xb) {
|
} else if (btState == 0xb) {
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_SCO_BUSY;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_SCO_BUSY;
|
||||||
pBtMgnt->ExtConfig.bBTBusy = true;
|
pBtMgnt->ExtConfig.bBTBusy = true;
|
||||||
} else {
|
} else
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_MAX;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_MAX;
|
||||||
}
|
|
||||||
if (pBtMgnt->ExtConfig.bBTBusy)
|
if (pBtMgnt->ExtConfig.bBTBusy)
|
||||||
pHalData->bt_coexist.CurrentState &= ~BT_COEX_STATE_BT_IDLE;
|
pHalData->bt_coexist.CurrentState &=
|
||||||
|
~BT_COEX_STATE_BT_IDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((BT_INFO_STATE_NO_CONNECTION == pBtCoex->c2hBtInfo) ||
|
if (BT_INFO_STATE_NO_CONNECTION == pBtCoex->c2hBtInfo ||
|
||||||
(BT_INFO_STATE_CONNECT_IDLE == pBtCoex->c2hBtInfo)) {
|
BT_INFO_STATE_CONNECT_IDLE == pBtCoex->c2hBtInfo) {
|
||||||
if (pBtCoex->bC2hBtInquiryPage)
|
if (pBtCoex->bC2hBtInquiryPage)
|
||||||
pBtCoex->c2hBtInfo = BT_INFO_STATE_INQ_OR_PAG;
|
pBtCoex->c2hBtInfo = BT_INFO_STATE_INQ_OR_PAG;
|
||||||
}
|
}
|
||||||
|
@ -6411,12 +6485,14 @@ void BTDM_1AntBtCoexist8723A(struct rtw_adapter *padapter)
|
||||||
|
|
||||||
if (check_fwstate(pmlmepriv, WIFI_SITE_MONITOR)) {
|
if (check_fwstate(pmlmepriv, WIFI_SITE_MONITOR)) {
|
||||||
/* already done in BTDM_1AntForScan() */
|
/* already done in BTDM_1AntForScan() */
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is under scan progress!!\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is under scan progress!!\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) {
|
if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) {
|
||||||
RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is under link progress!!\n"));
|
RTPRINT(FBT, BT_TRACE,
|
||||||
|
("[BTCoex], wifi is under link progress!!\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue