diff options
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_event.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_event.c b/drivers/net/wireless/wl12xx/wl1271_event.c index 0e0808fa4e32..4fc212a02a64 100644 --- a/drivers/net/wireless/wl12xx/wl1271_event.c +++ b/drivers/net/wireless/wl12xx/wl1271_event.c | |||
@@ -82,15 +82,8 @@ static int wl1271_event_ps_report(struct wl1271 *wl, | |||
82 | true); | 82 | true); |
83 | } else { | 83 | } else { |
84 | wl1271_error("PSM entry failed, giving up.\n"); | 84 | wl1271_error("PSM entry failed, giving up.\n"); |
85 | /* FIXME: this may need to be reconsidered. for now it | ||
86 | is not possible to indicate to the mac80211 | ||
87 | afterwards that PSM entry failed. To maximize | ||
88 | functionality (receiving data and remaining | ||
89 | associated) make sure that we are in sync with the | ||
90 | AP in regard of PSM mode. */ | ||
91 | ret = wl1271_ps_set_mode(wl, STATION_ACTIVE_MODE, | ||
92 | false); | ||
93 | wl->psm_entry_retry = 0; | 85 | wl->psm_entry_retry = 0; |
86 | *beacon_loss = true; | ||
94 | } | 87 | } |
95 | break; | 88 | break; |
96 | case EVENT_ENTER_POWER_SAVE_SUCCESS: | 89 | case EVENT_ENTER_POWER_SAVE_SUCCESS: |
@@ -180,16 +173,8 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox) | |||
180 | return ret; | 173 | return ret; |
181 | } | 174 | } |
182 | 175 | ||
183 | if (wl->vif && beacon_loss) { | 176 | if (wl->vif && beacon_loss) |
184 | /* Obviously, it's dangerous to release the mutex while | 177 | ieee80211_connection_loss(wl->vif); |
185 | we are holding many of the variables in the wl struct. | ||
186 | That's why it's done last in the function, and care must | ||
187 | be taken that nothing more is done after this function | ||
188 | returns. */ | ||
189 | mutex_unlock(&wl->mutex); | ||
190 | ieee80211_beacon_loss(wl->vif); | ||
191 | mutex_lock(&wl->mutex); | ||
192 | } | ||
193 | 178 | ||
194 | return 0; | 179 | return 0; |
195 | } | 180 | } |