Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
[cascardo/linux.git] / drivers / net / wireless / rtlwifi / rtl8821ae / dm.c
index cb20e23..342678d 100644 (file)
@@ -26,6 +26,7 @@
 #include "../wifi.h"
 #include "../base.h"
 #include "../pci.h"
+#include "../core.h"
 #include "reg.h"
 #include "def.h"
 #include "phy.h"
@@ -519,34 +520,6 @@ void rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(
        }
 }
 
-static void rtl8821ae_dm_diginit(struct ieee80211_hw *hw)
-{
-       struct rtl_priv *rtlpriv = rtl_priv(hw);
-       struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
-
-       dm_digtable->cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f);
-       dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW;
-       dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH;
-       dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW;
-       dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH;
-       dm_digtable->rx_gain_max = DM_DIG_MAX;
-       dm_digtable->rx_gain_min = DM_DIG_MIN;
-       dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT;
-       dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX;
-       dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN;
-       dm_digtable->pre_cck_cca_thres = 0xff;
-       dm_digtable->cur_cck_cca_thres = 0x83;
-       dm_digtable->forbidden_igi = DM_DIG_MIN;
-       dm_digtable->large_fa_hit = 0;
-       dm_digtable->recover_cnt = 0;
-       dm_digtable->dig_dynamic_min = DM_DIG_MIN;
-       dm_digtable->dig_dynamic_min_1 = DM_DIG_MIN;
-       dm_digtable->media_connect_0 = false;
-       dm_digtable->media_connect_1 = false;
-       rtlpriv->dm.dm_initialgain_enable = true;
-       dm_digtable->bt30_cur_igi = 0x32;
-}
-
 void rtl8821ae_dm_init_edca_turbo(struct ieee80211_hw *hw)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
@@ -606,6 +579,7 @@ void rtl8821ae_dm_init(struct ieee80211_hw *hw)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_phy *rtlphy = &rtlpriv->phy;
+       u32 cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f);
 
        spin_lock(&rtlpriv->locks.iqk_lock);
        rtlphy->lck_inprogress = false;
@@ -613,7 +587,7 @@ void rtl8821ae_dm_init(struct ieee80211_hw *hw)
 
        rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER;
        rtl8821ae_dm_common_info_self_init(hw);
-       rtl8821ae_dm_diginit(hw);
+       rtl_dm_diginit(hw, cur_igvalue);
        rtl8821ae_dm_init_rate_adaptive_mask(hw);
        rtl8821ae_dm_init_edca_turbo(hw);
        rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(hw);
@@ -822,7 +796,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw)
        struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
        struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
        struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
-       u8 dig_dynamic_min;
+       u8 dig_min_0;
        u8 dig_max_of_min;
        bool first_connect, first_disconnect;
        u8 dm_dig_max, dm_dig_min, offset;
@@ -837,7 +811,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw)
        }
 
        /*add by Neil Chen to avoid PSD is processing*/
-       dig_dynamic_min = dm_digtable->dig_dynamic_min;
+       dig_min_0 = dm_digtable->dig_min_0;
        first_connect = (mac->link_state >= MAC80211_LINKED) &&
                        (!dm_digtable->media_connect_0);
        first_disconnect = (mac->link_state < MAC80211_LINKED) &&
@@ -876,23 +850,23 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw)
                        offset = 0;
 
                        if (dm_digtable->rssi_val_min - offset < dm_dig_min)
-                               dig_dynamic_min = dm_dig_min;
+                               dig_min_0 = dm_dig_min;
                        else if (dm_digtable->rssi_val_min -
                                offset > dig_max_of_min)
-                               dig_dynamic_min = dig_max_of_min;
+                               dig_min_0 = dig_max_of_min;
                        else
-                               dig_dynamic_min =
+                               dig_min_0 =
                                        dm_digtable->rssi_val_min - offset;
 
                        RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD,
-                                "bOneEntryOnly=TRUE, dig_dynamic_min=0x%x\n",
-                                dig_dynamic_min);
+                                "bOneEntryOnly=TRUE, dig_min_0=0x%x\n",
+                                dig_min_0);
                } else {
-                       dig_dynamic_min = dm_dig_min;
+                       dig_min_0 = dm_dig_min;
                }
        } else {
                dm_digtable->rx_gain_max = dm_dig_max;
-               dig_dynamic_min = dm_dig_min;
+               dig_min_0 = dm_dig_min;
                RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD,
                         "No Link\n");
        }
@@ -925,11 +899,11 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw)
                } else {
                        if (dm_digtable->large_fa_hit < 3) {
                                if ((dm_digtable->forbidden_igi - 1) <
-                                   dig_dynamic_min) {
+                                   dig_min_0) {
                                        dm_digtable->forbidden_igi =
-                                               dig_dynamic_min;
+                                               dig_min_0;
                                        dm_digtable->rx_gain_min =
-                                               dig_dynamic_min;
+                                               dig_min_0;
                                        RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD,
                                                 "Normal Case: At Lower Bound\n");
                                } else {
@@ -1024,7 +998,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw)
        rtl8821ae_dm_write_dig(hw, current_igi);
        dm_digtable->media_connect_0 =
                ((mac->link_state >= MAC80211_LINKED) ? true : false);
-       dm_digtable->dig_dynamic_min = dig_dynamic_min;
+       dm_digtable->dig_min_0 = dig_min_0;
 }
 
 static void rtl8821ae_dm_common_info_self_update(struct ieee80211_hw *hw)
@@ -2078,8 +2052,7 @@ void rtl8821ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw,
        if (rtldm->tx_rate != 0xFF)
                tx_rate = rtl8821ae_hw_rate_to_mrate(hw, rtldm->tx_rate);
 
-       RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
-                "===>rtl8812ae_dm_txpwr_track_set_pwr\n");
+       RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "===>%s\n", __func__);
 
        if (tx_rate != 0xFF) { /* Mimic Modify High Rate BBSwing Limit.*/
                /*CCK*/
@@ -2128,7 +2101,7 @@ void rtl8821ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw,
 
        if (method == BBSWING) {
                RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
-                        "===>rtl8812ae_dm_txpwr_track_set_pwr\n");
+                        "===>%s\n", __func__);
                if (rf_path == RF90_PATH_A) {
                        final_swing_idx[RF90_PATH_A] =
                                (rtldm->ofdm_index[RF90_PATH_A] >
@@ -2260,7 +2233,8 @@ void rtl8821ae_dm_txpower_tracking_callback_thermalmeter(
        rtldm->txpower_trackinginit = true;
 
        RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
-                "===>rtl8812ae_dm_txpower_tracking_callback_thermalmeter,\n pDM_Odm->BbSwingIdxCckBase: %d,pDM_Odm->BbSwingIdxOfdmBase[A]:%d, pDM_Odm->DefaultOfdmIndex: %d\n",
+                "===>%s,\n pDM_Odm->BbSwingIdxCckBase: %d,pDM_Odm->BbSwingIdxOfdmBase[A]:%d, pDM_Odm->DefaultOfdmIndex: %d\n",
+                __func__,
                 rtldm->swing_idx_cck_base,
                 rtldm->swing_idx_ofdm_base[RF90_PATH_A],
                 rtldm->default_ofdm_index);
@@ -2539,8 +2513,7 @@ void rtl8821ae_dm_txpower_tracking_callback_thermalmeter(
                }
        }
 
-       RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
-                "<===rtl8812ae_dm_txpower_tracking_callback_thermalmeter\n");
+       RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "<===%s\n", __func__);
 }
 
 void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw)