mac80211: add auth/assoc/deauth flow diagram
I've been working on some documentation, so let's add this diagram to the kernel tree where at least it has a chance of being maintained :-) Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
290d60891e
commit
3cd7920a2b
|
@ -0,0 +1,99 @@
|
||||||
|
#
|
||||||
|
# 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-exist)
|
||||||
|
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, non-HT)
|
||||||
|
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, non-HT)
|
||||||
|
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
|
||||||
|
|
||||||
|
alt is HT channel
|
||||||
|
mac80211->driver: config(channel, HT params)
|
||||||
|
end
|
||||||
|
|
||||||
|
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,exist)
|
||||||
|
mac80211->driver: sta_state(AP,not-exist)
|
||||||
|
mac80211->driver: turn off powersave
|
||||||
|
mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...)
|
||||||
|
mac80211->driver: config(non-HT channel type)
|
||||||
|
mac80211->userspace: disconnected
|
Loading…
Reference in New Issue