提交 ed620590 编写于 作者: K Kalle Valo 提交者: John W. Linville

mac80211: refactor dynamic power save check

Refactor dynamic power save checks to a function of it's own for better
readibility. No functional changes.
Signed-off-by: NKalle Valo <kalle.valo@nokia.com>
Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 7bcfaf2f
...@@ -1387,6 +1387,26 @@ static int ieee80211_skb_resize(struct ieee80211_local *local, ...@@ -1387,6 +1387,26 @@ static int ieee80211_skb_resize(struct ieee80211_local *local,
return 0; return 0;
} }
static bool need_dynamic_ps(struct ieee80211_local *local)
{
/* driver doesn't support power save */
if (!(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK))
return false;
/* dynamic power save disabled */
if (local->hw.conf.dynamic_ps_timeout <= 0)
return false;
/* we are scanning, don't enable power save */
if (local->scanning)
return false;
if (!local->ps_sdata)
return false;
return true;
}
static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb) struct sk_buff *skb)
{ {
...@@ -1399,9 +1419,7 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, ...@@ -1399,9 +1419,7 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
dev_hold(sdata->dev); dev_hold(sdata->dev);
if ((local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) && if (need_dynamic_ps(local)) {
local->hw.conf.dynamic_ps_timeout > 0 &&
!(local->scanning) && local->ps_sdata) {
if (local->hw.conf.flags & IEEE80211_CONF_PS) { if (local->hw.conf.flags & IEEE80211_CONF_PS) {
ieee80211_stop_queues_by_reason(&local->hw, ieee80211_stop_queues_by_reason(&local->hw,
IEEE80211_QUEUE_STOP_REASON_PS); IEEE80211_QUEUE_STOP_REASON_PS);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册