diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | 77 | 
1 files changed, 59 insertions, 18 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h index 83cb9b992ea..6959fda3fe0 100644 --- a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h @@ -5,7 +5,7 @@   *   * GPL LICENSE SUMMARY   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of version 2 of the GNU General Public License as @@ -30,7 +30,7 @@   *   * BSD LICENSE   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -169,8 +169,12 @@ enum iwl_scan_type {  	SCAN_TYPE_DISCOVERY_FORCED	= 6,  }; /* SCAN_ACTIVITY_TYPE_E_VER_1 */ -/* Maximal number of channels to scan */ -#define MAX_NUM_SCAN_CHANNELS 0x24 +/** + * Maximal number of channels to scan + * it should be equal to: + * max(IWL_NUM_CHANNELS, IWL_NUM_CHANNELS_FAMILY_8000) + */ +#define MAX_NUM_SCAN_CHANNELS 50  /**   * struct iwl_scan_cmd - scan request command @@ -183,9 +187,9 @@ enum iwl_scan_type {   *	this number of packets were received (typically 1)   * @passive2active: is auto switching from passive to active during scan allowed   * @rxchain_sel_flags: RXON_RX_CHAIN_* - * @max_out_time: in usecs, max out of serving channel time + * @max_out_time: in TUs, max out of serving channel time   * @suspend_time: how long to pause scan when returning to service channel: - *	bits 0-19: beacon interal in usecs (suspend before executing) + *	bits 0-19: beacon interal in TUs (suspend before executing)   *	bits 20-23: reserved   *	bits 24-31: number of beacons (suspend between channels)   * @rxon_flags: RXON_FLG_* @@ -356,6 +360,7 @@ struct iwl_scan_complete_notif {  /* scan offload */  #define IWL_MAX_SCAN_CHANNELS		40  #define IWL_SCAN_MAX_BLACKLIST_LEN	64 +#define IWL_SCAN_SHORT_BLACKLIST_LEN	16  #define IWL_SCAN_MAX_PROFILES		11  #define SCAN_OFFLOAD_PROBE_REQ_SIZE	512 @@ -368,6 +373,12 @@ struct iwl_scan_complete_notif {  #define IWL_FULL_SCAN_MULTIPLIER 5  #define IWL_FAST_SCHED_SCAN_ITERATIONS 3 +enum scan_framework_client { +	SCAN_CLIENT_SCHED_SCAN		= BIT(0), +	SCAN_CLIENT_NETDETECT		= BIT(1), +	SCAN_CLIENT_ASSET_TRACKING	= BIT(2), +}; +  /**   * struct iwl_scan_offload_cmd - SCAN_REQUEST_FIXED_PART_API_S_VER_6   * @scan_flags:		see enum iwl_scan_flags @@ -376,8 +387,8 @@ struct iwl_scan_complete_notif {   * @quiet_plcp_th:	quiet channel num of packets threshold   * @good_CRC_th:	passive to active promotion threshold   * @rx_chain:		RXON rx chain. - * @max_out_time:	max uSec to be out of assoceated channel - * @suspend_time:	pause scan this long when returning to service channel + * @max_out_time:	max TUs to be out of assoceated channel + * @suspend_time:	pause scan this TUs when returning to service channel   * @flags:		RXON flags   * @filter_flags:	RXONfilter   * @tx_cmd:		tx command for active scan; for 2GHz and for 5GHz. @@ -449,11 +460,12 @@ struct iwl_scan_offload_cfg {   * iwl_scan_offload_blacklist - SCAN_OFFLOAD_BLACKLIST_S   * @ssid:		MAC address to filter out   * @reported_rssi:	AP rssi reported to the host + * @client_bitmap: clients ignore this entry  - enum scan_framework_client   */  struct iwl_scan_offload_blacklist {  	u8 ssid[ETH_ALEN];  	u8 reported_rssi; -	u8 reserved; +	u8 client_bitmap;  } __packed;  enum iwl_scan_offload_network_type { @@ -475,6 +487,7 @@ enum iwl_scan_offload_band_selection {   * @aut_alg:		authentication olgorithm to match - bitmap   * @network_type:	enum iwl_scan_offload_network_type   * @band_selection:	enum iwl_scan_offload_band_selection + * @client_bitmap:	clients waiting for match - enum scan_framework_client   */  struct iwl_scan_offload_profile {  	u8 ssid_index; @@ -482,7 +495,8 @@ struct iwl_scan_offload_profile {  	u8 auth_alg;  	u8 network_type;  	u8 band_selection; -	u8 reserved[3]; +	u8 client_bitmap; +	u8 reserved[2];  } __packed;  /** @@ -491,12 +505,19 @@ struct iwl_scan_offload_profile {   * @profiles:		profiles to search for match   * @blacklist_len:	length of blacklist   * @num_profiles:	num of profiles in the list + * @match_notify:	clients waiting for match found notification + * @pass_match:		clients waiting for the results + * @active_clients:	active clients bitmap - enum scan_framework_client + * @any_beacon_notify:	clients waiting for match notification without match   */  struct iwl_scan_offload_profile_cfg { -	struct iwl_scan_offload_blacklist blacklist[IWL_SCAN_MAX_BLACKLIST_LEN];  	struct iwl_scan_offload_profile profiles[IWL_SCAN_MAX_PROFILES];  	u8 blacklist_len;  	u8 num_profiles; +	u8 match_notify; +	u8 pass_match; +	u8 active_clients; +	u8 any_beacon_notify;  	u8 reserved[2];  } __packed; @@ -515,16 +536,18 @@ struct iwl_scan_offload_schedule {  /*   * iwl_scan_offload_flags   * - * IWL_SCAN_OFFLOAD_FLAG_FILTER_SSID: filter mode - upload every beacon or match - *	ssid list. + * IWL_SCAN_OFFLOAD_FLAG_PASS_ALL: pass all results - no filtering.   * IWL_SCAN_OFFLOAD_FLAG_CACHED_CHANNEL: add cached channels to partial scan. - * IWL_SCAN_OFFLOAD_FLAG_ENERGY_SCAN: use energy based scan before partial scan - *	on A band. + * IWL_SCAN_OFFLOAD_FLAG_EBS_QUICK_MODE: EBS duration is 100mSec - typical + *	beacon period. Finding channel activity in this mode is not guaranteed. + * IWL_SCAN_OFFLOAD_FLAG_EBS_ACCURATE_MODE: EBS duration is 200mSec. + *	Assuming beacon period is 100ms finding channel activity is guaranteed.   */  enum iwl_scan_offload_flags { -	IWL_SCAN_OFFLOAD_FLAG_FILTER_SSID	= BIT(0), +	IWL_SCAN_OFFLOAD_FLAG_PASS_ALL		= BIT(0),  	IWL_SCAN_OFFLOAD_FLAG_CACHED_CHANNEL	= BIT(2), -	IWL_SCAN_OFFLOAD_FLAG_ENERGY_SCAN	= BIT(3), +	IWL_SCAN_OFFLOAD_FLAG_EBS_QUICK_MODE	= BIT(5), +	IWL_SCAN_OFFLOAD_FLAG_EBS_ACCURATE_MODE	= BIT(6),  };  /** @@ -547,17 +570,35 @@ enum iwl_scan_offload_compleate_status {  	IWL_SCAN_OFFLOAD_ABORTED	= 2,  }; +enum iwl_scan_ebs_status { +	IWL_SCAN_EBS_SUCCESS, +	IWL_SCAN_EBS_FAILED, +	IWL_SCAN_EBS_CHAN_NOT_FOUND, +}; +  /**   * iwl_scan_offload_complete - SCAN_OFFLOAD_COMPLETE_NTF_API_S_VER_1   * @last_schedule_line:		last schedule line executed (fast or regular)   * @last_schedule_iteration:	last scan iteration executed before scan abort   * @status:			enum iwl_scan_offload_compleate_status + * @ebs_status: last EBS status, see IWL_SCAN_EBS_*   */  struct iwl_scan_offload_complete {  	u8 last_schedule_line;  	u8 last_schedule_iteration;  	u8 status; -	u8 reserved; +	u8 ebs_status;  } __packed; +/** + * iwl_sched_scan_results - SCAN_OFFLOAD_MATCH_FOUND_NTF_API_S_VER_1 + * @ssid_bitmap:	SSIDs indexes found in this iteration + * @client_bitmap:	clients that are active and wait for this notification + */ +struct iwl_sched_scan_results { +	__le16 ssid_bitmap; +	u8 client_bitmap; +	u8 reserved; +}; +  #endif  | 
