|
@@ -3623,6 +3623,31 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
|
+void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata)
|
|
|
|
+{
|
|
|
|
+ struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
|
|
|
+
|
|
|
|
+ mutex_lock(&ifmgd->mtx);
|
|
|
|
+ if (!ifmgd->associated) {
|
|
|
|
+ mutex_unlock(&ifmgd->mtx);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (sdata->flags & IEEE80211_SDATA_DISCONNECT_RESUME) {
|
|
|
|
+ sdata->flags &= ~IEEE80211_SDATA_DISCONNECT_RESUME;
|
|
|
|
+ mlme_dbg(sdata, "driver requested disconnect after resume\n");
|
|
|
|
+ ieee80211_sta_connection_lost(sdata,
|
|
|
|
+ ifmgd->associated->bssid,
|
|
|
|
+ WLAN_REASON_UNSPECIFIED,
|
|
|
|
+ true);
|
|
|
|
+ mutex_unlock(&ifmgd->mtx);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ mutex_unlock(&ifmgd->mtx);
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* interface setup */
|
|
/* interface setup */
|
|
void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata)
|
|
void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata)
|
|
{
|
|
{
|