2015-06-04 00:48:24

by Taehee Yoo

[permalink] [raw]
Subject: [PATCH] rtlwifi: rtl8192cu: Fix performance issue.

After physical reconnect, the rtl8192cu chipset shows low
transmission rates.It cause is that variable "iqk_initialized"
do not de-initialized. So I add this code.

Signed-off-by: Taehee Yoo <[email protected]>
---
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
index 1898596..6a4ef05 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
@@ -987,7 +987,6 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
struct rtl_phy *rtlphy = &(rtlpriv->phy);
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
int err = 0;
- static bool iqk_initialized;
unsigned long flags;

/* As this function can take a very long time (up to 350 ms)
@@ -1038,11 +1037,11 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr);
if (ppsc->rfpwr_state == ERFON) {
rtl92c_phy_set_rfpath_switch(hw, 1);
- if (iqk_initialized) {
+ if (rtlphy->iqk_initialized) {
rtl92c_phy_iq_calibrate(hw, true);
} else {
rtl92c_phy_iq_calibrate(hw, false);
- iqk_initialized = true;
+ rtlphy->iqk_initialized = true;
}
rtl92c_dm_check_txpower_tracking(hw);
rtl92c_phy_lc_calibrate(hw);
@@ -1391,6 +1390,9 @@ void rtl92cu_card_disable(struct ieee80211_hw *hw)
_CardDisableHWSM(hw);
else
_CardDisableWithoutHWSM(hw);
+
+ /* after power off we should do iqk again */
+ rtlpriv->phy.iqk_initialized = false;
}

void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid)
--
2.1.4



2015-06-05 17:41:00

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: rtl8192cu: Fix performance issue.

On 06/03/2015 07:47 PM, Taehee Yoo wrote:
> After physical reconnect, the rtl8192cu chipset shows low
> transmission rates.It cause is that variable "iqk_initialized"
> do not de-initialized. So I add this code.
>
> Signed-off-by: Taehee Yoo <[email protected]>
> ---
> drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)

I like this patch very much. Getting rid of a static variable is always good.

Acked-by: Larry Finger <[email protected]>

Thanks,

Larry

>
> diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
> index 1898596..6a4ef05 100644
> --- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
> +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
> @@ -987,7 +987,6 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
> struct rtl_phy *rtlphy = &(rtlpriv->phy);
> struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
> int err = 0;
> - static bool iqk_initialized;
> unsigned long flags;
>
> /* As this function can take a very long time (up to 350 ms)
> @@ -1038,11 +1037,11 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
> rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr);
> if (ppsc->rfpwr_state == ERFON) {
> rtl92c_phy_set_rfpath_switch(hw, 1);
> - if (iqk_initialized) {
> + if (rtlphy->iqk_initialized) {
> rtl92c_phy_iq_calibrate(hw, true);
> } else {
> rtl92c_phy_iq_calibrate(hw, false);
> - iqk_initialized = true;
> + rtlphy->iqk_initialized = true;
> }
> rtl92c_dm_check_txpower_tracking(hw);
> rtl92c_phy_lc_calibrate(hw);
> @@ -1391,6 +1390,9 @@ void rtl92cu_card_disable(struct ieee80211_hw *hw)
> _CardDisableHWSM(hw);
> else
> _CardDisableWithoutHWSM(hw);
> +
> + /* after power off we should do iqk again */
> + rtlpriv->phy.iqk_initialized = false;
> }
>
> void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid)
>


2015-06-08 08:48:56

by Kalle Valo

[permalink] [raw]
Subject: Re: rtlwifi: rtl8192cu: Fix performance issue.


> After physical reconnect, the rtl8192cu chipset shows low
> transmission rates.It cause is that variable "iqk_initialized"
> do not de-initialized. So I add this code.
>
> Signed-off-by: Taehee Yoo <[email protected]>
> Acked-by: Larry Finger <[email protected]>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo