forked from mirrors/linux
		
	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
					
				
					 1 changed files with 99 additions and 0 deletions
				
			
		
							
								
								
									
										99
									
								
								Documentation/networking/mac80211-auth-assoc-deauth.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								Documentation/networking/mac80211-auth-assoc-deauth.txt
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -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 a new issue