mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
Revert "rtlwifi: Fix enter/exit power_save"
This reverts commit9806857492, which is commitba9f93f82aupstream as it causes problems. Reported-by: Dmitry Osipenko <digetx@gmail.com> Cc: Ping-Ke Shih <pkshih@realtek.com> Cc: Larry Finger <Larry.Finger@lwfinger.net> Cc: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
This commit is contained in:
@@ -1303,13 +1303,12 @@ EXPORT_SYMBOL_GPL(rtl_action_proc);
|
||||
|
||||
static void setup_arp_tx(struct rtl_priv *rtlpriv, struct rtl_ps_ctl *ppsc)
|
||||
{
|
||||
struct ieee80211_hw *hw = rtlpriv->hw;
|
||||
|
||||
rtlpriv->ra.is_special_data = true;
|
||||
if (rtlpriv->cfg->ops->get_btc_status())
|
||||
rtlpriv->btcoexist.btc_ops->btc_special_packet_notify(
|
||||
rtlpriv, 1);
|
||||
rtl_lps_leave(hw);
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies = jiffies;
|
||||
}
|
||||
|
||||
@@ -1382,7 +1381,8 @@ u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx,
|
||||
|
||||
if (is_tx) {
|
||||
rtlpriv->ra.is_special_data = true;
|
||||
rtl_lps_leave(hw);
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies = jiffies;
|
||||
}
|
||||
|
||||
|
||||
@@ -1150,8 +1150,10 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
|
||||
} else {
|
||||
mstatus = RT_MEDIA_DISCONNECT;
|
||||
|
||||
if (mac->link_state == MAC80211_LINKED)
|
||||
rtl_lps_leave(hw);
|
||||
if (mac->link_state == MAC80211_LINKED) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
}
|
||||
if (ppsc->p2p_ps_info.p2p_ps_mode > P2P_PS_NONE)
|
||||
rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE);
|
||||
mac->link_state = MAC80211_NOLINK;
|
||||
@@ -1429,7 +1431,8 @@ static void rtl_op_sw_scan_start(struct ieee80211_hw *hw,
|
||||
}
|
||||
|
||||
if (mac->link_state == MAC80211_LINKED) {
|
||||
rtl_lps_leave(hw);
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
mac->link_state = MAC80211_LINKED_SCANNING;
|
||||
} else {
|
||||
rtl_ips_nic_on(hw);
|
||||
|
||||
@@ -663,9 +663,11 @@ tx_status_ok:
|
||||
}
|
||||
|
||||
if (((rtlpriv->link_info.num_rx_inperiod +
|
||||
rtlpriv->link_info.num_tx_inperiod) > 8) ||
|
||||
(rtlpriv->link_info.num_rx_inperiod > 2))
|
||||
rtl_lps_leave(hw);
|
||||
rtlpriv->link_info.num_tx_inperiod) > 8) ||
|
||||
(rtlpriv->link_info.num_rx_inperiod > 2)) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
}
|
||||
}
|
||||
|
||||
static int _rtl_pci_init_one_rxdesc(struct ieee80211_hw *hw,
|
||||
@@ -916,8 +918,10 @@ new_trx_end:
|
||||
}
|
||||
if (((rtlpriv->link_info.num_rx_inperiod +
|
||||
rtlpriv->link_info.num_tx_inperiod) > 8) ||
|
||||
(rtlpriv->link_info.num_rx_inperiod > 2))
|
||||
rtl_lps_leave(hw);
|
||||
(rtlpriv->link_info.num_rx_inperiod > 2)) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
}
|
||||
skb = new_skb;
|
||||
no_new:
|
||||
if (rtlpriv->use_new_trx_flow) {
|
||||
|
||||
@@ -407,8 +407,8 @@ void rtl_lps_set_psmode(struct ieee80211_hw *hw, u8 rt_psmode)
|
||||
}
|
||||
}
|
||||
|
||||
/* Interrupt safe routine to enter the leisure power save mode.*/
|
||||
static void rtl_lps_enter_core(struct ieee80211_hw *hw)
|
||||
/*Enter the leisure power save mode.*/
|
||||
void rtl_lps_enter(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
|
||||
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
|
||||
@@ -444,9 +444,10 @@ static void rtl_lps_enter_core(struct ieee80211_hw *hw)
|
||||
|
||||
spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag);
|
||||
}
|
||||
EXPORT_SYMBOL(rtl_lps_enter);
|
||||
|
||||
/* Interrupt safe routine to leave the leisure power save mode.*/
|
||||
static void rtl_lps_leave_core(struct ieee80211_hw *hw)
|
||||
/*Leave the leisure power save mode.*/
|
||||
void rtl_lps_leave(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
|
||||
@@ -476,6 +477,7 @@ static void rtl_lps_leave_core(struct ieee80211_hw *hw)
|
||||
}
|
||||
spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag);
|
||||
}
|
||||
EXPORT_SYMBOL(rtl_lps_leave);
|
||||
|
||||
/* For sw LPS*/
|
||||
void rtl_swlps_beacon(struct ieee80211_hw *hw, void *data, unsigned int len)
|
||||
@@ -668,34 +670,12 @@ void rtl_lps_change_work_callback(struct work_struct *work)
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
|
||||
if (rtlpriv->enter_ps)
|
||||
rtl_lps_enter_core(hw);
|
||||
rtl_lps_enter(hw);
|
||||
else
|
||||
rtl_lps_leave_core(hw);
|
||||
rtl_lps_leave(hw);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rtl_lps_change_work_callback);
|
||||
|
||||
void rtl_lps_enter(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
|
||||
if (!in_interrupt())
|
||||
return rtl_lps_enter_core(hw);
|
||||
rtlpriv->enter_ps = true;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rtl_lps_enter);
|
||||
|
||||
void rtl_lps_leave(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
|
||||
if (!in_interrupt())
|
||||
return rtl_lps_leave_core(hw);
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rtl_lps_leave);
|
||||
|
||||
void rtl_swlps_wq_callback(void *data)
|
||||
{
|
||||
struct rtl_works *rtlworks = container_of_dwork_rtl(data,
|
||||
|
||||
Reference in New Issue
Block a user