From d8ab7e840dd36dfe5672d7dc94f428cb5f14c7cf Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Fri, 9 May 2014 15:04:21 +0200 Subject: [PATCH] staging: rtl8723au: rtw_pwrctrl.c: Reduce spaghettification Signed-off-by: Jes Sorensen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 217 ++++++++++--------- 1 file changed, 112 insertions(+), 105 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c index 8755d0a56025..993504dd7eda 100644 --- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c @@ -39,8 +39,7 @@ void ips_enter23a(struct rtw_adapter * padapter) #ifdef CONFIG_8723AU_BT_COEXIST BTDM_TurnOffBtCoexistBeforeEnterIPS(padapter); #endif - if (rf_off == pwrpriv->change_rfpwrstate) - { + if (pwrpriv->change_rfpwrstate == rf_off) { pwrpriv->bpower_saving = true; DBG_8723A_LEVEL(_drv_always_, "nolinked power save enter\n"); @@ -65,25 +64,32 @@ int ips_leave23a(struct rtw_adapter * padapter) down(&pwrpriv->lock); - if ((pwrpriv->rf_pwrstate == rf_off) &&!pwrpriv->bips_processing) - { + if (pwrpriv->rf_pwrstate == rf_off && !pwrpriv->bips_processing) { pwrpriv->bips_processing = true; pwrpriv->change_rfpwrstate = rf_on; pwrpriv->ips_leave23a_cnts++; - DBG_8723A("==>ips_leave23a cnts:%d\n", pwrpriv->ips_leave23a_cnts); + DBG_8723A("==>ips_leave23a cnts:%d\n", + pwrpriv->ips_leave23a_cnts); - if ((result = rtw_ips_pwr_up23a(padapter)) == _SUCCESS) { + result = rtw_ips_pwr_up23a(padapter); + if (result == _SUCCESS) pwrpriv->rf_pwrstate = rf_on; - } + DBG_8723A_LEVEL(_drv_always_, "nolinked power save leave\n"); - if ((_WEP40_ == psecuritypriv->dot11PrivacyAlgrthm) ||(_WEP104_ == psecuritypriv->dot11PrivacyAlgrthm)) - { - DBG_8723A("==>%s, channel(%d), processing(%x)\n", __func__, padapter->mlmeextpriv.cur_channel, pwrpriv->bips_processing); - set_channel_bwmode23a(padapter, padapter->mlmeextpriv.cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + if (psecuritypriv->dot11PrivacyAlgrthm == _WEP40_ || + psecuritypriv->dot11PrivacyAlgrthm == _WEP104_) { + DBG_8723A("==>%s, channel(%d), processing(%x)\n", + __func__, padapter->mlmeextpriv.cur_channel, + pwrpriv->bips_processing); + set_channel_bwmode23a(padapter, + padapter->mlmeextpriv.cur_channel, + HAL_PRIME_CHNL_OFFSET_DONT_CARE, + HT_CHANNEL_WIDTH_20); for (keyid = 0; keyid < 4; keyid++) { if (pmlmepriv->key_mask & BIT(keyid)) { - if (keyid == psecuritypriv->dot11PrivacyKeyIndex) + if (keyid == + psecuritypriv->dot11PrivacyKeyIndex) result = rtw_set_key23a(padapter, psecuritypriv, keyid, 1); else result = rtw_set_key23a(padapter, psecuritypriv, keyid, 0); @@ -91,7 +97,8 @@ int ips_leave23a(struct rtw_adapter * padapter) } } - DBG_8723A("==> ips_leave23a.....LED(0x%08x)...\n", rtw_read32(padapter, 0x4c)); + DBG_8723A("==> ips_leave23a.....LED(0x%08x)...\n", + rtw_read32(padapter, 0x4c)); pwrpriv->bips_processing = false; pwrpriv->bkeepfwalive = false; @@ -139,9 +146,12 @@ static bool rtw_pwr_unassociated_idle(struct rtw_adapter *adapter) if (pxmit_priv->free_xmitbuf_cnt != NR_XMITBUFF || pxmit_priv->free_xmit_extbuf_cnt != NR_XMIT_EXTBUFF) { - DBG_8723A_LEVEL(_drv_always_, "There are some pkts to transmit\n"); - DBG_8723A_LEVEL(_drv_info_, "free_xmitbuf_cnt: %d, free_xmit_extbuf_cnt: %d\n", - pxmit_priv->free_xmitbuf_cnt, pxmit_priv->free_xmit_extbuf_cnt); + DBG_8723A_LEVEL(_drv_always_, + "There are some pkts to transmit\n"); + DBG_8723A_LEVEL(_drv_info_, "free_xmitbuf_cnt: %d, " + "free_xmit_extbuf_cnt: %d\n", + pxmit_priv->free_xmitbuf_cnt, + pxmit_priv->free_xmit_extbuf_cnt); goto exit; } @@ -164,7 +174,8 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter) if (padapter->pwrctrlpriv.bHWPwrPindetect) { rfpwrstate = RfOnOffDetect23a(padapter); - DBG_8723A("@@@@- #2 %s ==> rfstate:%s\n", __func__, (rfpwrstate == rf_on)?"rf_on":"rf_off"); + DBG_8723A("@@@@- #2 %s ==> rfstate:%s\n", __func__, + (rfpwrstate == rf_on)?"rf_on":"rf_off"); if (rfpwrstate!= pwrpriv->rf_pwrstate) { if (rfpwrstate == rf_off) { @@ -176,7 +187,9 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter) pwrpriv->change_rfpwrstate = rf_on; rtw_hw_resume23a(padapter); } - DBG_8723A("current rf_pwrstate(%s)\n", (pwrpriv->rf_pwrstate == rf_off)?"rf_off":"rf_on"); + DBG_8723A("current rf_pwrstate(%s)\n", + (pwrpriv->rf_pwrstate == rf_off) ? + "rf_off":"rf_on"); } pwrpriv->pwr_state_check_cnts ++; } @@ -187,9 +200,10 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter) if (rtw_pwr_unassociated_idle(padapter) == false) goto exit; - if ((pwrpriv->rf_pwrstate == rf_on) && ((pwrpriv->pwr_state_check_cnts%4) == 0)) - { - DBG_8723A("==>%s .fw_state(%x)\n", __func__, get_fwstate(pmlmepriv)); + if (pwrpriv->rf_pwrstate == rf_on && + (pwrpriv->pwr_state_check_cnts % 4) == 0) { + DBG_8723A("==>%s .fw_state(%x)\n", __func__, + get_fwstate(pmlmepriv)); pwrpriv->change_rfpwrstate = rf_off; ips_enter23a(padapter); } @@ -208,36 +222,35 @@ static void pwr_state_check_handler(unsigned long data) /* * * Parameters - * padapter - * pslv power state level, only could be PS_STATE_S0 ~ PS_STATE_S4 + * padapter + * pslv power state level, only could be PS_STATE_S0 ~ PS_STATE_S4 * */ void rtw_set_rpwm23a(struct rtw_adapter *padapter, u8 pslv) { - u8 rpwm; + u8 rpwm; struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; - - pslv = PS_STATE(pslv); - if (true == pwrpriv->btcoex_rfon) - { + if (pwrpriv->btcoex_rfon) { if (pslv < PS_STATE_S4) pslv = PS_STATE_S3; } if (pwrpriv->rpwm == pslv) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, - ("%s: Already set rpwm[0x%02X], new = 0x%02X!\n", __func__, pwrpriv->rpwm, pslv)); + ("%s: Already set rpwm[0x%02X], new = 0x%02X!\n", + __func__, pwrpriv->rpwm, pslv)); return; } - if ((padapter->bSurpriseRemoved == true) || - (padapter->hw_init_completed == false)) { + if (padapter->bSurpriseRemoved == true || + padapter->hw_init_completed == false) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, - ("%s: SurpriseRemoved(%d) hw_init_completed(%d)\n", - __func__, padapter->bSurpriseRemoved, padapter->hw_init_completed)); + ("%s: SurpriseRemoved(%d) hw_init_completed(%d)\n", + __func__, padapter->bSurpriseRemoved, + padapter->hw_init_completed)); pwrpriv->cpwm = PS_STATE_S4; @@ -246,18 +259,22 @@ void rtw_set_rpwm23a(struct rtw_adapter *padapter, u8 pslv) if (padapter->bDriverStopped == true) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, - ("%s: change power state(0x%02X) when DriverStopped\n", __func__, pslv)); + ("%s: change power state(0x%02X) when DriverStopped\n", + __func__, pslv)); if (pslv < PS_STATE_S2) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, - ("%s: Reject to enter PS_STATE(0x%02X) lower than S2 when DriverStopped!!\n", __func__, pslv)); + ("%s: Reject to enter PS_STATE(0x%02X) lower " + "than S2 when DriverStopped!!\n", + __func__, pslv)); return; } } rpwm = pslv | pwrpriv->tog; RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, - ("rtw_set_rpwm23a: rpwm = 0x%02x cpwm = 0x%02x\n", rpwm, pwrpriv->cpwm)); + ("rtw_set_rpwm23a: rpwm = 0x%02x cpwm = 0x%02x\n", + rpwm, pwrpriv->cpwm)); pwrpriv->rpwm = pslv; @@ -265,33 +282,29 @@ void rtw_set_rpwm23a(struct rtw_adapter *padapter, u8 pslv) pwrpriv->tog += 0x80; pwrpriv->cpwm = pslv; - - } static u8 PS_RDY_CHECK(struct rtw_adapter * padapter) { unsigned long delta_time; - struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; delta_time = jiffies - pwrpriv->DelayLPSLastTimeStamp; if (delta_time < LPS_DELAY_TIME) - { return false; - } - if ((check_fwstate(pmlmepriv, _FW_LINKED) == false) || - (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == true) || - (check_fwstate(pmlmepriv, WIFI_AP_STATE) == true) || - (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == true) || - (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == true)) + if (check_fwstate(pmlmepriv, _FW_LINKED) == false || + check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == true || + check_fwstate(pmlmepriv, WIFI_AP_STATE) == true || + check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == true || + check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == true) return false; - if (true == pwrpriv->bInSuspend) + if (pwrpriv->bInSuspend) return false; - if ((padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) && (padapter->securitypriv.binstallGrpkey == false)) - { + if (padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && + padapter->securitypriv.binstallGrpkey == false) { DBG_8723A("Group handshake still in progress !!!\n"); return false; } @@ -301,7 +314,8 @@ static u8 PS_RDY_CHECK(struct rtw_adapter * padapter) return true; } -void rtw_set_ps_mode23a(struct rtw_adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode) +void rtw_set_ps_mode23a(struct rtw_adapter *padapter, u8 ps_mode, + u8 smart_ps, u8 bcn_ant_mode) { struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; @@ -310,19 +324,18 @@ void rtw_set_ps_mode23a(struct rtw_adapter *padapter, u8 ps_mode, u8 smart_ps, u __func__, ps_mode, smart_ps)); if (ps_mode > PM_Card_Disable) { - RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, ("ps_mode:%d error\n", ps_mode)); + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, + ("ps_mode:%d error\n", ps_mode)); return; } - if (pwrpriv->pwr_mode == ps_mode) - { - if (PS_MODE_ACTIVE == ps_mode) return; - - if ((pwrpriv->smart_ps == smart_ps) && - (pwrpriv->bcn_ant_mode == bcn_ant_mode)) - { + if (pwrpriv->pwr_mode == ps_mode) { + if (PS_MODE_ACTIVE == ps_mode) + return; + + if (pwrpriv->smart_ps == smart_ps && + pwrpriv->bcn_ant_mode == bcn_ant_mode) return; - } } if (ps_mode == PS_MODE_ACTIVE) { @@ -380,7 +393,8 @@ s32 LPS_RF_ON_check23a(struct rtw_adapter *padapter, u32 delay_ms) if (time_after(jiffies, end_time)) { err = -1; - DBG_8723A("%s: Wait for FW LPS leave more than %u ms!!!\n", __func__, delay_ms); + DBG_8723A("%s: Wait for FW LPS leave more than %u " + "ms!\n", __func__, delay_ms); break; } udelay(100); @@ -393,7 +407,7 @@ s32 LPS_RF_ON_check23a(struct rtw_adapter *padapter, u32 delay_ms) /* Enter the leisure power save mode. */ void LPS_Enter23a(struct rtw_adapter *padapter) { - struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; if (!PS_RDY_CHECK(padapter)) return; @@ -403,13 +417,15 @@ void LPS_Enter23a(struct rtw_adapter *padapter) if (pwrpriv->LpsIdleCount >= 2) { /* 4 Sec */ if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) { pwrpriv->bpower_saving = true; - DBG_8723A("%s smart_ps:%d\n", __func__, pwrpriv->smart_ps); + DBG_8723A("%s smart_ps:%d\n", __func__, + pwrpriv->smart_ps); /* For Tenda W311R IOT issue */ - rtw_set_ps_mode23a(padapter, pwrpriv->power_mgnt, pwrpriv->smart_ps, 0); + rtw_set_ps_mode23a(padapter, + pwrpriv->power_mgnt, + pwrpriv->smart_ps, 0); } - } else { + } else pwrpriv->LpsIdleCount++; - } } } @@ -419,14 +435,15 @@ void LPS_Leave23a(struct rtw_adapter *padapter) { #define LPS_LEAVE_TIMEOUT_MS 100 - struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; if (pwrpriv->bLeisurePs) { if (pwrpriv->pwr_mode != PS_MODE_ACTIVE) { rtw_set_ps_mode23a(padapter, PS_MODE_ACTIVE, 0, 0); if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) - LPS_RF_ON_check23a(padapter, LPS_LEAVE_TIMEOUT_MS); + LPS_RF_ON_check23a(padapter, + LPS_LEAVE_TIMEOUT_MS); } } @@ -438,17 +455,11 @@ void LPS_Leave23a(struct rtw_adapter *padapter) void LeaveAllPowerSaveMode23a(struct rtw_adapter *Adapter) { struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; - u8 enqueue = 0; - - + u8 enqueue = 0; /* DBG_8723A("%s.....\n", __func__); */ if (check_fwstate(pmlmepriv, _FW_LINKED) == true) - { /* connect */ rtw_lps_ctrl_wk_cmd23a(Adapter, LPS_CTRL_LEAVE, enqueue); - } - - } void rtw_init_pwrctrl_priv23a(struct rtw_adapter *padapter) @@ -471,8 +482,11 @@ void rtw_init_pwrctrl_priv23a(struct rtw_adapter *padapter) pwrctrlpriv->bkeepfwalive = false; pwrctrlpriv->LpsIdleCount = 0; - pwrctrlpriv->power_mgnt = padapter->registrypriv.power_mgnt;/* PS_MODE_MIN; */ - pwrctrlpriv->bLeisurePs = (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt)?true:false; + + /* PS_MODE_MIN; */ + pwrctrlpriv->power_mgnt = padapter->registrypriv.power_mgnt; + pwrctrlpriv->bLeisurePs = + (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt)?true:false; pwrctrlpriv->bFwCurrentInPSMode = false; @@ -489,8 +503,6 @@ void rtw_init_pwrctrl_priv23a(struct rtw_adapter *padapter) setup_timer(&pwrctrlpriv->pwr_state_check_timer, pwr_state_check_handler, (unsigned long)padapter); - - } void rtw_free_pwrctrl_priv(struct rtw_adapter *adapter) @@ -540,7 +552,8 @@ int _rtw_pwr_wakeup23a(struct rtw_adapter *padapter, u32 ips_deffer_ms, const ch jiffies_to_msecs(jiffies - start) <= 4000) msleep(10); if (rtw_hal_sreset_inprogress(padapter)) - DBG_8723A("%s wait sreset_inprogress timeout\n", __func__); + DBG_8723A("%s wait sreset_inprogress timeout\n", + __func__); else DBG_8723A("%s wait sreset_inprogress done\n", __func__); } @@ -558,27 +571,28 @@ int _rtw_pwr_wakeup23a(struct rtw_adapter *padapter, u32 ips_deffer_ms, const ch } /* System suspend is not allowed to wakeup */ - if ((pwrpriv->bInternalAutoSuspend == false) && (true == pwrpriv->bInSuspend)) { + if (pwrpriv->bInternalAutoSuspend == false && + pwrpriv->bInSuspend == true) { ret = _FAIL; goto exit; } /* block??? */ - if ((pwrpriv->bInternalAutoSuspend == true) && (padapter->net_closed == true)) { + if (pwrpriv->bInternalAutoSuspend == true && + padapter->net_closed == true) { ret = _FAIL; goto exit; } /* I think this should be check in IPS, LPS, autosuspend functions... */ - if (check_fwstate(pmlmepriv, _FW_LINKED) == true) - { + if (check_fwstate(pmlmepriv, _FW_LINKED) == true) { ret = _SUCCESS; goto exit; } if (rf_off == pwrpriv->rf_pwrstate) { DBG_8723A("%s call ips_leave23a....\n", __func__); - if (_FAIL == ips_leave23a(padapter)) { + if (ips_leave23a(padapter)== _FAIL) { DBG_8723A("======> ips_leave23a fail.............\n"); ret = _FAIL; goto exit; @@ -604,29 +618,22 @@ exit: int rtw_pm_set_lps23a(struct rtw_adapter *padapter, u8 mode) { - int ret = 0; + int ret = 0; struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; - if (mode < PS_MODE_NUM) - { - if (pwrctrlpriv->power_mgnt != mode) - { + if (mode < PS_MODE_NUM) { + if (pwrctrlpriv->power_mgnt != mode) { if (PS_MODE_ACTIVE == mode) - { LeaveAllPowerSaveMode23a(padapter); - } else - { pwrctrlpriv->LpsIdleCount = 2; - } pwrctrlpriv->power_mgnt = mode; - pwrctrlpriv->bLeisurePs = (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt)?true:false; + pwrctrlpriv->bLeisurePs = + (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt) ? + true:false; } - } - else - { + } else ret = -EINVAL; - } return ret; } @@ -637,17 +644,17 @@ int rtw_pm_set_ips23a(struct rtw_adapter *padapter, u8 mode) if (mode == IPS_NORMAL || mode == IPS_LEVEL_2) { rtw_ips_mode_req(pwrctrlpriv, mode); - DBG_8723A("%s %s\n", __func__, mode == IPS_NORMAL?"IPS_NORMAL":"IPS_LEVEL_2"); + DBG_8723A("%s %s\n", __func__, + mode == IPS_NORMAL?"IPS_NORMAL":"IPS_LEVEL_2"); return 0; - } - else if (mode == IPS_NONE) { + } else if (mode == IPS_NONE) { rtw_ips_mode_req(pwrctrlpriv, mode); DBG_8723A("%s %s\n", __func__, "IPS_NONE"); - if ((padapter->bSurpriseRemoved == 0)&&_FAIL == rtw_pwr_wakeup(padapter)) + if (padapter->bSurpriseRemoved == 0 && + rtw_pwr_wakeup(padapter) == _FAIL) return -EFAULT; - } - else { + } else return -EINVAL; - } + return 0; }