This shows you the differences between two versions of the page.
— |
en:developers:documentation:mac80211:auth-assoc-deauth [2015/01/26 09:49] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
+ | <seqdia> | ||
+ | # | ||
+ | # 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 | ||
+ | </seqdia> | ||
+ | |||
+ | (This is copied from Documentation/networking/mac80211-auth-assoc-deauth.txt in the kernel sources) | ||