diff options
author | sam <sam@FreeBSD.org> | 2005-06-07 23:31:36 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2005-06-07 23:31:36 +0000 |
commit | b04dca4ae598a9632b531302224e6fa953371b8d (patch) | |
tree | 5af55c87a1fdc27b8a61c0900d694ab02eb3318e /sys/net80211/ieee80211_proto.c | |
parent | 6088d73c5fcaedc6914c824bbacddae0f7b37c64 (diff) | |
download | FreeBSD-src-b04dca4ae598a9632b531302224e6fa953371b8d.zip FreeBSD-src-b04dca4ae598a9632b531302224e6fa953371b8d.tar.gz |
Don't clock the state machine in various cases when roaming is set
to manual; this helps keep wpa_supplicant in sync.
Diffstat (limited to 'sys/net80211/ieee80211_proto.c')
-rw-r--r-- | sys/net80211/ieee80211_proto.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c index 8977f01..9b0da80 100644 --- a/sys/net80211/ieee80211_proto.c +++ b/sys/net80211/ieee80211_proto.c @@ -940,7 +940,8 @@ ieee80211_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg ni->ni_fails++; ieee80211_unref_node(&ni); } - ieee80211_begin_scan(ic, arg); + if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) + ieee80211_begin_scan(ic, arg); break; } break; @@ -972,10 +973,12 @@ ieee80211_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg ic->ic_state = ostate; /* stay RUN */ break; case IEEE80211_FC0_SUBTYPE_DEAUTH: - /* try to reauth */ - IEEE80211_SEND_MGMT(ic, ni, - IEEE80211_FC0_SUBTYPE_AUTH, 1); ieee80211_sta_leave(ic, ni); + if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) { + /* try to reauth */ + IEEE80211_SEND_MGMT(ic, ni, + IEEE80211_FC0_SUBTYPE_AUTH, 1); + } break; } break; @@ -994,9 +997,11 @@ ieee80211_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 0); break; case IEEE80211_S_RUN: - IEEE80211_SEND_MGMT(ic, ni, - IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 1); ieee80211_sta_leave(ic, ni); + if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) { + IEEE80211_SEND_MGMT(ic, ni, + IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 1); + } break; } break; |