On Fri, Jun 03, 2011 at 02:58:34PM +0900, [email protected] wrote: > > This is a note to let you know that I've just added the patch titled > > rtlwifi: rtl8192c-common: rtl8192ce: Fix for HT40 regression
Nope, I've dropped it, it causes the build to break: drivers/net/wireless/rtlwifi/rtl8192ce/phy.c:435:6: error: redefinition of ‘rtl92ce_phy_set_bw_mode_callback’ drivers/net/wireless/rtlwifi/rtl8192ce/phy.c:367:6: note: previous definition of ‘rtl92ce_phy_set_bw_mode_callback’ was here drivers/net/wireless/rtlwifi/rtl8192ce/phy.c: In function ‘rtl92ce_phy_set_bw_mode_callback’: drivers/net/wireless/rtlwifi/rtl8192ce/phy.c:499:2: error: implicit declaration of function ‘rtl92ce_phy_rf6052_set_bandwidth’ So, if you want this applied, please submit a version that will build correctly. thanks, greg k-h > > to the 2.6.39-stable tree which can be found at: > > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > rtlwifi-rtl8192c-common-rtl8192ce-fix-for-ht40-regression.patch > and it can be found in the queue-2.6.39 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <[email protected]> know about it. > > > >From 099fb8ab1e57e5d609ac686cc0ab6d1835a79155 Mon Sep 17 00:00:00 2001 > From: Larry Finger <[email protected]> > Date: Sat, 14 May 2011 10:15:17 -0500 > Subject: rtlwifi: rtl8192c-common: rtl8192ce: Fix for HT40 regression > > From: Larry Finger <[email protected]> > > commit 099fb8ab1e57e5d609ac686cc0ab6d1835a79155 upstream. > > The changes that were made to rtl8192ce when rtl8192cu was added broke > HT40. The errors included a typo in rtlwifi, a missing routine in > rtl8192ce and a missing callback of that routine in rtl8192c-common. > > This patch fixes the regression reported in Bug #35082. > > Signed-off-by: Larry Finger <[email protected]> > Signed-off-by: John W. Linville <[email protected]> > Signed-off-by: Greg Kroah-Hartman <[email protected]> > > --- > drivers/net/wireless/rtlwifi/ps.c | 2 > drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | 69 > +++++++++++++++++++++++++++ > drivers/net/wireless/rtlwifi/rtl8192ce/phy.h | 1 > 3 files changed, 71 insertions(+), 1 deletion(-) > > --- a/drivers/net/wireless/rtlwifi/ps.c > +++ b/drivers/net/wireless/rtlwifi/ps.c > @@ -205,7 +205,7 @@ static void _rtl_ps_inactive_ps(struct i > rtl_ps_set_rf_state(hw, ppsc->inactive_pwrstate, > RF_CHANGE_BY_IPS, false); > > - if (ppsc->inactive_pwrstate == ERFOFF && > + if (ppsc->inactive_pwrstate == ERFON && > rtlhal->interface == INTF_PCI) { > if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_ASPM) { > rtlpriv->intf_ops->enable_aspm(hw); > --- a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c > +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c > @@ -432,6 +432,75 @@ void rtl92ce_phy_set_bw_mode_callback(st > RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, ("<==\n")); > } > > +void rtl92ce_phy_set_bw_mode_callback(struct ieee80211_hw *hw) > +{ > + struct rtl_priv *rtlpriv = rtl_priv(hw); > + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); > + struct rtl_phy *rtlphy = &(rtlpriv->phy); > + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); > + u8 reg_bw_opmode; > + u8 reg_prsr_rsc; > + > + RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, > + ("Switch to %s bandwidth\n", > + rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20 ? > + "20MHz" : "40MHz")) > + > + if (is_hal_stop(rtlhal)) { > + rtlphy->set_bwmode_inprogress = false; > + return; > + } > + > + reg_bw_opmode = rtl_read_byte(rtlpriv, REG_BWOPMODE); > + reg_prsr_rsc = rtl_read_byte(rtlpriv, REG_RRSR + 2); > + > + switch (rtlphy->current_chan_bw) { > + case HT_CHANNEL_WIDTH_20: > + reg_bw_opmode |= BW_OPMODE_20MHZ; > + rtl_write_byte(rtlpriv, REG_BWOPMODE, reg_bw_opmode); > + break; > + case HT_CHANNEL_WIDTH_20_40: > + reg_bw_opmode &= ~BW_OPMODE_20MHZ; > + rtl_write_byte(rtlpriv, REG_BWOPMODE, reg_bw_opmode); > + reg_prsr_rsc = > + (reg_prsr_rsc & 0x90) | (mac->cur_40_prime_sc << 5); > + rtl_write_byte(rtlpriv, REG_RRSR + 2, reg_prsr_rsc); > + break; > + default: > + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, > + ("unknown bandwidth: %#X\n", rtlphy->current_chan_bw)); > + break; > + } > + > + switch (rtlphy->current_chan_bw) { > + case HT_CHANNEL_WIDTH_20: > + rtl_set_bbreg(hw, RFPGA0_RFMOD, BRFMOD, 0x0); > + rtl_set_bbreg(hw, RFPGA1_RFMOD, BRFMOD, 0x0); > + rtl_set_bbreg(hw, RFPGA0_ANALOGPARAMETER2, BIT(10), 1); > + break; > + case HT_CHANNEL_WIDTH_20_40: > + rtl_set_bbreg(hw, RFPGA0_RFMOD, BRFMOD, 0x1); > + rtl_set_bbreg(hw, RFPGA1_RFMOD, BRFMOD, 0x1); > + > + rtl_set_bbreg(hw, RCCK0_SYSTEM, BCCK_SIDEBAND, > + (mac->cur_40_prime_sc >> 1)); > + rtl_set_bbreg(hw, ROFDM1_LSTF, 0xC00, mac->cur_40_prime_sc); > + rtl_set_bbreg(hw, RFPGA0_ANALOGPARAMETER2, BIT(10), 0); > + > + rtl_set_bbreg(hw, 0x818, (BIT(26) | BIT(27)), > + (mac->cur_40_prime_sc == > + HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1); > + break; > + default: > + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, > + ("unknown bandwidth: %#X\n", rtlphy->current_chan_bw)); > + break; > + } > + rtl92ce_phy_rf6052_set_bandwidth(hw, rtlphy->current_chan_bw); > + rtlphy->set_bwmode_inprogress = false; > + RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, ("<==\n")); > +} > + > void _rtl92ce_phy_lc_calibrate(struct ieee80211_hw *hw, bool is2t) > { > u8 tmpreg; > --- a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.h > +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.h > @@ -250,5 +250,6 @@ bool _rtl92ce_phy_config_mac_with_header > void _rtl92c_phy_init_bb_rf_register_definition(struct ieee80211_hw *hw); > bool _rtl92c_phy_bb8192c_config_parafile(struct ieee80211_hw *hw); > void _rtl92c_phy_set_rf_sleep(struct ieee80211_hw *hw); > +void rtl92ce_phy_set_bw_mode_callback(struct ieee80211_hw *hw); > > #endif > > > Patches currently in stable-queue which might be from > [email protected] are > > _______________________________________________ > stable mailing list > [email protected] > http://linux.kernel.org/mailman/listinfo/stable _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
