Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 314129
b: refs/heads/master
c: 6b8bf5b
h: refs/heads/master
i:
  314127: b6556f9
v: v3
  • Loading branch information
Arik Nemtsov authored and Luciano Coelho committed Jun 5, 2012
1 parent d54aaef commit e6ee87f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6e066921b3970232d5faadcdf33a92f43ec84334
refs/heads/master: 6b8bf5bc5e99f52334bec1b06b14d28dc595c95a
15 changes: 12 additions & 3 deletions trunk/drivers/net/wireless/ti/wlcore/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,15 +148,24 @@ static int wl1271_event_process(struct wl1271 *wl)
int delay = wl->conf.conn.synch_fail_thold *
wl->conf.conn.bss_lose_timeout;
wl1271_info("Beacon loss detected.");
cancel_delayed_work_sync(&wl->connection_loss_work);

/*
* if the work is already queued, it should take place. We
* don't want to delay the connection loss indication
* any more.
*/
ieee80211_queue_delayed_work(wl->hw, &wl->connection_loss_work,
msecs_to_jiffies(delay));
msecs_to_jiffies(delay));
}

if (vector & REGAINED_BSS_EVENT_ID) {
/* TODO: check for multi-role */
wl1271_info("Beacon regained.");
cancel_delayed_work_sync(&wl->connection_loss_work);
cancel_delayed_work(&wl->connection_loss_work);

/* sanity check - we can't lose and gain the beacon together */
WARN(vector & BSS_LOSE_EVENT_ID,
"Concurrent beacon loss and gain from FW");
}

if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) {
Expand Down
10 changes: 7 additions & 3 deletions trunk/drivers/net/wireless/ti/wlcore/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3712,9 +3712,6 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
do_join = true;
set_assoc = true;

/* Cancel connection_loss_work */
cancel_delayed_work_sync(&wl->connection_loss_work);

/*
* use basic rates from AP, and determine lowest rate
* to use with control frames.
Expand Down Expand Up @@ -3964,6 +3961,13 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
wl1271_debug(DEBUG_MAC80211, "mac80211 bss info changed 0x%x",
(int)changed);

/*
* make sure to cancel pending disconnections if our association
* state changed
*/
if (!is_ap && (changed & BSS_CHANGED_ASSOC))
cancel_delayed_work_sync(&wl->connection_loss_work);

mutex_lock(&wl->mutex);

if (unlikely(wl->state == WL1271_STATE_OFF))
Expand Down

0 comments on commit e6ee87f

Please sign in to comment.