iwlwifi: mvm: Support new format of SCAN_OFFLOAD_PROFILES_QUERY_RSP
Newer FWs use a new format of the SCAN_OFFLOAD_PROFILES_QUERY_RSP, which now supports indicating match on an higher number of channels. Modify the code to support both the old format and the newer one, based on a FW TLV. Signed-off-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
@@ -788,7 +788,53 @@ struct iwl_umac_scan_complete {
|
||||
__le32 reserved;
|
||||
} __packed; /* SCAN_COMPLETE_NTF_UMAC_API_S_VER_1 */
|
||||
|
||||
#define SCAN_OFFLOAD_MATCHING_CHANNELS_LEN 5
|
||||
#define SCAN_OFFLOAD_MATCHING_CHANNELS_LEN_V1 5
|
||||
#define SCAN_OFFLOAD_MATCHING_CHANNELS_LEN 7
|
||||
|
||||
/**
|
||||
* struct iwl_scan_offload_profile_match_v1 - match information
|
||||
* @bssid: matched bssid
|
||||
* @reserved: reserved
|
||||
* @channel: channel where the match occurred
|
||||
* @energy: energy
|
||||
* @matching_feature: feature matches
|
||||
* @matching_channels: bitmap of channels that matched, referencing
|
||||
* the channels passed in the scan offload request.
|
||||
*/
|
||||
struct iwl_scan_offload_profile_match_v1 {
|
||||
u8 bssid[ETH_ALEN];
|
||||
__le16 reserved;
|
||||
u8 channel;
|
||||
u8 energy;
|
||||
u8 matching_feature;
|
||||
u8 matching_channels[SCAN_OFFLOAD_MATCHING_CHANNELS_LEN_V1];
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S_VER_1 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_offload_profiles_query_v1 - match results query response
|
||||
* @matched_profiles: bitmap of matched profiles, referencing the
|
||||
* matches passed in the scan offload request
|
||||
* @last_scan_age: age of the last offloaded scan
|
||||
* @n_scans_done: number of offloaded scans done
|
||||
* @gp2_d0u: GP2 when D0U occurred
|
||||
* @gp2_invoked: GP2 when scan offload was invoked
|
||||
* @resume_while_scanning: not used
|
||||
* @self_recovery: obsolete
|
||||
* @reserved: reserved
|
||||
* @matches: array of match information, one for each match
|
||||
*/
|
||||
struct iwl_scan_offload_profiles_query_v1 {
|
||||
__le32 matched_profiles;
|
||||
__le32 last_scan_age;
|
||||
__le32 n_scans_done;
|
||||
__le32 gp2_d0u;
|
||||
__le32 gp2_invoked;
|
||||
u8 resume_while_scanning;
|
||||
u8 self_recovery;
|
||||
__le16 reserved;
|
||||
struct iwl_scan_offload_profile_match_v1 matches[IWL_SCAN_MAX_PROFILES];
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_2 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_offload_profile_match - match information
|
||||
* @bssid: matched bssid
|
||||
@@ -797,7 +843,7 @@ struct iwl_umac_scan_complete {
|
||||
* @energy: energy
|
||||
* @matching_feature: feature matches
|
||||
* @matching_channels: bitmap of channels that matched, referencing
|
||||
* the channels passed in tue scan offload request
|
||||
* the channels passed in the scan offload request.
|
||||
*/
|
||||
struct iwl_scan_offload_profile_match {
|
||||
u8 bssid[ETH_ALEN];
|
||||
@@ -806,7 +852,7 @@ struct iwl_scan_offload_profile_match {
|
||||
u8 energy;
|
||||
u8 matching_feature;
|
||||
u8 matching_channels[SCAN_OFFLOAD_MATCHING_CHANNELS_LEN];
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S_VER_1 */
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S_VER_2 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_offload_profiles_query - match results query response
|
||||
@@ -831,7 +877,7 @@ struct iwl_scan_offload_profiles_query {
|
||||
u8 self_recovery;
|
||||
__le16 reserved;
|
||||
struct iwl_scan_offload_profile_match matches[IWL_SCAN_MAX_PROFILES];
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_2 */
|
||||
} __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_3 */
|
||||
|
||||
/**
|
||||
* struct iwl_umac_scan_iter_complete_notif - notifies end of scanning iteration
|
||||
|
@@ -276,6 +276,9 @@ typedef unsigned int __bitwise iwl_ucode_tlv_api_t;
|
||||
* REGULATORY_NVM_GET_INFO_RSP_API_S.
|
||||
* @IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ: This ucode supports v7 of
|
||||
* LOCATION_RANGE_REQ_CMD_API_S and v6 of LOCATION_RANGE_RESP_NTFY_API_S.
|
||||
* @IWL_UCODE_TLV_API_SCAN_OFFLOAD_CHANS: This ucode supports v2 of
|
||||
* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S and v3 of
|
||||
* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S.
|
||||
*
|
||||
* @NUM_IWL_UCODE_TLV_API: number of bits used
|
||||
*/
|
||||
@@ -304,6 +307,7 @@ enum iwl_ucode_tlv_api {
|
||||
IWL_UCODE_TLV_API_BEACON_FILTER_V4 = (__force iwl_ucode_tlv_api_t)47,
|
||||
IWL_UCODE_TLV_API_REGULATORY_NVM_INFO = (__force iwl_ucode_tlv_api_t)48,
|
||||
IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ = (__force iwl_ucode_tlv_api_t)49,
|
||||
IWL_UCODE_TLV_API_SCAN_OFFLOAD_CHANS = (__force iwl_ucode_tlv_api_t)50,
|
||||
|
||||
NUM_IWL_UCODE_TLV_API
|
||||
#ifdef __CHECKER__
|
||||
|
Reference in New Issue
Block a user