On 8/31/2018 11:56 AM, Luca Coelho wrote:
From: Shaul Triebitz <shaul.triebitz@xxxxxxxxx> In order to receive TB (Trigger Based) PPDU in monitor mode, the Driver must send the HE_AIR_SNIFFER_CONFIG_CMD host command. Enable that via debugfs. Signed-off-by: Liad Kaufman <liad.kaufman@xxxxxxxxx> Signed-off-by: Ido Yariv <idox.yariv@xxxxxxxxx> Signed-off-by: Shaul Triebitz <shaul.triebitz@xxxxxxxxx> Signed-off-by: Luca Coelho <luciano.coelho@xxxxxxxxx> --- .../wireless/intel/iwlwifi/fw/api/datapath.h | 5 ++ .../net/wireless/intel/iwlwifi/fw/api/mac.h | 14 +++++ .../net/wireless/intel/iwlwifi/mvm/debugfs.c | 53 +++++++++++++++++++ 3 files changed, 72 insertions(+)
[snip]
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c index 202158d03d36..725b97ecb447 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c @@ -1727,6 +1727,57 @@ iwl_dbgfs_send_echo_cmd_write(struct iwl_mvm *mvm, char *buf, return ret ?: count; } +static ssize_t +iwl_dbgfs_set_aid_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) +{ + return 0; +} + +static ssize_t +iwl_dbgfs_set_aid_write(struct file *file, const char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct iwl_mvm *mvm = file->private_data; + struct iwl_he_monitor_cmd he_mon_cmd = {}; + u8 tmp_buf[32]; + u32 aid; + int ret; + + if (!iwl_mvm_firmware_running(mvm)) + return -EIO; + + if (count > sizeof(tmp_buf)) + return -EINVAL; + + if (copy_from_user(tmp_buf, user_buf, count)) + return -EIO; + + ret = sscanf(tmp_buf, "%x %2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx", &aid, + &he_mon_cmd.bssid[0], &he_mon_cmd.bssid[1], + &he_mon_cmd.bssid[2], &he_mon_cmd.bssid[3], + &he_mon_cmd.bssid[4], &he_mon_cmd.bssid[5]); + if (ret != 7) + return -EINVAL; + + he_mon_cmd.aid = cpu_to_le16(aid); + + mutex_lock(&mvm->mutex); + ret = iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(HE_AIR_SNIFFER_CONFIG_CMD, + DATA_PATH_GROUP, 0), 0, + sizeof(he_mon_cmd), &he_mon_cmd); + mutex_unlock(&mvm->mutex); + + return ret ?: count; +} + +static const struct file_operations iwl_dbgfs_set_aid_ops = { + .read = iwl_dbgfs_set_aid_read, + .write = iwl_dbgfs_set_aid_write, + .open = simple_open, + .llseek = default_llseek, +};
What's with the name 'set_aid'? Regards, Arend