iwlwifi: "tx power per chain" are part of ucode_tx_stats
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>
This commit is contained in:
committed by
Reinette Chatre
parent
3bce606626
commit
470356b891
@@ -709,6 +709,22 @@ ssize_t iwl_ucode_tx_stats_read(struct file *file,
|
|||||||
delta_tx->agg.rx_ba_rsp_cnt,
|
delta_tx->agg.rx_ba_rsp_cnt,
|
||||||
max_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);
|
ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -3127,6 +3127,11 @@ struct statistics_tx {
|
|||||||
__le32 cts_timeout_collision;
|
__le32 cts_timeout_collision;
|
||||||
__le32 ack_or_ba_timeout_collision;
|
__le32 ack_or_ba_timeout_collision;
|
||||||
struct statistics_tx_non_phy_agg agg;
|
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;
|
struct statistics_tx_power tx_power;
|
||||||
__le32 reserved1;
|
__le32 reserved1;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
@@ -1214,46 +1214,6 @@ static ssize_t iwl_dbgfs_chain_noise_read(struct file *file,
|
|||||||
return ret;
|
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,
|
static ssize_t iwl_dbgfs_power_save_status_read(struct file *file,
|
||||||
char __user *user_buf,
|
char __user *user_buf,
|
||||||
size_t count, loff_t *ppos)
|
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(ucode_general_stats);
|
||||||
DEBUGFS_READ_FILE_OPS(sensitivity);
|
DEBUGFS_READ_FILE_OPS(sensitivity);
|
||||||
DEBUGFS_READ_FILE_OPS(chain_noise);
|
DEBUGFS_READ_FILE_OPS(chain_noise);
|
||||||
DEBUGFS_READ_FILE_OPS(chain_tx_power);
|
|
||||||
DEBUGFS_READ_FILE_OPS(power_save_status);
|
DEBUGFS_READ_FILE_OPS(power_save_status);
|
||||||
DEBUGFS_WRITE_FILE_OPS(clear_ucode_statistics);
|
DEBUGFS_WRITE_FILE_OPS(clear_ucode_statistics);
|
||||||
DEBUGFS_WRITE_FILE_OPS(clear_traffic_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(traffic_log, dir_debug, S_IWUSR | S_IRUSR);
|
||||||
DEBUGFS_ADD_FILE(rx_queue, dir_debug, S_IRUSR);
|
DEBUGFS_ADD_FILE(rx_queue, dir_debug, S_IRUSR);
|
||||||
DEBUGFS_ADD_FILE(tx_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(power_save_status, dir_debug, S_IRUSR);
|
||||||
DEBUGFS_ADD_FILE(clear_ucode_statistics, dir_debug, S_IWUSR);
|
DEBUGFS_ADD_FILE(clear_ucode_statistics, dir_debug, S_IWUSR);
|
||||||
DEBUGFS_ADD_FILE(clear_traffic_statistics, dir_debug, S_IWUSR);
|
DEBUGFS_ADD_FILE(clear_traffic_statistics, dir_debug, S_IWUSR);
|
||||||
|
Reference in New Issue
Block a user