diff options
author | Juuso Oikarinen <juuso.oikarinen@nokia.com> | 2010-04-20 06:15:56 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-04-20 11:52:40 -0400 |
commit | 7bdfcaaff5de368a88a4f784f7283b66c17d051d (patch) | |
tree | f871cfa0a3aeb06f184e884a084b944b0c92480f | |
parent | 58b5190e740241b33fcd901855436aa5d0c5e087 (diff) |
mac80211: Fix ieee80211_sta_conn_mon_timer with hw connection monitoring
When IEEE80211_HW_CONNECTION_MONITOR is configured by the driver, starting
of ieee80211_sta_conn_mon_timer should be prevented, as it is then not needed.
This is currently partially the case. As it seems, when a probe-response is
received from the AP the timer is still restarted, thus restarting the host
based connection keep-alive mechanism. These probe-responses happen at least
when scanning while associated.
Fix this by preventing starting of the ieee80211_sta_conn_mon_timer in the
ieee80211_rx_mgmt_probe_resp function.
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | net/mac80211/mlme.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index d11a54c289a2..d811e3fa1d75 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1330,12 +1330,17 @@ static void ieee80211_rx_mgmt_probe_resp(struct ieee80211_sub_if_data *sdata, | |||
1330 | mutex_lock(&sdata->local->iflist_mtx); | 1330 | mutex_lock(&sdata->local->iflist_mtx); |
1331 | ieee80211_recalc_ps(sdata->local, -1); | 1331 | ieee80211_recalc_ps(sdata->local, -1); |
1332 | mutex_unlock(&sdata->local->iflist_mtx); | 1332 | mutex_unlock(&sdata->local->iflist_mtx); |
1333 | |||
1334 | if (sdata->local->hw.flags & IEEE80211_HW_CONNECTION_MONITOR) | ||
1335 | return; | ||
1336 | |||
1333 | /* | 1337 | /* |
1334 | * We've received a probe response, but are not sure whether | 1338 | * We've received a probe response, but are not sure whether |
1335 | * we have or will be receiving any beacons or data, so let's | 1339 | * we have or will be receiving any beacons or data, so let's |
1336 | * schedule the timers again, just in case. | 1340 | * schedule the timers again, just in case. |
1337 | */ | 1341 | */ |
1338 | mod_beacon_timer(sdata); | 1342 | mod_beacon_timer(sdata); |
1343 | |||
1339 | mod_timer(&ifmgd->conn_mon_timer, | 1344 | mod_timer(&ifmgd->conn_mon_timer, |
1340 | round_jiffies_up(jiffies + | 1345 | round_jiffies_up(jiffies + |
1341 | IEEE80211_CONNECTION_IDLE_TIME)); | 1346 | IEEE80211_CONNECTION_IDLE_TIME)); |