mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-10 14:43:54 +08:00
iwlwifi: mvm: Add debugfs entry to enable scan offload notification
This option enables scan offload iteration complete notification from firmware which includes the last iteration's status and the scanned channels from the current iteration. Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
9b8a7a9077
commit
e5d7464652
@ -1490,6 +1490,26 @@ out:
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t iwl_dbgfs_enable_scan_iteration_notif_write(struct iwl_mvm *mvm,
|
||||||
|
char *buf,
|
||||||
|
size_t count,
|
||||||
|
loff_t *ppos)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
|
||||||
|
mutex_lock(&mvm->mutex);
|
||||||
|
|
||||||
|
if (kstrtoint(buf, 10, &val)) {
|
||||||
|
mutex_unlock(&mvm->mutex);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mvm->scan_iter_notif_enabled = val;
|
||||||
|
mutex_unlock(&mvm->mutex);
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
MVM_DEBUGFS_READ_WRITE_FILE_OPS(prph_reg, 64);
|
MVM_DEBUGFS_READ_WRITE_FILE_OPS(prph_reg, 64);
|
||||||
|
|
||||||
/* Device wide debugfs entries */
|
/* Device wide debugfs entries */
|
||||||
@ -1512,6 +1532,7 @@ MVM_DEBUGFS_READ_WRITE_FILE_OPS(scan_ant_rxchain, 8);
|
|||||||
MVM_DEBUGFS_READ_WRITE_FILE_OPS(d0i3_refs, 8);
|
MVM_DEBUGFS_READ_WRITE_FILE_OPS(d0i3_refs, 8);
|
||||||
MVM_DEBUGFS_READ_WRITE_FILE_OPS(fw_dbg_conf, 8);
|
MVM_DEBUGFS_READ_WRITE_FILE_OPS(fw_dbg_conf, 8);
|
||||||
MVM_DEBUGFS_WRITE_FILE_OPS(fw_dbg_collect, 8);
|
MVM_DEBUGFS_WRITE_FILE_OPS(fw_dbg_collect, 8);
|
||||||
|
MVM_DEBUGFS_WRITE_FILE_OPS(enable_scan_iteration_notif, 8);
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
||||||
MVM_DEBUGFS_READ_WRITE_FILE_OPS(bcast_filters, 256);
|
MVM_DEBUGFS_READ_WRITE_FILE_OPS(bcast_filters, 256);
|
||||||
@ -1555,6 +1576,8 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
|
|||||||
MVM_DEBUGFS_ADD_FILE(d0i3_refs, mvm->debugfs_dir, S_IRUSR | S_IWUSR);
|
MVM_DEBUGFS_ADD_FILE(d0i3_refs, mvm->debugfs_dir, S_IRUSR | S_IWUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(fw_dbg_conf, mvm->debugfs_dir, S_IRUSR | S_IWUSR);
|
MVM_DEBUGFS_ADD_FILE(fw_dbg_conf, mvm->debugfs_dir, S_IRUSR | S_IWUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(fw_dbg_collect, mvm->debugfs_dir, S_IWUSR);
|
MVM_DEBUGFS_ADD_FILE(fw_dbg_collect, mvm->debugfs_dir, S_IWUSR);
|
||||||
|
MVM_DEBUGFS_ADD_FILE(enable_scan_iteration_notif, mvm->debugfs_dir,
|
||||||
|
S_IWUSR);
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
||||||
if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING) {
|
if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING) {
|
||||||
|
@ -642,6 +642,8 @@ struct iwl_mvm {
|
|||||||
bool disable_power_off;
|
bool disable_power_off;
|
||||||
bool disable_power_off_d3;
|
bool disable_power_off_d3;
|
||||||
|
|
||||||
|
bool scan_iter_notif_enabled;
|
||||||
|
|
||||||
struct debugfs_blob_wrapper nvm_hw_blob;
|
struct debugfs_blob_wrapper nvm_hw_blob;
|
||||||
struct debugfs_blob_wrapper nvm_sw_blob;
|
struct debugfs_blob_wrapper nvm_sw_blob;
|
||||||
struct debugfs_blob_wrapper nvm_calib_blob;
|
struct debugfs_blob_wrapper nvm_calib_blob;
|
||||||
@ -1061,6 +1063,9 @@ int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm, bool is_sched_scan);
|
|||||||
int iwl_mvm_rx_scan_offload_complete_notif(struct iwl_mvm *mvm,
|
int iwl_mvm_rx_scan_offload_complete_notif(struct iwl_mvm *mvm,
|
||||||
struct iwl_rx_cmd_buffer *rxb,
|
struct iwl_rx_cmd_buffer *rxb,
|
||||||
struct iwl_device_cmd *cmd);
|
struct iwl_device_cmd *cmd);
|
||||||
|
int iwl_mvm_rx_scan_offload_iter_complete_notif(struct iwl_mvm *mvm,
|
||||||
|
struct iwl_rx_cmd_buffer *rxb,
|
||||||
|
struct iwl_device_cmd *cmd);
|
||||||
int iwl_mvm_config_sched_scan(struct iwl_mvm *mvm,
|
int iwl_mvm_config_sched_scan(struct iwl_mvm *mvm,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct cfg80211_sched_scan_request *req,
|
struct cfg80211_sched_scan_request *req,
|
||||||
|
@ -234,6 +234,8 @@ static const struct iwl_rx_handlers iwl_mvm_rx_handlers[] = {
|
|||||||
|
|
||||||
RX_HANDLER(SCAN_REQUEST_CMD, iwl_mvm_rx_scan_response, false),
|
RX_HANDLER(SCAN_REQUEST_CMD, iwl_mvm_rx_scan_response, false),
|
||||||
RX_HANDLER(SCAN_COMPLETE_NOTIFICATION, iwl_mvm_rx_scan_complete, true),
|
RX_HANDLER(SCAN_COMPLETE_NOTIFICATION, iwl_mvm_rx_scan_complete, true),
|
||||||
|
RX_HANDLER(SCAN_ITERATION_COMPLETE,
|
||||||
|
iwl_mvm_rx_scan_offload_iter_complete_notif, false),
|
||||||
RX_HANDLER(SCAN_OFFLOAD_COMPLETE,
|
RX_HANDLER(SCAN_OFFLOAD_COMPLETE,
|
||||||
iwl_mvm_rx_scan_offload_complete_notif, true),
|
iwl_mvm_rx_scan_offload_complete_notif, true),
|
||||||
RX_HANDLER(MATCH_FOUND_NOTIFICATION, iwl_mvm_rx_scan_offload_results,
|
RX_HANDLER(MATCH_FOUND_NOTIFICATION, iwl_mvm_rx_scan_offload_results,
|
||||||
|
@ -536,6 +536,19 @@ int iwl_mvm_rx_scan_response(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int iwl_mvm_rx_scan_offload_iter_complete_notif(struct iwl_mvm *mvm,
|
||||||
|
struct iwl_rx_cmd_buffer *rxb,
|
||||||
|
struct iwl_device_cmd *cmd)
|
||||||
|
{
|
||||||
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||||
|
struct iwl_scan_complete_notif *notif = (void *)pkt->data;
|
||||||
|
|
||||||
|
IWL_DEBUG_SCAN(mvm,
|
||||||
|
"Scan offload iteration complete: status=0x%x scanned channels=%d\n",
|
||||||
|
notif->status, notif->scanned_channels);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int iwl_mvm_rx_scan_complete(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
|
int iwl_mvm_rx_scan_complete(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
|
||||||
struct iwl_device_cmd *cmd)
|
struct iwl_device_cmd *cmd)
|
||||||
{
|
{
|
||||||
@ -1468,6 +1481,11 @@ int iwl_mvm_unified_sched_scan_lmac(struct iwl_mvm *mvm,
|
|||||||
if (req->n_ssids == 0)
|
if (req->n_ssids == 0)
|
||||||
flags |= IWL_MVM_LMAC_SCAN_FLAG_PASSIVE;
|
flags |= IWL_MVM_LMAC_SCAN_FLAG_PASSIVE;
|
||||||
|
|
||||||
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||||
|
if (mvm->scan_iter_notif_enabled)
|
||||||
|
flags |= IWL_MVM_LMAC_SCAN_FLAG_ITER_COMPLETE;
|
||||||
|
#endif
|
||||||
|
|
||||||
cmd->scan_flags |= cpu_to_le32(flags);
|
cmd->scan_flags |= cpu_to_le32(flags);
|
||||||
|
|
||||||
cmd->flags = iwl_mvm_scan_rxon_flags(req->channels[0]->band);
|
cmd->flags = iwl_mvm_scan_rxon_flags(req->channels[0]->band);
|
||||||
|
Loading…
Reference in New Issue
Block a user