gain control when no beacon was received in the connected state.

This avoids sporadic "Connection to AP ... lost" errors.

Signed-off-by: Bernd Edlinger <bernd.edlin...@hotmail.de>
---
  drivers/net/wireless/realtek/rtlwifi/core.c         | 2 ++
  drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c | 8 ++++++++
  2 files changed, 10 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c 
b/drivers/net/wireless/realtek/rtlwifi/core.c
index 4bf7967..ce23339 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -1957,5 +1957,7 @@ void rtl_dm_diginit(struct ieee80211_hw *hw, u32 
cur_igvalue)
        dm_digtable->bt30_cur_igi = 0x32;
        dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX;
        dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_LOWRSSI;
+       dm_digtable->pre_cck_fa_state = 0;
+       dm_digtable->cur_cck_fa_state = 0;
  }
  EXPORT_SYMBOL(rtl_dm_diginit);
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c 
b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c
index 42a6fba..902b944 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c
@@ -151,8 +151,14 @@ static u8 rtl8723e_dm_initial_gain_min_pwdb(struct 
ieee80211_hw *hw)
  {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
+       struct rtl_mac *mac = rtl_mac(rtlpriv);
        long rssi_val_min = 0;
  
+       if (mac->link_state == MAC80211_LINKED &&
+           mac->opmode == NL80211_IFTYPE_STATION &&
+           rtlpriv->link_info.bcn_rx_inperiod == 0)
+               return 0;
+
        if ((dm_digtable->curmultista_cstate == DIG_MULTISTA_CONNECT) &&
            (dm_digtable->cursta_cstate == DIG_STA_CONNECT)) {
                if (rtlpriv->dm.entry_min_undec_sm_pwdb != 0)
@@ -417,6 +423,8 @@ static void rtl8723e_dm_cck_packet_detection_thresh(struct 
ieee80211_hw *hw)
                } else {
                        rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0xcd);
                        rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x47);
+                       dm_digtable->pre_cck_fa_state = 0;
+                       dm_digtable->cur_cck_fa_state = 0;
  
                }
                dm_digtable->pre_cck_pd_state = dm_digtable->cur_cck_pd_state;
-- 
1.9.1

Reply via email to