nl80211/cfg80211: add channel switch command
To allow channel switch announcements within beacons, add the channel switch command to nl80211/cfg80211. This is implementation is intended for AP and (later) IBSS mode. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
					parent
					
						
							
								7cf1f14ecf
							
						
					
				
			
			
				commit
				
					
						16ef1fe272
					
				
			
		
					 5 changed files with 229 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -676,6 +676,16 @@
 | 
			
		|||
 * @NL80211_CMD_GET_COALESCE: Get currently supported coalesce rules.
 | 
			
		||||
 * @NL80211_CMD_SET_COALESCE: Configure coalesce rules or clear existing rules.
 | 
			
		||||
 *
 | 
			
		||||
 * @NL80211_CMD_CHANNEL_SWITCH: Perform a channel switch by announcing the
 | 
			
		||||
 *	the new channel information (Channel Switch Announcement - CSA)
 | 
			
		||||
 *	in the beacon for some time (as defined in the
 | 
			
		||||
 *	%NL80211_ATTR_CH_SWITCH_COUNT parameter) and then change to the
 | 
			
		||||
 *	new channel. Userspace provides the new channel information (using
 | 
			
		||||
 *	%NL80211_ATTR_WIPHY_FREQ and the attributes determining channel
 | 
			
		||||
 *	width). %NL80211_ATTR_CH_SWITCH_BLOCK_TX may be supplied to inform
 | 
			
		||||
 *	other station that transmission must be blocked until the channel
 | 
			
		||||
 *	switch is complete.
 | 
			
		||||
 *
 | 
			
		||||
 * @NL80211_CMD_MAX: highest used command number
 | 
			
		||||
 * @__NL80211_CMD_AFTER_LAST: internal use
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -841,6 +851,8 @@ enum nl80211_commands {
 | 
			
		|||
	NL80211_CMD_GET_COALESCE,
 | 
			
		||||
	NL80211_CMD_SET_COALESCE,
 | 
			
		||||
 | 
			
		||||
	NL80211_CMD_CHANNEL_SWITCH,
 | 
			
		||||
 | 
			
		||||
	/* add new commands above here */
 | 
			
		||||
 | 
			
		||||
	/* used to define NL80211_CMD_MAX below */
 | 
			
		||||
| 
						 | 
				
			
			@ -1469,6 +1481,18 @@ enum nl80211_commands {
 | 
			
		|||
 *
 | 
			
		||||
 * @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
 | 
			
		||||
 *
 | 
			
		||||
 * @NL80211_ATTR_CH_SWITCH_COUNT: u32 attribute specifying the number of TBTT's
 | 
			
		||||
 *	until the channel switch event.
 | 
			
		||||
 * @NL80211_ATTR_CH_SWITCH_BLOCK_TX: flag attribute specifying that transmission
 | 
			
		||||
 *	must be blocked on the current channel (before the channel switch
 | 
			
		||||
 *	operation).
 | 
			
		||||
 * @NL80211_ATTR_CSA_IES: Nested set of attributes containing the IE information
 | 
			
		||||
 *	for the time while performing a channel switch.
 | 
			
		||||
 * @NL80211_ATTR_CSA_C_OFF_BEACON: Offset of the channel switch counter
 | 
			
		||||
 *	field in the beacons tail (%NL80211_ATTR_BEACON_TAIL).
 | 
			
		||||
 * @NL80211_ATTR_CSA_C_OFF_PRESP: Offset of the channel switch counter
 | 
			
		||||
 *	field in the probe response (%NL80211_ATTR_PROBE_RESP).
 | 
			
		||||
 *
 | 
			
		||||
 * @NL80211_ATTR_MAX: highest attribute number currently defined
 | 
			
		||||
 * @__NL80211_ATTR_AFTER_LAST: internal use
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -1771,6 +1795,12 @@ enum nl80211_attrs {
 | 
			
		|||
 | 
			
		||||
	NL80211_ATTR_COALESCE_RULE,
 | 
			
		||||
 | 
			
		||||
	NL80211_ATTR_CH_SWITCH_COUNT,
 | 
			
		||||
	NL80211_ATTR_CH_SWITCH_BLOCK_TX,
 | 
			
		||||
	NL80211_ATTR_CSA_IES,
 | 
			
		||||
	NL80211_ATTR_CSA_C_OFF_BEACON,
 | 
			
		||||
	NL80211_ATTR_CSA_C_OFF_PRESP,
 | 
			
		||||
 | 
			
		||||
	/* add attributes here, update the policy in nl80211.c */
 | 
			
		||||
 | 
			
		||||
	__NL80211_ATTR_AFTER_LAST,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue