Commit 5ac54afd authored by Ilan Peer's avatar Ilan Peer Committed by Gregory Greenman

wifi: iwlwifi: mvm: Add handling for scan offload match info notification

To support FW versions that send the scan match information as
an asynchronous notification.
Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20220906161827.bbc5602d0b6f.I1329c231f82e7bf18f7dba0ccbd9f2d4080cbfc1@changeidSigned-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
parent 319756ad
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* /*
* Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
* Copyright (C) 2016-2017 Intel Deutschland GmbH * Copyright (C) 2016-2017 Intel Deutschland GmbH
* Copyright (C) 2018-2020 Intel Corporation * Copyright (C) 2018-2022 Intel Corporation
*/ */
#ifndef __iwl_fw_api_commands_h__ #ifndef __iwl_fw_api_commands_h__
#define __iwl_fw_api_commands_h__ #define __iwl_fw_api_commands_h__
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
* &enum iwl_phy_ops_subcmd_ids * &enum iwl_phy_ops_subcmd_ids
* @DATA_PATH_GROUP: data path group, uses command IDs from * @DATA_PATH_GROUP: data path group, uses command IDs from
* &enum iwl_data_path_subcmd_ids * &enum iwl_data_path_subcmd_ids
* @SCAN_GROUP: scan group, uses command IDs from
* &enum iwl_scan_subcmd_ids
* @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids
* @LOCATION_GROUP: location group, uses command IDs from * @LOCATION_GROUP: location group, uses command IDs from
* &enum iwl_location_subcmd_ids * &enum iwl_location_subcmd_ids
...@@ -36,6 +38,7 @@ enum iwl_mvm_command_groups { ...@@ -36,6 +38,7 @@ enum iwl_mvm_command_groups {
MAC_CONF_GROUP = 0x3, MAC_CONF_GROUP = 0x3,
PHY_OPS_GROUP = 0x4, PHY_OPS_GROUP = 0x4,
DATA_PATH_GROUP = 0x5, DATA_PATH_GROUP = 0x5,
SCAN_GROUP = 0x6,
NAN_GROUP = 0x7, NAN_GROUP = 0x7,
LOCATION_GROUP = 0x8, LOCATION_GROUP = 0x8,
PROT_OFFLOAD_GROUP = 0xb, PROT_OFFLOAD_GROUP = 0xb,
......
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/* /*
* Copyright (C) 2012-2014, 2018-2021 Intel Corporation * Copyright (C) 2012-2014, 2018-2022 Intel Corporation
* Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
* Copyright (C) 2016-2017 Intel Deutschland GmbH * Copyright (C) 2016-2017 Intel Deutschland GmbH
*/ */
...@@ -9,6 +9,16 @@ ...@@ -9,6 +9,16 @@
/* Scan Commands, Responses, Notifications */ /* Scan Commands, Responses, Notifications */
/**
* enum iwl_scan_subcmd_ids - scan commands
*/
enum iwl_scan_subcmd_ids {
/**
* @OFFLOAD_MATCH_INFO_NOTIF: &struct iwl_scan_offload_match_info
*/
OFFLOAD_MATCH_INFO_NOTIF = 0xFC,
};
/* Max number of IEs for direct SSID scans in a command */ /* Max number of IEs for direct SSID scans in a command */
#define PROBE_OPTION_MAX 20 #define PROBE_OPTION_MAX 20
...@@ -1188,7 +1198,7 @@ struct iwl_scan_offload_profile_match { ...@@ -1188,7 +1198,7 @@ struct iwl_scan_offload_profile_match {
} __packed; /* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S_VER_2 */ } __packed; /* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S_VER_2 */
/** /**
* struct iwl_scan_offload_profiles_query - match results query response * struct iwl_scan_offload_match_info - match results information
* @matched_profiles: bitmap of matched profiles, referencing the * @matched_profiles: bitmap of matched profiles, referencing the
* matches passed in the scan offload request * matches passed in the scan offload request
* @last_scan_age: age of the last offloaded scan * @last_scan_age: age of the last offloaded scan
...@@ -1200,7 +1210,7 @@ struct iwl_scan_offload_profile_match { ...@@ -1200,7 +1210,7 @@ struct iwl_scan_offload_profile_match {
* @reserved: reserved * @reserved: reserved
* @matches: array of match information, one for each match * @matches: array of match information, one for each match
*/ */
struct iwl_scan_offload_profiles_query { struct iwl_scan_offload_match_info {
__le32 matched_profiles; __le32 matched_profiles;
__le32 last_scan_age; __le32 last_scan_age;
__le32 n_scans_done; __le32 n_scans_done;
...@@ -1210,7 +1220,9 @@ struct iwl_scan_offload_profiles_query { ...@@ -1210,7 +1220,9 @@ struct iwl_scan_offload_profiles_query {
u8 self_recovery; u8 self_recovery;
__le16 reserved; __le16 reserved;
struct iwl_scan_offload_profile_match matches[]; struct iwl_scan_offload_profile_match matches[];
} __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_3 */ } __packed; /* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S_VER_3 and
* SCAN_OFFLOAD_MATCH_INFO_NOTIFICATION_S_VER_1
*/
/** /**
* struct iwl_umac_scan_iter_complete_notif - notifies end of scanning iteration * struct iwl_umac_scan_iter_complete_notif - notifies end of scanning iteration
......
This diff is collapsed.
...@@ -554,6 +554,13 @@ static const struct iwl_hcmd_names iwl_mvm_data_path_names[] = { ...@@ -554,6 +554,13 @@ static const struct iwl_hcmd_names iwl_mvm_data_path_names[] = {
HCMD_NAME(RX_QUEUES_NOTIFICATION), HCMD_NAME(RX_QUEUES_NOTIFICATION),
}; };
/* Please keep this array *SORTED* by hex value.
* Access is done through binary search
*/
static const struct iwl_hcmd_names iwl_mvm_scan_names[] = {
HCMD_NAME(OFFLOAD_MATCH_INFO_NOTIF),
};
/* Please keep this array *SORTED* by hex value. /* Please keep this array *SORTED* by hex value.
* Access is done through binary search * Access is done through binary search
*/ */
...@@ -596,6 +603,7 @@ static const struct iwl_hcmd_arr iwl_mvm_groups[] = { ...@@ -596,6 +603,7 @@ static const struct iwl_hcmd_arr iwl_mvm_groups[] = {
[MAC_CONF_GROUP] = HCMD_ARR(iwl_mvm_mac_conf_names), [MAC_CONF_GROUP] = HCMD_ARR(iwl_mvm_mac_conf_names),
[PHY_OPS_GROUP] = HCMD_ARR(iwl_mvm_phy_names), [PHY_OPS_GROUP] = HCMD_ARR(iwl_mvm_phy_names),
[DATA_PATH_GROUP] = HCMD_ARR(iwl_mvm_data_path_names), [DATA_PATH_GROUP] = HCMD_ARR(iwl_mvm_data_path_names),
[SCAN_GROUP] = HCMD_ARR(iwl_mvm_scan_names),
[LOCATION_GROUP] = HCMD_ARR(iwl_mvm_location_names), [LOCATION_GROUP] = HCMD_ARR(iwl_mvm_location_names),
[PROT_OFFLOAD_GROUP] = HCMD_ARR(iwl_mvm_prot_offload_names), [PROT_OFFLOAD_GROUP] = HCMD_ARR(iwl_mvm_prot_offload_names),
[REGULATORY_AND_NVM_GROUP] = [REGULATORY_AND_NVM_GROUP] =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment