All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Larry Finger <Larry.Finger@lwfinger.net>,
	"John W. Linville" <linville@tuxdriver.com>
Subject: [PATCH 3.13 038/140] rtlwifi: rtl8192c: Update dynamic gain calculations
Date: Tue,  4 Feb 2014 13:10:25 -0800	[thread overview]
Message-ID: <20140204211038.055031147@linuxfoundation.org> (raw)
In-Reply-To: <20140204211036.967663852@linuxfoundation.org>

3.13-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Larry Finger <Larry.Finger@lwfinger.net>

commit 796e453436b183057e2d7d9b2bcff88d0bf53ba7 upstream.

The vendor driver contained a number of improvements in the gain settings
for the rtl8192c{e,u} devices. This patch implements them in the kernel
driver.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c |  291 ++++++++++++++--------
 1 file changed, 193 insertions(+), 98 deletions(-)

--- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
@@ -216,7 +216,12 @@ static void rtl92c_dm_diginit(struct iee
 	dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX;
 	dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN;
 	dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX;
-	dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX;
+	dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_LowRssi;
+
+	dm_digtable->forbidden_igi = DM_DIG_MIN;
+	dm_digtable->large_fa_hit = 0;
+	dm_digtable->recover_cnt = 0;
+	dm_digtable->dig_dynamic_min  = 0x25;
 }
 
 static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw)
@@ -242,7 +247,9 @@ static u8 rtl92c_dm_initial_gain_min_pwd
 		rssi_val_min = rtlpriv->dm.entry_min_undec_sm_pwdb;
 	}
 
-	return (u8) rssi_val_min;
+	if (rssi_val_min > 100)
+		rssi_val_min = 100;
+	return (u8)rssi_val_min;
 }
 
 static void rtl92c_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw)
@@ -260,9 +267,17 @@ static void rtl92c_dm_false_alarm_counte
 
 	ret_value = rtl_get_bbreg(hw, ROFDM_PHYCOUNTER3, MASKDWORD);
 	falsealm_cnt->cnt_mcs_fail = (ret_value & 0xffff);
+
+	 ret_value = rtl_get_bbreg(hw, ROFDM0_FRAMESYNC, MASKDWORD);
+	falsealm_cnt->cnt_fast_fsync_fail = (ret_value & 0xffff);
+	falsealm_cnt->cnt_sb_search_fail = ((ret_value & 0xffff0000) >> 16);
+
 	falsealm_cnt->cnt_ofdm_fail = falsealm_cnt->cnt_parity_fail +
-	    falsealm_cnt->cnt_rate_illegal +
-	    falsealm_cnt->cnt_crc8_fail + falsealm_cnt->cnt_mcs_fail;
+				      falsealm_cnt->cnt_rate_illegal +
+				      falsealm_cnt->cnt_crc8_fail +
+				      falsealm_cnt->cnt_mcs_fail +
+				      falsealm_cnt->cnt_fast_fsync_fail +
+				      falsealm_cnt->cnt_sb_search_fail;
 
 	rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, BIT(14), 1);
 	ret_value = rtl_get_bbreg(hw, RCCK0_FACOUNTERLOWER, MASKBYTE0);
@@ -307,12 +322,14 @@ static void rtl92c_dm_ctrl_initgain_by_f
 		value_igi++;
 	else if (rtlpriv->falsealm_cnt.cnt_all >= DM_DIG_FA_TH2)
 		value_igi += 2;
+
 	if (value_igi > DM_DIG_FA_UPPER)
 		value_igi = DM_DIG_FA_UPPER;
 	else if (value_igi < DM_DIG_FA_LOWER)
 		value_igi = DM_DIG_FA_LOWER;
+
 	if (rtlpriv->falsealm_cnt.cnt_all > 10000)
-		value_igi = 0x32;
+		value_igi = DM_DIG_FA_UPPER;
 
 	dm_digtable->cur_igvalue = value_igi;
 	rtl92c_dm_write_dig(hw);
@@ -322,32 +339,80 @@ static void rtl92c_dm_ctrl_initgain_by_r
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 	struct dig_t *digtable = &rtlpriv->dm_digtable;
+	u32 isbt;
 
-	if (rtlpriv->falsealm_cnt.cnt_all > digtable->fa_highthresh) {
-		if ((digtable->back_val - 2) < digtable->back_range_min)
-			digtable->back_val = digtable->back_range_min;
-		else
-			digtable->back_val -= 2;
-	} else if (rtlpriv->falsealm_cnt.cnt_all < digtable->fa_lowthresh) {
-		if ((digtable->back_val + 2) > digtable->back_range_max)
-			digtable->back_val = digtable->back_range_max;
-		else
-			digtable->back_val += 2;
+	/* modify DIG lower bound, deal with abnorally large false alarm */
+	if (rtlpriv->falsealm_cnt.cnt_all > 10000) {
+		digtable->large_fa_hit++;
+		if (digtable->forbidden_igi < digtable->cur_igvalue) {
+			digtable->forbidden_igi = digtable->cur_igvalue;
+			digtable->large_fa_hit = 1;
+		}
+
+		if (digtable->large_fa_hit >= 3) {
+			if ((digtable->forbidden_igi + 1) >
+			    digtable->rx_gain_max)
+				digtable->rx_gain_min = digtable->rx_gain_max;
+			else
+				digtable->rx_gain_min = (digtable->forbidden_igi + 1);
+			digtable->recover_cnt = 3600; /* 3600=2hr */
+		}
+	} else {
+		/* Recovery mechanism for IGI lower bound */
+		if (digtable->recover_cnt != 0) {
+			digtable->recover_cnt--;
+		} else {
+			if (digtable->large_fa_hit == 0) {
+				if ((digtable->forbidden_igi-1) < DM_DIG_MIN) {
+					digtable->forbidden_igi = DM_DIG_MIN;
+					digtable->rx_gain_min = DM_DIG_MIN;
+				} else {
+					digtable->forbidden_igi--;
+					digtable->rx_gain_min = digtable->forbidden_igi + 1;
+				}
+			} else if (digtable->large_fa_hit == 3) {
+				digtable->large_fa_hit = 0;
+			}
+		}
 	}
+	if (rtlpriv->falsealm_cnt.cnt_all < 250) {
+		isbt = rtl_read_byte(rtlpriv, 0x4fd) & 0x01;
 
-	if ((digtable->rssi_val_min + 10 - digtable->back_val) >
-	    digtable->rx_gain_max)
+		if (!isbt) {
+			if (rtlpriv->falsealm_cnt.cnt_all >
+			    digtable->fa_lowthresh) {
+				if ((digtable->back_val - 2) <
+				   digtable->back_range_min)
+					digtable->back_val = digtable->back_range_min;
+				else
+					digtable->back_val -= 2;
+			} else if (rtlpriv->falsealm_cnt.cnt_all <
+				   digtable->fa_lowthresh) {
+				if ((digtable->back_val + 2) >
+				    digtable->back_range_max)
+					digtable->back_val = digtable->back_range_max;
+				else
+					digtable->back_val += 2;
+			}
+		} else {
+			digtable->back_val = DM_DIG_BACKOFF_DEFAULT;
+		}
+	} else {
+		/* Adjust initial gain by false alarm */
+		if (rtlpriv->falsealm_cnt.cnt_all > 1000)
+			digtable->cur_igvalue = digtable->pre_igvalue + 2;
+		else if (rtlpriv->falsealm_cnt.cnt_all > 750)
+			digtable->cur_igvalue = digtable->pre_igvalue + 1;
+		else if (rtlpriv->falsealm_cnt.cnt_all < 500)
+			digtable->cur_igvalue = digtable->pre_igvalue - 1;
+	}
+
+	/* Check initial gain by upper/lower bound */
+	if (digtable->cur_igvalue > digtable->rx_gain_max)
 		digtable->cur_igvalue = digtable->rx_gain_max;
-	else if ((digtable->rssi_val_min + 10 -
-		  digtable->back_val) < digtable->rx_gain_min)
-		digtable->cur_igvalue = digtable->rx_gain_min;
-	else
-		digtable->cur_igvalue = digtable->rssi_val_min + 10 -
-		    digtable->back_val;
 
-	RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
-		 "rssi_val_min = %x back_val %x\n",
-		 digtable->rssi_val_min, digtable->back_val);
+	if (digtable->cur_igvalue < digtable->rx_gain_min)
+		digtable->cur_igvalue = digtable->rx_gain_min;
 
 	rtl92c_dm_write_dig(hw);
 }
@@ -365,7 +430,7 @@ static void rtl92c_dm_initial_gain_multi
 		multi_sta = true;
 
 	if (!multi_sta ||
-	    dm_digtable->cursta_cstate != DIG_STA_DISCONNECT) {
+	    dm_digtable->cursta_cstate == DIG_STA_DISCONNECT) {
 		initialized = false;
 		dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX;
 		return;
@@ -411,7 +476,6 @@ static void rtl92c_dm_initial_gain_sta(s
 	RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
 		 "presta_cstate = %x, cursta_cstate = %x\n",
 		 dm_digtable->presta_cstate, dm_digtable->cursta_cstate);
-
 	if (dm_digtable->presta_cstate == dm_digtable->cursta_cstate ||
 	    dm_digtable->cursta_cstate == DIG_STA_BEFORE_CONNECT ||
 	    dm_digtable->cursta_cstate == DIG_STA_CONNECT) {
@@ -419,6 +483,8 @@ static void rtl92c_dm_initial_gain_sta(s
 		if (dm_digtable->cursta_cstate != DIG_STA_DISCONNECT) {
 			dm_digtable->rssi_val_min =
 			    rtl92c_dm_initial_gain_min_pwdb(hw);
+			if (dm_digtable->rssi_val_min > 100)
+				dm_digtable->rssi_val_min = 100;
 			rtl92c_dm_ctrl_initgain_by_rssi(hw);
 		}
 	} else {
@@ -434,11 +500,12 @@ static void rtl92c_dm_initial_gain_sta(s
 static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
-	struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
 	struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
 
 	if (dm_digtable->cursta_cstate == DIG_STA_CONNECT) {
 		dm_digtable->rssi_val_min = rtl92c_dm_initial_gain_min_pwdb(hw);
+		if (dm_digtable->rssi_val_min > 100)
+			dm_digtable->rssi_val_min = 100;
 
 		if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LowRssi) {
 			if (dm_digtable->rssi_val_min <= 25)
@@ -460,48 +527,14 @@ static void rtl92c_dm_cck_packet_detecti
 	}
 
 	if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) {
-		if (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) {
-			if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800)
-				dm_digtable->cur_cck_fa_state =
-				    CCK_FA_STAGE_High;
-			else
-				dm_digtable->cur_cck_fa_state = CCK_FA_STAGE_Low;
-
-			if (dm_digtable->pre_cck_fa_state !=
-			    dm_digtable->cur_cck_fa_state) {
-				if (dm_digtable->cur_cck_fa_state ==
-				    CCK_FA_STAGE_Low)
-					rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2,
-						      0x83);
-				else
-					rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2,
-						      0xcd);
-
-				dm_digtable->pre_cck_fa_state =
-				    dm_digtable->cur_cck_fa_state;
-			}
-
-			rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x40);
-
-			if (IS_92C_SERIAL(rtlhal->version))
-				rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT,
-					      MASKBYTE2, 0xd7);
-		} else {
+		if ((dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) ||
+		    (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_MAX))
+			rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0x83);
+		else
 			rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0xcd);
-			rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x47);
 
-			if (IS_92C_SERIAL(rtlhal->version))
-				rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT,
-					      MASKBYTE2, 0xd3);
-		}
 		dm_digtable->pre_cck_pd_state = dm_digtable->cur_cck_pd_state;
 	}
-
-	RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "CCKPDStage=%x\n",
-		 dm_digtable->cur_cck_pd_state);
-
-	RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "is92C=%x\n",
-		 IS_92C_SERIAL(rtlhal->version));
 }
 
 static void rtl92c_dm_ctrl_initgain_by_twoport(struct ieee80211_hw *hw)
@@ -518,6 +551,8 @@ static void rtl92c_dm_ctrl_initgain_by_t
 	else
 		dm_digtable->cursta_cstate = DIG_STA_DISCONNECT;
 
+	dm_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT;
+
 	rtl92c_dm_initial_gain_sta(hw);
 	rtl92c_dm_initial_gain_multi_sta(hw);
 	rtl92c_dm_cck_packet_detection_thresh(hw);
@@ -529,23 +564,26 @@ static void rtl92c_dm_ctrl_initgain_by_t
 static void rtl92c_dm_dig(struct ieee80211_hw *hw)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
-	struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
 
 	if (rtlpriv->dm.dm_initialgain_enable == false)
 		return;
-	if (dm_digtable->dig_enable_flag == false)
+	if (!rtlpriv->dm.dm_flag & DYNAMIC_FUNC_DIG)
 		return;
 
 	rtl92c_dm_ctrl_initgain_by_twoport(hw);
-
 }
 
 static void rtl92c_dm_init_dynamic_txpower(struct ieee80211_hw *hw)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 
-	rtlpriv->dm.dynamic_txpower_enable = false;
-
+	if (rtlpriv->rtlhal.interface == INTF_USB &&
+	    rtlpriv->rtlhal.board_type & 0x1) {
+		dm_savepowerindex(hw);
+		rtlpriv->dm.dynamic_txpower_enable = true;
+	} else {
+		rtlpriv->dm.dynamic_txpower_enable = false;
+	}
 	rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL;
 	rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL;
 }
@@ -560,9 +598,14 @@ void rtl92c_dm_write_dig(struct ieee8021
 		 dm_digtable->cur_igvalue, dm_digtable->pre_igvalue,
 		 dm_digtable->back_val);
 
-	dm_digtable->cur_igvalue += 2;
-	if (dm_digtable->cur_igvalue > 0x3f)
-		dm_digtable->cur_igvalue = 0x3f;
+	if (rtlpriv->rtlhal.interface == INTF_USB &&
+	    !dm_digtable->dig_enable_flag) {
+		dm_digtable->pre_igvalue = 0x17;
+		return;
+	}
+	dm_digtable->cur_igvalue -= 1;
+	if (dm_digtable->cur_igvalue < DM_DIG_MIN)
+		dm_digtable->cur_igvalue = DM_DIG_MIN;
 
 	if (dm_digtable->pre_igvalue != dm_digtable->cur_igvalue) {
 		rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f,
@@ -572,11 +615,47 @@ void rtl92c_dm_write_dig(struct ieee8021
 
 		dm_digtable->pre_igvalue = dm_digtable->cur_igvalue;
 	}
+	RT_TRACE(rtlpriv, COMP_DIG, DBG_WARNING,
+		 "dig values 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
+		 dm_digtable->cur_igvalue, dm_digtable->pre_igvalue,
+		 dm_digtable->rssi_val_min, dm_digtable->back_val,
+		 dm_digtable->rx_gain_max, dm_digtable->rx_gain_min,
+		 dm_digtable->large_fa_hit, dm_digtable->forbidden_igi);
 }
 EXPORT_SYMBOL(rtl92c_dm_write_dig);
 
 static void rtl92c_dm_pwdb_monitor(struct ieee80211_hw *hw)
 {
+	struct rtl_priv *rtlpriv = rtl_priv(hw);
+	struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
+	long tmpentry_max_pwdb = 0, tmpentry_min_pwdb = 0xff;
+
+	if (mac->link_state != MAC80211_LINKED)
+		return;
+
+	if (mac->opmode == NL80211_IFTYPE_ADHOC ||
+	    mac->opmode == NL80211_IFTYPE_AP) {
+		/* TODO: Handle ADHOC and AP Mode */
+	}
+
+	if (tmpentry_max_pwdb != 0)
+		rtlpriv->dm.entry_max_undec_sm_pwdb = tmpentry_max_pwdb;
+	else
+		rtlpriv->dm.entry_max_undec_sm_pwdb = 0;
+
+	if (tmpentry_min_pwdb != 0xff)
+		rtlpriv->dm.entry_min_undec_sm_pwdb = tmpentry_min_pwdb;
+	else
+		rtlpriv->dm.entry_min_undec_sm_pwdb = 0;
+
+/* TODO:
+ *	if (mac->opmode == NL80211_IFTYPE_STATION) {
+ *		if (rtlpriv->rtlhal.fw_ready) {
+ *			u32 param = (u32)(rtlpriv->dm.undec_sm_pwdb << 16);
+ *			rtl8192c_set_rssi_cmd(hw, param);
+ *		}
+ *	}
+ */
 }
 
 void rtl92c_dm_init_edca_turbo(struct ieee80211_hw *hw)
@@ -786,6 +865,7 @@ static void rtl92c_dm_txpower_tracking_c
 				rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i];
 			rtlpriv->dm.cck_index = cck_index_old;
 		}
+		/* Handle USB High PA boards */
 
 		delta = (thermalvalue > rtlpriv->dm.thermalvalue) ?
 		    (thermalvalue - rtlpriv->dm.thermalvalue) :
@@ -1176,22 +1256,22 @@ void rtl92c_dm_rf_saving(struct ieee8021
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 	struct ps_t *dm_pstable = &rtlpriv->dm_pstable;
-	static u8 initialize;
-	static u32 reg_874, reg_c70, reg_85c, reg_a74;
 
-	if (initialize == 0) {
-		reg_874 = (rtl_get_bbreg(hw, RFPGA0_XCD_RFINTERFACESW,
-					 MASKDWORD) & 0x1CC000) >> 14;
+	if (!rtlpriv->reg_init) {
+		rtlpriv->reg_874 = (rtl_get_bbreg(hw,
+						  RFPGA0_XCD_RFINTERFACESW,
+						  MASKDWORD) & 0x1CC000) >> 14;
 
-		reg_c70 = (rtl_get_bbreg(hw, ROFDM0_AGCPARAMETER1,
-					 MASKDWORD) & BIT(3)) >> 3;
+		rtlpriv->reg_c70 = (rtl_get_bbreg(hw, ROFDM0_AGCPARAMETER1,
+				    MASKDWORD) & BIT(3)) >> 3;
 
-		reg_85c = (rtl_get_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL,
-					 MASKDWORD) & 0xFF000000) >> 24;
+		rtlpriv->reg_85c = (rtl_get_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL,
+				    MASKDWORD) & 0xFF000000) >> 24;
 
-		reg_a74 = (rtl_get_bbreg(hw, 0xa74, MASKDWORD) & 0xF000) >> 12;
+		rtlpriv->reg_a74 = (rtl_get_bbreg(hw, 0xa74, MASKDWORD) &
+				    0xF000) >> 12;
 
-		initialize = 1;
+		rtlpriv->reg_init = true;
 	}
 
 	if (!bforce_in_normal) {
@@ -1228,12 +1308,12 @@ void rtl92c_dm_rf_saving(struct ieee8021
 			rtl_set_bbreg(hw, 0x818, BIT(28), 0x1);
 		} else {
 			rtl_set_bbreg(hw, RFPGA0_XCD_RFINTERFACESW,
-				      0x1CC000, reg_874);
+				      0x1CC000, rtlpriv->reg_874);
 			rtl_set_bbreg(hw, ROFDM0_AGCPARAMETER1, BIT(3),
-				      reg_c70);
+				      rtlpriv->reg_c70);
 			rtl_set_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL, 0xFF000000,
-				      reg_85c);
-			rtl_set_bbreg(hw, 0xa74, 0xF000, reg_a74);
+				      rtlpriv->reg_85c);
+			rtl_set_bbreg(hw, 0xa74, 0xF000, rtlpriv->reg_a74);
 			rtl_set_bbreg(hw, 0x818, BIT(28), 0x0);
 		}
 
@@ -1249,6 +1329,7 @@ static void rtl92c_dm_dynamic_bb_powersa
 	struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
 	struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
 
+	/* Determine the minimum RSSI */
 	if (((mac->link_state == MAC80211_NOLINK)) &&
 	    (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) {
 		dm_pstable->rssi_val_min = 0;
@@ -1277,6 +1358,7 @@ static void rtl92c_dm_dynamic_bb_powersa
 			 dm_pstable->rssi_val_min);
 	}
 
+	/* Power Saving for 92C */
 	if (IS_92C_SERIAL(rtlhal->version))
 		;/* rtl92c_dm_1r_cca(hw); */
 	else
@@ -1288,12 +1370,23 @@ void rtl92c_dm_init(struct ieee80211_hw
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 
 	rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER;
+	rtlpriv->dm.dm_flag = DYNAMIC_FUNC_DISABLE | DYNAMIC_FUNC_DIG;
+	rtlpriv->dm.undec_sm_pwdb = -1;
+	rtlpriv->dm.undec_sm_cck = -1;
+	rtlpriv->dm.dm_initialgain_enable = true;
 	rtl92c_dm_diginit(hw);
+
+	rtlpriv->dm.dm_flag |= HAL_DM_HIPWR_DISABLE;
 	rtl92c_dm_init_dynamic_txpower(hw);
+
 	rtl92c_dm_init_edca_turbo(hw);
 	rtl92c_dm_init_rate_adaptive_mask(hw);
+	rtlpriv->dm.dm_flag |= DYNAMIC_FUNC_SS;
 	rtl92c_dm_initialize_txpower_tracking(hw);
 	rtl92c_dm_init_dynamic_bb_powersaving(hw);
+
+	rtlpriv->dm.ofdm_pkt_cnt = 0;
+	rtlpriv->dm.dm_rssi_sel = RSSI_DEFAULT;
 }
 EXPORT_SYMBOL(rtl92c_dm_init);
 
@@ -1344,7 +1437,7 @@ void rtl92c_dm_dynamic_txpower(struct ie
 	}
 
 	if (undec_sm_pwdb >= TX_POWER_NEAR_FIELD_THRESH_LVL2) {
-		rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL1;
+		rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL2;
 		RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
 			 "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n");
 	} else if ((undec_sm_pwdb < (TX_POWER_NEAR_FIELD_THRESH_LVL2 - 3)) &&
@@ -1364,8 +1457,16 @@ void rtl92c_dm_dynamic_txpower(struct ie
 			 "PHY_SetTxPowerLevel8192S() Channel = %d\n",
 			 rtlphy->current_channel);
 		rtl92c_phy_set_txpower_level(hw, rtlphy->current_channel);
+		if (rtlpriv->dm.dynamic_txhighpower_lvl ==
+		    TXHIGHPWRLEVEL_NORMAL)
+			dm_restorepowerindex(hw);
+		else if (rtlpriv->dm.dynamic_txhighpower_lvl ==
+			 TXHIGHPWRLEVEL_LEVEL1)
+			dm_writepowerindex(hw, 0x14);
+		else if (rtlpriv->dm.dynamic_txhighpower_lvl ==
+			 TXHIGHPWRLEVEL_LEVEL2)
+			dm_writepowerindex(hw, 0x10);
 	}
-
 	rtlpriv->dm.last_dtp_lvl = rtlpriv->dm.dynamic_txhighpower_lvl;
 }
 
@@ -1436,12 +1537,6 @@ u8 rtl92c_bt_rssi_state_change(struct ie
 	else
 		curr_bt_rssi_state &= (~BT_RSSI_STATE_SPECIAL_LOW);
 
-	/* Set Tx Power according to BT status. */
-	if (undec_sm_pwdb >= 30)
-		curr_bt_rssi_state |=  BT_RSSI_STATE_TXPOWER_LOW;
-	else if (undec_sm_pwdb < 25)
-		curr_bt_rssi_state &= (~BT_RSSI_STATE_TXPOWER_LOW);
-
 	/* Check BT state related to BT_Idle in B/G mode. */
 	if (undec_sm_pwdb < 15)
 		curr_bt_rssi_state |=  BT_RSSI_STATE_BG_EDCA_LOW;



  parent reply	other threads:[~2014-02-04 21:48 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-04 21:09 [PATCH 3.13 000/140] 3.13.2-stable review Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 001/140] e752x_edac: Fix pci_dev usage count Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 002/140] mm/mempolicy.c: fix mempolicy printing in numa_maps Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 003/140] x86, x32: Correct invalid use of user timespec in the kernel Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 004/140] xen/pci: Fix build on non-x86 Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 005/140] x86/efi: Fix off-by-one bug in EFI Boot Services reservation Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 006/140] x86: Add check for number of available vectors before CPU down Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 007/140] KVM: x86: limit PIT timer frequency Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 008/140] x86, kvm: cache the base of the KVM cpuid leaves Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 009/140] x86, kvm: correctly access the KVM_CPUID_FEATURES leaf at 0x40000101 Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 010/140] usb: chipidea: add freescale imx28 special write register method Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 011/140] usb: chipidea: imx: set CI_HDRC_IMX28_WRITE_FIX for imx28 Greg Kroah-Hartman
2014-02-04 21:09 ` [PATCH 3.13 012/140] usb: chipidea: need to mask INT_STATUS when write otgsc Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 013/140] usb: chipidea: udc: using MultO at TD as real mult value for ISO-TX Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 016/140] usb: dwc3: fix the glue drivers using the nop phy Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 018/140] usb: option: add new zte 3g modem pids to option driver Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 020/140] USB: cypress_m8: fix ring-indicator detection and reporting Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 021/140] USB: ftdi_sio: added CS5 quirk for broken smartcard readers Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 022/140] USB: Nokia 502 is an unusual device Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 023/140] usb: xhci: Check for XHCI_PLAT in xhci_cleanup_msix() Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 024/140] USB: fix race between hub_disconnect and recursively_mark_NOTATTACHED Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 025/140] usb: ehci: add freescale imx28 special write register method Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 026/140] rtlwifi: rtl8192cu: Add new device ID Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 027/140] rtlwifi: Update beacon statistics for USB driver Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 028/140] rtlwifi: rtl8192c: Prevent reconnect attempts if not connected Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 029/140] rtlwifi: rtl8192cu: Add new firmware Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 030/140] rtlwifi: Redo register save locations Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 031/140] rtlwifi: Set the link state Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 032/140] rtlwifi: rtl8192c: Add new definitions in the dm_common header Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 033/140] rtlwifi: Increase the RX queue length for USB drivers Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 034/140] rtlwifi: rtl8192c: Add routines to save/restore power index registers Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 035/140] rtlwifi: rtl8192cu: Update the " Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 036/140] rtlwifi: rtl8192cu: Fix some code in RF handling Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 037/140] rtlwifi: Add missing code to PWDB statics routine Greg Kroah-Hartman
2014-02-04 21:10 ` Greg Kroah-Hartman [this message]
2014-02-04 21:10 ` [PATCH 3.13 039/140] rtlwifi: rtl8188ee: Fix typo in code Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 040/140] mwifiex: add missing endian conversion for fw_tsf Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 041/140] mwifiex: fix wrong 11ac bits setting in fw_cap_info Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 042/140] iwlwifi: pcie: enable oscillator for L1 exit Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 043/140] iwlwifi: mvm: fix missing cleanup in .start() error path Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 044/140] b43: Fix lockdep splat Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 045/140] b43: Fix unload oops if firmware is not available Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 046/140] b43legacy: " Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 047/140] b43: fix the wrong assignment of status.freq in b43_rx() Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 048/140] ath9k: Use correct channel for RX packets Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 049/140] ath9k: Disable cross-band FCC Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 050/140] staging/lustre/ptlrpc: Fix a crash when dereferencing NULL pointer Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 051/140] staging: r8712u: Set device type to wlan Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 052/140] staging: vt6656: [BUG] BBvUpdatePreEDThreshold Always set sensitivity on bScanning Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 053/140] staging: vt6656: CARDqGetNextTBTT correct uLowNextTBTT Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 054/140] mei: use hbm idle state to prevent spurious resets Greg Kroah-Hartman
2014-02-06 21:27   ` Paul Bolle
2014-02-06 21:39     ` Greg Kroah-Hartman
2014-02-06 21:53       ` [PATCH 3.13] mei: mei_hbm_dispatch() returns void Paul Bolle
2014-02-07  0:26         ` Winkler, Tomas
2014-02-07  0:26           ` Winkler, Tomas
2014-02-04 21:10 ` [PATCH 3.13 055/140] tty/serial: at91: Handle shutdown more safely Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 056/140] tty/serial: at91: fix race condition in atmel_serial_remove Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 057/140] tty/serial: at91: reset rx_ring when port is shutdown Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 058/140] tty/serial: at91: disable uart timer at start of shutdown Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 059/140] ARM: at91: at91sam9g45: set default mmc pinctrl-names Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 060/140] ARM: at91: smc: bug fix in sam9_smc_cs_read() Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 061/140] hwmon: (k10temp) Add support for Kaveri CPUs Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 062/140] xhci: Avoid infinite loop when sg urb requires too many trbs Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 063/140] xhci: Set scatter-gather limit to avoid failed block writes Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 064/140] uio: fix devm_request_irq usage Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 065/140] serial: add support for 200 v3 series Titan card Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 066/140] serial: 8250: Fix initialisation of Quatech cards with the AMCC PCI chip Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 067/140] serial: 8250: enable UART_BUG_NOMSR for Tegra Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 068/140] s390/compat: fix PSW32_USER_BITS definition Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 069/140] KVM: s390: Always store status during SIGP STOP_AND_STORE_STATUS Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 070/140] KVM: s390: fix diagnose code extraction Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 071/140] KVM: s390: ioeventfd: ignore leftmost bits Greg Kroah-Hartman
2014-02-04 21:10 ` [PATCH 3.13 072/140] s390/uapi: fix struct statfs64 definition Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 073/140] parport: parport_pc: remove double PCI ID for NetMos Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 074/140] rtc-cmos: Add an alarm disable quirk Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 075/140] rtc: max8907: weekday encoding fixes Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 076/140] misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 077/140] pinctrl: sunxi: Honor GPIO output initial vaules Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 078/140] perf kvm: Fix kvm report without guestmount Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 079/140] mfd: max77686: Fix regmap resource leak on driver remove Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 080/140] ASoC: adau1701: Fix ADAU1701_SEROCTL_WORD_LEN_16 constant Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 081/140] ASoC: codec: tlv320aic32x4: Fix regmap range config Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 082/140] ASoC: tlv320aic32x4: Fix regmap range_min Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 083/140] ASoC: wm5110: Extend SYSCLK patch file for rev D Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 084/140] ALSA: rme9652: fix a missing comma in channel_map_9636_ds[] Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 085/140] ALSA: hda - Correct AD1986A 3stack pin configs Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 086/140] ALSA: hda - Dont create duplicated ctls for loopback paths Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 087/140] ALSA: Enable CONFIG_ZONE_DMA for smaller PCI DMA masks Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 088/140] ALSA: hda - automute via amp instead of pinctl on some AIO models Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 089/140] ALSA: hda - add headset mic detect quirks for some Dell machines Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 090/140] ALSA: bits vs bytes bug in snd_card_create() Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 092/140] ALSA: hda - add headset mic detect quirks for another Dell laptop Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 093/140] ALSA: hda/hdmi - allow PIN_OUT to be dynamically enabled Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 094/140] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 095/140] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 096/140] ima: change the default hash algorithm to SHA1 in ima_eventdigest_ng_init() Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 097/140] ata: sata_mv: introduce compatible string "marvell, armada-370-sata" Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 098/140] ata: sata_mv: fix disk hotplug for Armada 370/XP SoCs Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 099/140] ARM: mvebu: update the SATA compatible string for Armada 370/XP Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 100/140] libata: disable LPM for some WD SATA-I devices Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 101/140] ext4: avoid clearing beyond i_blocks when truncating an inline data file Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 102/140] vfs: Remove second variable named error in __dentry_path Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 103/140] vfs: Is mounted should be testing mnt_ns for NULL or error Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 104/140] bcache: Data corruption fix Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 105/140] zram: fix race between reset and flushing pending work Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 107/140] ARM: mvebu: Add support to get the ID and the revision of a SoC Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 108/140] ARM: mvebu: Add quirk for i2c for the OpenBlocks AX3-4 board Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 109/140] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 110/140] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 111/140] i2c: piix4: Add support for AMD ML and CZ SMBus changes Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 113/140] ip_tunnel: clear IPCB in ip_tunnel_xmit() in case dst_link_failure() is called Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 114/140] net/vxlan: Share RX skb de-marking and checksum checks with ovs Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 115/140] fib_frontend: fix possible NULL pointer dereference Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 116/140] net: Fix memory leak if TPROXY used with TCP early demux Greg Kroah-Hartman
2014-02-04 21:11   ` Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 117/140] xen-netfront: fix resource leak in netfront Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 118/140] net: gre: use icmp_hdr() to get inner ip header Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 119/140] mmc: sdhci: add quirk for broken HS200 support Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 120/140] mmc: sdhci-pci: add broken HS200 quirk for Intel Merrifield Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 121/140] mmc: sdhci: fix lockdep error in tuning routine Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 122/140] mmc: sdhci-esdhc-imx: fix access hardirq-unsafe lock in atomic context Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 123/140] alpha: fix broken network checksum Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 124/140] parisc/sti_console: prefer Linux fonts over built-in ROM fonts Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 125/140] parisc: fix cache-flushing Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 126/140] KVM: PPC: Book3S HV: use xics_wake_cpu only when defined Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 127/140] KVM: PPC: e500: Fix bad address type in deliver_tlb_misss() Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 128/140] ALSA: hda - Dont set indep_hp flag for old AD codecs Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 129/140] hpfs: remember free space Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 130/140] usb: core: get config and string descriptors for unauthorized devices Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 131/140] SCSI: bfa: Chinook quad port 16G FC HBA claim issue Greg Kroah-Hartman
2014-02-04 21:11 ` [PATCH 3.13 132/140] SCSI: qla4xxx: overflow in qla4xxx_set_chap_entry() Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 133/140] virtio-scsi: Fix hotcpu_notifier use-after-free with virtscsi_freeze Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 134/140] iscsi-target: Pre-allocate more tags to avoid ack starvation Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 135/140] target/iscsi: Fix network portal creation race Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 136/140] Btrfs: handle EAGAIN case properly in btrfs_drop_snapshot() Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 137/140] Btrfs: setup inode location during btrfs_init_inode_locked Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 138/140] btrfs: restrict snapshotting to own subvolumes Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 139/140] powerpc: Fix the setup of CPU-to-Node mappings during CPU online Greg Kroah-Hartman
2014-02-04 21:12 ` [PATCH 3.13 140/140] powerpc: Make sure "cache" directory is removed when offlining cpu Greg Kroah-Hartman
2014-02-05  6:41 ` [PATCH 3.13 000/140] 3.13.2-stable review Guenter Roeck
2014-02-05 17:37   ` Greg Kroah-Hartman
2014-02-05 20:41 ` Shuah Khan
2014-02-05 22:27   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140204211038.055031147@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=Larry.Finger@lwfinger.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.