diff options
Diffstat (limited to 'net/mac80211/driver-ops.h')
-rw-r--r-- | net/mac80211/driver-ops.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 4bd266ec533..70dfb6415c2 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h | |||
@@ -493,9 +493,18 @@ int drv_sta_state(struct ieee80211_local *local, | |||
493 | check_sdata_in_driver(sdata); | 493 | check_sdata_in_driver(sdata); |
494 | 494 | ||
495 | trace_drv_sta_state(local, sdata, &sta->sta, old_state, new_state); | 495 | trace_drv_sta_state(local, sdata, &sta->sta, old_state, new_state); |
496 | if (local->ops->sta_state) | 496 | if (local->ops->sta_state) { |
497 | ret = local->ops->sta_state(&local->hw, &sdata->vif, &sta->sta, | 497 | ret = local->ops->sta_state(&local->hw, &sdata->vif, &sta->sta, |
498 | old_state, new_state); | 498 | old_state, new_state); |
499 | } else if (old_state == IEEE80211_STA_AUTH && | ||
500 | new_state == IEEE80211_STA_ASSOC) { | ||
501 | ret = drv_sta_add(local, sdata, &sta->sta); | ||
502 | if (ret == 0) | ||
503 | sta->uploaded = true; | ||
504 | } else if (old_state == IEEE80211_STA_ASSOC && | ||
505 | new_state == IEEE80211_STA_AUTH) { | ||
506 | drv_sta_remove(local, sdata, &sta->sta); | ||
507 | } | ||
499 | trace_drv_return_int(local, ret); | 508 | trace_drv_return_int(local, ret); |
500 | return ret; | 509 | return ret; |
501 | } | 510 | } |