123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #
- # 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
|