]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/iwlwifi/mvm/debugfs.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
[karo-tx-linux.git] / drivers / net / wireless / iwlwifi / mvm / debugfs.c
index 7d69a556bcc820861692b2349d85d470eec69ca0..05928fb4021d5c23dd3801289094d4ad205d6bd2 100644 (file)
@@ -85,7 +85,7 @@ static ssize_t iwl_dbgfs_tx_flush_write(struct iwl_mvm *mvm, char *buf,
        IWL_ERR(mvm, "FLUSHING queues: scd_q_msk = 0x%x\n", scd_q_msk);
 
        mutex_lock(&mvm->mutex);
-       ret =  iwl_mvm_flush_tx_path(mvm, scd_q_msk, true) ? : count;
+       ret =  iwl_mvm_flush_tx_path(mvm, scd_q_msk, 0) ? : count;
        mutex_unlock(&mvm->mutex);
 
        return ret;
@@ -1214,118 +1214,6 @@ static ssize_t iwl_dbgfs_d3_sram_read(struct file *file, char __user *user_buf,
 
        return ret;
 }
-
-#define MAX_NUM_ND_MATCHSETS 10
-
-static ssize_t iwl_dbgfs_netdetect_write(struct iwl_mvm *mvm, char *buf,
-                                        size_t count, loff_t *ppos)
-{
-       const char *seps = ",\n";
-       char *buf_ptr = buf;
-       char *value_str = NULL;
-       int ret, i;
-
-       /* TODO: don't free if write is being called several times in one go */
-       if (mvm->nd_config) {
-               kfree(mvm->nd_config->match_sets);
-               kfree(mvm->nd_config);
-               mvm->nd_config = NULL;
-       }
-
-       mvm->nd_config = kzalloc(sizeof(*mvm->nd_config) +
-                                (11 * sizeof(struct ieee80211_channel *)),
-                                GFP_KERNEL);
-       if (!mvm->nd_config) {
-               ret = -ENOMEM;
-               goto out_free;
-       }
-
-       mvm->nd_config->n_channels = 11;
-       mvm->nd_config->scan_width = NL80211_BSS_CHAN_WIDTH_20;
-       mvm->nd_config->interval = 5;
-       mvm->nd_config->min_rssi_thold = -80;
-       for (i = 0; i < mvm->nd_config->n_channels; i++)
-               mvm->nd_config->channels[i] = &mvm->nvm_data->channels[i];
-
-       mvm->nd_config->match_sets =
-               kcalloc(MAX_NUM_ND_MATCHSETS,
-                       sizeof(*mvm->nd_config->match_sets),
-                       GFP_KERNEL);
-       if (!mvm->nd_config->match_sets) {
-               ret = -ENOMEM;
-               goto out_free;
-       }
-
-       while ((value_str = strsep(&buf_ptr, seps)) &&
-              strlen(value_str)) {
-               struct cfg80211_match_set *set;
-
-               if (mvm->nd_config->n_match_sets >= MAX_NUM_ND_MATCHSETS) {
-                       ret = -EINVAL;
-                       goto out_free;
-               }
-
-               set = &mvm->nd_config->match_sets[mvm->nd_config->n_match_sets];
-               set->ssid.ssid_len = strlen(value_str);
-
-               if (set->ssid.ssid_len > IEEE80211_MAX_SSID_LEN) {
-                       ret = -EINVAL;
-                       goto out_free;
-               }
-
-               memcpy(set->ssid.ssid, value_str, set->ssid.ssid_len);
-
-               mvm->nd_config->n_match_sets++;
-       }
-
-       ret = count;
-
-       if (mvm->nd_config->n_match_sets)
-               goto out;
-
-out_free:
-       if (mvm->nd_config)
-               kfree(mvm->nd_config->match_sets);
-       kfree(mvm->nd_config);
-       mvm->nd_config = NULL;
-out:
-       return ret;
-}
-
-static ssize_t
-iwl_dbgfs_netdetect_read(struct file *file, char __user *user_buf,
-                        size_t count, loff_t *ppos)
-{
-       struct iwl_mvm *mvm = file->private_data;
-       size_t bufsz, ret;
-       char *buf;
-       int i, n_match_sets, pos = 0;
-
-       n_match_sets = mvm->nd_config ? mvm->nd_config->n_match_sets : 0;
-
-       bufsz = n_match_sets * (IEEE80211_MAX_SSID_LEN + 1) + 1;
-       buf = kzalloc(bufsz, GFP_KERNEL);
-       if (!buf)
-               return -ENOMEM;
-
-       for (i = 0; i < n_match_sets; i++) {
-               if (pos +
-                   mvm->nd_config->match_sets[i].ssid.ssid_len + 2 > bufsz) {
-                       ret = -EIO;
-                       goto out;
-               }
-
-               memcpy(buf + pos, mvm->nd_config->match_sets[i].ssid.ssid,
-                      mvm->nd_config->match_sets[i].ssid.ssid_len);
-               pos += mvm->nd_config->match_sets[i].ssid.ssid_len;
-               buf[pos++] = '\n';
-       }
-
-       ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
-out:
-       kfree(buf);
-       return ret;
-}
 #endif
 
 #define PRINT_MVM_REF(ref) do {                                                \
@@ -1473,11 +1361,25 @@ out:
        return count;
 }
 
+static ssize_t
+iwl_dbgfs_send_echo_cmd_write(struct iwl_mvm *mvm, char *buf,
+                             size_t count, loff_t *ppos)
+{
+       int ret;
+
+       mutex_lock(&mvm->mutex);
+       ret = iwl_mvm_send_cmd_pdu(mvm, ECHO_CMD, 0, 0, NULL);
+       mutex_unlock(&mvm->mutex);
+
+       return ret ?: count;
+}
+
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(prph_reg, 64);
 
 /* Device wide debugfs entries */
 MVM_DEBUGFS_WRITE_FILE_OPS(tx_flush, 16);
 MVM_DEBUGFS_WRITE_FILE_OPS(sta_drain, 8);
+MVM_DEBUGFS_WRITE_FILE_OPS(send_echo_cmd, 8);
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(sram, 64);
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(set_nic_temperature, 64);
 MVM_DEBUGFS_READ_FILE_OPS(nic_temp);
@@ -1503,7 +1405,6 @@ MVM_DEBUGFS_READ_WRITE_FILE_OPS(bcast_filters_macs, 256);
 
 #ifdef CONFIG_PM_SLEEP
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(d3_sram, 8);
-MVM_DEBUGFS_READ_WRITE_FILE_OPS(netdetect, 384);
 #endif
 
 int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
@@ -1538,6 +1439,7 @@ 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(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(send_echo_cmd, mvm->debugfs_dir, S_IWUSR);
        if (!debugfs_create_bool("enable_scan_iteration_notif",
                                 S_IRUSR | S_IWUSR,
                                 mvm->debugfs_dir,
@@ -1572,7 +1474,6 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
        if (!debugfs_create_u32("last_netdetect_scans", S_IRUSR,
                                mvm->debugfs_dir, &mvm->last_netdetect_scans))
                goto err;
-       MVM_DEBUGFS_ADD_FILE(netdetect, mvm->debugfs_dir, S_IRUSR | S_IWUSR);
 #endif
 
        if (!debugfs_create_u8("low_latency_agg_frame_limit", S_IRUSR | S_IWUSR,
@@ -1594,6 +1495,9 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
        if (!debugfs_create_blob("nvm_prod", S_IRUSR,
                                  mvm->debugfs_dir, &mvm->nvm_prod_blob))
                goto err;
+       if (!debugfs_create_blob("nvm_phy_sku", S_IRUSR,
+                                mvm->debugfs_dir, &mvm->nvm_phy_sku_blob))
+               goto err;
 
        /*
         * Create a symlink with mac80211. It will be removed when mac80211