xref: /OK3568_Linux_fs/kernel/Documentation/networking/mac80211-auth-assoc-deauth.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# This outlines the Linux authentication/association and
3*4882a593Smuzhiyun# deauthentication/disassociation flows.
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# This can be converted into a diagram using the service
6*4882a593Smuzhiyun# at http://www.websequencediagrams.com/
7*4882a593Smuzhiyun#
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunparticipant userspace
10*4882a593Smuzhiyunparticipant mac80211
11*4882a593Smuzhiyunparticipant driver
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunalt authentication needed (not FT)
14*4882a593Smuzhiyunuserspace->mac80211: authenticate
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunalt authenticated/authenticating already
17*4882a593Smuzhiyunmac80211->driver: sta_state(AP, not-exists)
18*4882a593Smuzhiyunmac80211->driver: bss_info_changed(clear BSSID)
19*4882a593Smuzhiyunelse associated
20*4882a593Smuzhiyunnote over mac80211,driver
21*4882a593Smuzhiyunlike deauth/disassoc, without sending the
22*4882a593SmuzhiyunBA session stop & deauth/disassoc frames
23*4882a593Smuzhiyunend note
24*4882a593Smuzhiyunend
25*4882a593Smuzhiyun
26*4882a593Smuzhiyunmac80211->driver: config(channel, channel type)
27*4882a593Smuzhiyunmac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
28*4882a593Smuzhiyunmac80211->driver: sta_state(AP, exists)
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunalt no probe request data known
31*4882a593Smuzhiyunmac80211->driver: TX directed probe request
32*4882a593Smuzhiyundriver->mac80211: RX probe response
33*4882a593Smuzhiyunend
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunmac80211->driver: TX auth frame
36*4882a593Smuzhiyundriver->mac80211: RX auth frame
37*4882a593Smuzhiyun
38*4882a593Smuzhiyunalt WEP shared key auth
39*4882a593Smuzhiyunmac80211->driver: TX auth frame
40*4882a593Smuzhiyundriver->mac80211: RX auth frame
41*4882a593Smuzhiyunend
42*4882a593Smuzhiyun
43*4882a593Smuzhiyunmac80211->driver: sta_state(AP, authenticated)
44*4882a593Smuzhiyunmac80211->userspace: RX auth frame
45*4882a593Smuzhiyun
46*4882a593Smuzhiyunend
47*4882a593Smuzhiyun
48*4882a593Smuzhiyunuserspace->mac80211: associate
49*4882a593Smuzhiyunalt authenticated or associated
50*4882a593Smuzhiyunnote over mac80211,driver: cleanup like for authenticate
51*4882a593Smuzhiyunend
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunalt not previously authenticated (FT)
54*4882a593Smuzhiyunmac80211->driver: config(channel, channel type)
55*4882a593Smuzhiyunmac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
56*4882a593Smuzhiyunmac80211->driver: sta_state(AP, exists)
57*4882a593Smuzhiyunmac80211->driver: sta_state(AP, authenticated)
58*4882a593Smuzhiyunend
59*4882a593Smuzhiyunmac80211->driver: TX assoc
60*4882a593Smuzhiyundriver->mac80211: RX assoc response
61*4882a593Smuzhiyunnote over mac80211: init rate control
62*4882a593Smuzhiyunmac80211->driver: sta_state(AP, associated)
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunalt not using WPA
65*4882a593Smuzhiyunmac80211->driver: sta_state(AP, authorized)
66*4882a593Smuzhiyunend
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunmac80211->driver: set up QoS parameters
69*4882a593Smuzhiyun
70*4882a593Smuzhiyunmac80211->driver: bss_info_changed(QoS, HT, associated with AID)
71*4882a593Smuzhiyunmac80211->userspace: associated
72*4882a593Smuzhiyun
73*4882a593Smuzhiyunnote left of userspace: associated now
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunalt using WPA
76*4882a593Smuzhiyunnote over userspace
77*4882a593Smuzhiyundo 4-way-handshake
78*4882a593Smuzhiyun(data frames)
79*4882a593Smuzhiyunend note
80*4882a593Smuzhiyunuserspace->mac80211: authorized
81*4882a593Smuzhiyunmac80211->driver: sta_state(AP, authorized)
82*4882a593Smuzhiyunend
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunuserspace->mac80211: deauthenticate/disassociate
85*4882a593Smuzhiyunmac80211->driver: stop BA sessions
86*4882a593Smuzhiyunmac80211->driver: TX deauth/disassoc
87*4882a593Smuzhiyunmac80211->driver: flush frames
88*4882a593Smuzhiyunmac80211->driver: sta_state(AP,associated)
89*4882a593Smuzhiyunmac80211->driver: sta_state(AP,authenticated)
90*4882a593Smuzhiyunmac80211->driver: sta_state(AP,exists)
91*4882a593Smuzhiyunmac80211->driver: sta_state(AP,not-exists)
92*4882a593Smuzhiyunmac80211->driver: turn off powersave
93*4882a593Smuzhiyunmac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...)
94*4882a593Smuzhiyunmac80211->driver: config(channel type to non-HT)
95*4882a593Smuzhiyunmac80211->userspace: disconnected
96