162306a36Sopenharmony_ci#
262306a36Sopenharmony_ci# This outlines the Linux authentication/association and
362306a36Sopenharmony_ci# deauthentication/disassociation flows.
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci# This can be converted into a diagram using the service
662306a36Sopenharmony_ci# at http://www.websequencediagrams.com/
762306a36Sopenharmony_ci#
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciparticipant userspace
1062306a36Sopenharmony_ciparticipant mac80211
1162306a36Sopenharmony_ciparticipant driver
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cialt authentication needed (not FT)
1462306a36Sopenharmony_ciuserspace->mac80211: authenticate
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cialt authenticated/authenticating already
1762306a36Sopenharmony_cimac80211->driver: sta_state(AP, not-exists)
1862306a36Sopenharmony_cimac80211->driver: bss_info_changed(clear BSSID)
1962306a36Sopenharmony_cielse associated
2062306a36Sopenharmony_cinote over mac80211,driver
2162306a36Sopenharmony_cilike deauth/disassoc, without sending the
2262306a36Sopenharmony_ciBA session stop & deauth/disassoc frames
2362306a36Sopenharmony_ciend note
2462306a36Sopenharmony_ciend
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cimac80211->driver: config(channel, channel type)
2762306a36Sopenharmony_cimac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
2862306a36Sopenharmony_cimac80211->driver: sta_state(AP, exists)
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cialt no probe request data known
3162306a36Sopenharmony_cimac80211->driver: TX directed probe request
3262306a36Sopenharmony_cidriver->mac80211: RX probe response
3362306a36Sopenharmony_ciend
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cimac80211->driver: TX auth frame
3662306a36Sopenharmony_cidriver->mac80211: RX auth frame
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_cialt WEP shared key auth
3962306a36Sopenharmony_cimac80211->driver: TX auth frame
4062306a36Sopenharmony_cidriver->mac80211: RX auth frame
4162306a36Sopenharmony_ciend
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cimac80211->driver: sta_state(AP, authenticated)
4462306a36Sopenharmony_cimac80211->userspace: RX auth frame
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciend
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciuserspace->mac80211: associate
4962306a36Sopenharmony_cialt authenticated or associated
5062306a36Sopenharmony_cinote over mac80211,driver: cleanup like for authenticate
5162306a36Sopenharmony_ciend
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cialt not previously authenticated (FT)
5462306a36Sopenharmony_cimac80211->driver: config(channel, channel type)
5562306a36Sopenharmony_cimac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
5662306a36Sopenharmony_cimac80211->driver: sta_state(AP, exists)
5762306a36Sopenharmony_cimac80211->driver: sta_state(AP, authenticated)
5862306a36Sopenharmony_ciend
5962306a36Sopenharmony_cimac80211->driver: TX assoc
6062306a36Sopenharmony_cidriver->mac80211: RX assoc response
6162306a36Sopenharmony_cinote over mac80211: init rate control
6262306a36Sopenharmony_cimac80211->driver: sta_state(AP, associated)
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_cialt not using WPA
6562306a36Sopenharmony_cimac80211->driver: sta_state(AP, authorized)
6662306a36Sopenharmony_ciend
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cimac80211->driver: set up QoS parameters
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_cimac80211->driver: bss_info_changed(QoS, HT, associated with AID)
7162306a36Sopenharmony_cimac80211->userspace: associated
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_cinote left of userspace: associated now
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cialt using WPA
7662306a36Sopenharmony_cinote over userspace
7762306a36Sopenharmony_cido 4-way-handshake
7862306a36Sopenharmony_ci(data frames)
7962306a36Sopenharmony_ciend note
8062306a36Sopenharmony_ciuserspace->mac80211: authorized
8162306a36Sopenharmony_cimac80211->driver: sta_state(AP, authorized)
8262306a36Sopenharmony_ciend
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciuserspace->mac80211: deauthenticate/disassociate
8562306a36Sopenharmony_cimac80211->driver: stop BA sessions
8662306a36Sopenharmony_cimac80211->driver: TX deauth/disassoc
8762306a36Sopenharmony_cimac80211->driver: flush frames
8862306a36Sopenharmony_cimac80211->driver: sta_state(AP,associated)
8962306a36Sopenharmony_cimac80211->driver: sta_state(AP,authenticated)
9062306a36Sopenharmony_cimac80211->driver: sta_state(AP,exists)
9162306a36Sopenharmony_cimac80211->driver: sta_state(AP,not-exists)
9262306a36Sopenharmony_cimac80211->driver: turn off powersave
9362306a36Sopenharmony_cimac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...)
9462306a36Sopenharmony_cimac80211->driver: config(channel type to non-HT)
9562306a36Sopenharmony_cimac80211->userspace: disconnected
96