| # | |
| # This outlines the Linux authentication/association and | |
| # deauthentication/disassociation flows. | |
| # | |
| # This can be converted into a diagram using the service | |
| # at http://www.websequencediagrams.com/ | |
| # | |
| participant userspace | |
| participant mac80211 | |
| participant driver | |
| alt authentication needed (not FT) | |
| userspace->mac80211: authenticate | |
| alt authenticated/authenticating already | |
| mac80211->driver: sta_state(AP, not-exists) | |
| mac80211->driver: bss_info_changed(clear BSSID) | |
| else associated | |
| note over mac80211,driver | |
| like deauth/disassoc, without sending the | |
| BA session stop & deauth/disassoc frames | |
| end note | |
| end | |
| mac80211->driver: config(channel, channel type) | |
| mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) | |
| mac80211->driver: sta_state(AP, exists) | |
| alt no probe request data known | |
| mac80211->driver: TX directed probe request | |
| driver->mac80211: RX probe response | |
| end | |
| mac80211->driver: TX auth frame | |
| driver->mac80211: RX auth frame | |
| alt WEP shared key auth | |
| mac80211->driver: TX auth frame | |
| driver->mac80211: RX auth frame | |
| end | |
| mac80211->driver: sta_state(AP, authenticated) | |
| mac80211->userspace: RX auth frame | |
| end | |
| userspace->mac80211: associate | |
| alt authenticated or associated | |
| note over mac80211,driver: cleanup like for authenticate | |
| end | |
| alt not previously authenticated (FT) | |
| mac80211->driver: config(channel, channel type) | |
| mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) | |
| mac80211->driver: sta_state(AP, exists) | |
| mac80211->driver: sta_state(AP, authenticated) | |
| end | |
| mac80211->driver: TX assoc | |
| driver->mac80211: RX assoc response | |
| note over mac80211: init rate control | |
| mac80211->driver: sta_state(AP, associated) | |
| alt not using WPA | |
| mac80211->driver: sta_state(AP, authorized) | |
| end | |
| mac80211->driver: set up QoS parameters | |
| mac80211->driver: bss_info_changed(QoS, HT, associated with AID) | |
| mac80211->userspace: associated | |
| note left of userspace: associated now | |
| alt using WPA | |
| note over userspace | |
| do 4-way-handshake | |
| (data frames) | |
| end note | |
| userspace->mac80211: authorized | |
| mac80211->driver: sta_state(AP, authorized) | |
| end | |
| userspace->mac80211: deauthenticate/disassociate | |
| mac80211->driver: stop BA sessions | |
| mac80211->driver: TX deauth/disassoc | |
| mac80211->driver: flush frames | |
| mac80211->driver: sta_state(AP,associated) | |
| mac80211->driver: sta_state(AP,authenticated) | |
| mac80211->driver: sta_state(AP,exists) | |
| mac80211->driver: sta_state(AP,not-exists) | |
| mac80211->driver: turn off powersave | |
| mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...) | |
| mac80211->driver: config(channel type to non-HT) | |
| mac80211->userspace: disconnected |