From: Kalle Valo <kalle.valo@nokia.com>
To: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes@sipsolutions.net>,
Jouni Malinen <j@w1.fi>,
"Luis R. Rodriguez" <lrodriguez@atheros.com>
Subject: [RFC PATCH v2 1/4] mac80211: decrease execution of the associated timer
Date: Sat, 14 Mar 2009 19:14:31 +0200 [thread overview]
Message-ID: <20090314171431.11126.51242.stgit@tikku> (raw)
In-Reply-To: <20090314171234.11126.21125.stgit@tikku>
Currently the timer is triggering every two seconds
(IEEE80211_MONITORING_INTERVAL). Decrease the timer to only trigger when
nothing is received to avoid waking up CPU.
Now there's a functional change that probe requests are sent only when the
data path is idle, earlier they were sent also while there was activity
on the data path.
This is also preparation for beacon filtering support. Thanks to Johannes
Berg for the idea.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
---
net/mac80211/ieee80211_i.h | 2 ++
net/mac80211/mlme.c | 8 ++++++++
net/mac80211/rx.c | 3 +++
3 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index ecbc8e0..74c4e13 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1080,6 +1080,8 @@ void ieee80211_dynamic_ps_timer(unsigned long data);
void ieee80211_send_nullfunc(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
int powersave);
+void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata,
+ struct ieee80211_hdr *hdr);
void ieee80211_wake_queues_by_reason(struct ieee80211_hw *hw,
enum queue_stop_reason reason);
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 391445c..397a2e7 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -911,6 +911,14 @@ static void ieee80211_associate(struct ieee80211_sub_if_data *sdata)
mod_timer(&ifmgd->timer, jiffies + IEEE80211_ASSOC_TIMEOUT);
}
+void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata,
+ struct ieee80211_hdr *hdr)
+{
+ /* timer triggers only when there is no unicast traffic */
+ if (!is_multicast_ether_addr(hdr->addr1))
+ mod_timer(&sdata->u.mgd.timer,
+ jiffies + IEEE80211_MONITORING_INTERVAL);
+}
static void ieee80211_associated(struct ieee80211_sub_if_data *sdata)
{
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 66f7ecf..25982c0 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -855,6 +855,9 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
if (!(rx->flags & IEEE80211_RX_RA_MATCH))
return RX_CONTINUE;
+ if (rx->sdata->vif.type == NL80211_IFTYPE_STATION)
+ ieee80211_sta_rx_notify(rx->sdata, hdr);
+
sta->rx_fragments++;
sta->rx_bytes += rx->skb->len;
sta->last_signal = rx->status->signal;
next prev parent reply other threads:[~2009-03-14 17:15 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-14 17:14 [RFC PATCH v2 0/4] mac80211: beacon filtering Kalle Valo
2009-03-14 17:14 ` Kalle Valo [this message]
2009-03-14 17:18 ` [RFC PATCH v2 1/4] mac80211: decrease execution of the associated timer Johannes Berg
2009-03-14 18:46 ` Kalle Valo
2009-03-14 19:33 ` Luis R. Rodriguez
2009-03-20 9:22 ` Kalle Valo
2009-03-20 9:42 ` Johannes Berg
2009-03-20 10:37 ` Kalle Valo
2009-03-20 10:41 ` Johannes Berg
2009-03-14 17:14 ` [RFC PATCH v2 2/4] mac80211: track beacons separately from the rx path activity Kalle Valo
2009-03-14 17:21 ` Johannes Berg
2009-03-14 19:45 ` Luis R. Rodriguez
2009-03-14 19:55 ` Johannes Berg
2009-03-14 20:19 ` Luis R. Rodriguez
2009-03-15 6:52 ` Kalle Valo
2009-03-14 17:14 ` [RFC PATCH v2 3/4] mac80211: disable power save when scanning Kalle Valo
2009-03-14 17:25 ` Johannes Berg
2009-03-14 17:37 ` Kalle Valo
2009-03-14 17:14 ` [RFC PATCH v2 4/4] mac80211: add beacon filtering support Kalle Valo
2009-03-14 17:28 ` Johannes Berg
2009-03-14 17:55 ` Kalle Valo
2009-03-14 20:18 ` Luis R. Rodriguez
2009-03-15 7:22 ` Kalle Valo
2009-03-15 17:59 ` Johannes Berg
2009-03-15 19:27 ` Luis R. Rodriguez
2009-03-15 20:10 ` Kalle Valo
2009-03-16 8:50 ` Jouni Malinen
2009-03-16 12:25 ` Kalle Valo
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=20090314171431.11126.51242.stgit@tikku \
--to=kalle.valo@nokia.com \
--cc=j@w1.fi \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=lrodriguez@atheros.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).