printk(KERN_DEBUG "%s: Connection to AP %pM lost.\n",
               sdata->name, bssid);
 
-       ieee80211_set_disassoc(sdata, true, true);
+       ieee80211_set_disassoc(sdata, true, false);
        mutex_unlock(&ifmgd->mtx);
 
        /*
        ifmgd->flags &= ~(IEEE80211_STA_CONNECTION_POLL |
                          IEEE80211_STA_BEACON_POLL);
 
-       ieee80211_set_disassoc(sdata, true, true);
+       ieee80211_set_disassoc(sdata, true, false);
        mutex_unlock(&ifmgd->mtx);
        /*
         * must be outside lock due to cfg80211,
               sdata->name, req->bss->bssid, req->reason_code);
 
        memcpy(bssid, req->bss->bssid, ETH_ALEN);
-       ieee80211_set_disassoc(sdata, false, true);
+       ieee80211_set_disassoc(sdata, false, !req->local_state_change);
 
        mutex_unlock(&ifmgd->mtx);