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