iwlwifi: "tx power per chain" are part of ucode_tx_stats
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Fri, 30 Apr 2010 18:35:15 +0000 (11:35 -0700)
committerReinette Chatre <reinette.chatre@intel.com>
Mon, 10 May 2010 22:09:03 +0000 (15:09 -0700)
Move "tx power per chain" into ucode_tx_stats, it is debugging
information provided by uCode as part of statistics notification.

The "tx power per chain" parameters are optional parameters which only
supported by 6000 series device today; those are reserved fields for all
the other devices.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/iwlwifi/iwl-debugfs.c

index f249b706bf1749bd3d23bc399e8a431b36658a72..48c023b4ca36d779c2cd1b6ba4100f4659ae12d4 100644 (file)
@@ -709,6 +709,22 @@ ssize_t iwl_ucode_tx_stats_read(struct file *file,
                         delta_tx->agg.rx_ba_rsp_cnt,
                         max_tx->agg.rx_ba_rsp_cnt);
 
+       if (tx->tx_power.ant_a || tx->tx_power.ant_b || tx->tx_power.ant_c) {
+               pos += scnprintf(buf + pos, bufsz - pos,
+                       "tx power: (1/2 dB step)\n");
+               if ((priv->cfg->valid_tx_ant & ANT_A) && tx->tx_power.ant_a)
+                       pos += scnprintf(buf + pos, bufsz - pos,
+                                       "\tantenna A: 0x%X\n",
+                                       tx->tx_power.ant_a);
+               if ((priv->cfg->valid_tx_ant & ANT_B) && tx->tx_power.ant_b)
+                       pos += scnprintf(buf + pos, bufsz - pos,
+                                       "\tantenna B: 0x%X\n",
+                                       tx->tx_power.ant_b);
+               if ((priv->cfg->valid_tx_ant & ANT_C) && tx->tx_power.ant_c)
+                       pos += scnprintf(buf + pos, bufsz - pos,
+                                       "\tantenna C: 0x%X\n",
+                                       tx->tx_power.ant_c);
+       }
        ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
        kfree(buf);
        return ret;
index 449d41f058b873d9c97d376a078d3648ca8d457d..9aab020c474be305dd763f4a088b9c381a71608a 100644 (file)
@@ -3127,6 +3127,11 @@ struct statistics_tx {
        __le32 cts_timeout_collision;
        __le32 ack_or_ba_timeout_collision;
        struct statistics_tx_non_phy_agg agg;
+       /*
+        * "tx_power" are optional parameters provided by uCode,
+        * 6000 series is the only device provide the information,
+        * Those are reserved fields for all the other devices
+        */
        struct statistics_tx_power tx_power;
        __le32 reserved1;
 } __attribute__ ((packed));
index 06905bb9238d6df0f522103e69629ca1ae521c7b..4d6de2dfedd191294ab6385510db7bb3706b4472 100644 (file)
@@ -1214,46 +1214,6 @@ static ssize_t iwl_dbgfs_chain_noise_read(struct file *file,
        return ret;
 }
 
-static ssize_t iwl_dbgfs_chain_tx_power_read(struct file *file,
-                                       char __user *user_buf,
-                                       size_t count, loff_t *ppos) {
-
-       struct iwl_priv *priv = file->private_data;
-       char buf[128];
-       int pos = 0;
-       const size_t bufsz = sizeof(buf);
-       struct statistics_tx *tx;
-
-       if (!iwl_is_alive(priv))
-               return -EAGAIN;
-       else {
-               tx = &priv->statistics.tx;
-               if (tx->tx_power.ant_a ||
-                   tx->tx_power.ant_b ||
-                   tx->tx_power.ant_c) {
-                       pos += scnprintf(buf + pos, bufsz - pos,
-                               "tx power: (1/2 dB step)\n");
-                       if ((priv->cfg->valid_tx_ant & ANT_A) &&
-                           tx->tx_power.ant_a)
-                               pos += scnprintf(buf + pos, bufsz - pos,
-                                               "\tantenna A: 0x%X\n",
-                                               tx->tx_power.ant_a);
-                       if ((priv->cfg->valid_tx_ant & ANT_B) &&
-                           tx->tx_power.ant_b)
-                               pos += scnprintf(buf + pos, bufsz - pos,
-                                               "\tantenna B: 0x%X\n",
-                                               tx->tx_power.ant_b);
-                       if ((priv->cfg->valid_tx_ant & ANT_C) &&
-                           tx->tx_power.ant_c)
-                               pos += scnprintf(buf + pos, bufsz - pos,
-                                               "\tantenna C: 0x%X\n",
-                                               tx->tx_power.ant_c);
-               } else
-                       pos += scnprintf(buf + pos, bufsz - pos, "N/A\n");
-       }
-       return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
-}
-
 static ssize_t iwl_dbgfs_power_save_status_read(struct file *file,
                                                    char __user *user_buf,
                                                    size_t count, loff_t *ppos)
@@ -1565,7 +1525,6 @@ DEBUGFS_READ_FILE_OPS(ucode_tx_stats);
 DEBUGFS_READ_FILE_OPS(ucode_general_stats);
 DEBUGFS_READ_FILE_OPS(sensitivity);
 DEBUGFS_READ_FILE_OPS(chain_noise);
-DEBUGFS_READ_FILE_OPS(chain_tx_power);
 DEBUGFS_READ_FILE_OPS(power_save_status);
 DEBUGFS_WRITE_FILE_OPS(clear_ucode_statistics);
 DEBUGFS_WRITE_FILE_OPS(clear_traffic_statistics);
@@ -1624,7 +1583,6 @@ int iwl_dbgfs_register(struct iwl_priv *priv, const char *name)
        DEBUGFS_ADD_FILE(traffic_log, dir_debug, S_IWUSR | S_IRUSR);
        DEBUGFS_ADD_FILE(rx_queue, dir_debug, S_IRUSR);
        DEBUGFS_ADD_FILE(tx_queue, dir_debug, S_IRUSR);
-       DEBUGFS_ADD_FILE(chain_tx_power, dir_debug, S_IRUSR);
        DEBUGFS_ADD_FILE(power_save_status, dir_debug, S_IRUSR);
        DEBUGFS_ADD_FILE(clear_ucode_statistics, dir_debug, S_IWUSR);
        DEBUGFS_ADD_FILE(clear_traffic_statistics, dir_debug, S_IWUSR);