diff options
Diffstat (limited to 'debugfs.c')
-rw-r--r-- | debugfs.c | 68 |
1 files changed, 53 insertions, 15 deletions
@@ -99,6 +99,11 @@ static ssize_t mwl_debugfs_info_read(struct file *file, char __user *ubuf, len += scnprintf(p + len, size - len, "firmware version: 0x%08x\n", priv->hw_data.fw_release_num); len += scnprintf(p + len, size - len, + "power table loaded from dts: %s\n", + priv->forbidden_setting ? "no" : "yes"); + len += scnprintf(p + len, size - len, "firmware region code: 0x%x\n", + priv->fw_region_code); + len += scnprintf(p + len, size - len, "mac address: %pM\n", priv->hw_data.mac_addr); len += scnprintf(p + len, size - len, "2g: %s\n", priv->disable_2g ? "disable" : "enable"); @@ -122,8 +127,6 @@ static ssize_t mwl_debugfs_info_read(struct file *file, char __user *ubuf, "macid used: %08x\n", priv->macids_used); len += scnprintf(p + len, size - len, "qe trigger number: %d\n", priv->qe_trigger_num); - len += scnprintf(p + len, size - len, - "mfg mode: %s\n", priv->mfg_mode ? "true" : "false"); len += scnprintf(p + len, size - len, "\n"); ret = simple_read_from_buffer(ubuf, count, ppos, p, len); @@ -165,11 +168,6 @@ static ssize_t mwl_debugfs_vif_read(struct file *file, char __user *ubuf, len += scnprintf(p + len, size - len, "mac address: %pM\n", mwl_vif->bssid); break; - case NL80211_IFTYPE_MESH_POINT: - len += scnprintf(p + len, size - len, "type: mesh\n"); - len += scnprintf(p + len, size - len, - "mac address: %pM\n", mwl_vif->bssid); - break; case NL80211_IFTYPE_STATION: len += scnprintf(p + len, size - len, "type: sta\n"); len += scnprintf(p + len, size - len, @@ -262,7 +260,8 @@ static ssize_t mwl_debugfs_sta_read(struct file *file, char __user *ubuf, } len += scnprintf(p + len, size - len, "rx_bw: %d, rx_nss: %d\n", sta->bandwidth, sta->rx_nss); - len += scnprintf(p + len, size - len, "tdls: %d, tdls_init: %d\n", + len += scnprintf(p + len, size - len, + "tdls: %d, tdls_init: %d\n", sta->tdls, sta->tdls_initiator); len += scnprintf(p + len, size - len, "wme: %d, mfp: %d\n", sta->wme, sta->mfp); @@ -334,6 +333,49 @@ static ssize_t mwl_debugfs_ampdu_read(struct file *file, char __user *ubuf, return ret; } +static ssize_t mwl_debugfs_device_pwrtbl_read(struct file *file, + char __user *ubuf, + size_t count, loff_t *ppos) +{ + struct mwl_priv *priv = (struct mwl_priv *)file->private_data; + unsigned long page = get_zeroed_page(GFP_KERNEL); + char *p = (char *)page; + int len = 0, size = PAGE_SIZE; + int i, j; + ssize_t ret; + + if (!p) + return -ENOMEM; + + len += scnprintf(p + len, size - len, "\n"); + len += scnprintf(p + len, size - len, + "power table loaded from dts: %s\n", + priv->forbidden_setting ? "no" : "yes"); + len += scnprintf(p + len, size - len, "firmware region code: 0x%x\n", + priv->fw_region_code); + len += scnprintf(p + len, size - len, "number of channel: %d\n", + priv->number_of_channels); + for (i = 0; i < priv->number_of_channels; i++) { + len += scnprintf(p + len, size - len, "%3d ", + priv->device_pwr_tbl[i].channel); + for (j = 0; j < SYSADPT_TX_POWER_LEVEL_TOTAL; j++) + len += scnprintf(p + len, size - len, "%3d ", + priv->device_pwr_tbl[i].tx_pwr[j]); + len += scnprintf(p + len, size - len, "%3d ", + priv->device_pwr_tbl[i].dfs_capable); + len += scnprintf(p + len, size - len, "%3d ", + priv->device_pwr_tbl[i].ax_ant); + len += scnprintf(p + len, size - len, "%3d\n", + priv->device_pwr_tbl[i].cdd); + } + len += scnprintf(p + len, size - len, "\n"); + + ret = simple_read_from_buffer(ubuf, count, ppos, p, len); + free_page(page); + + return ret; +} + static ssize_t mwl_debugfs_tx_desc_read(struct file *file, char __user *ubuf, size_t count, loff_t *ppos) @@ -389,9 +431,7 @@ static ssize_t mwl_debugfs_tx_desc_write(struct file *file, goto err; } - ret = sscanf(buf, "%d", &tx_desc_num); - - if (ret != 1) { + if (kstrtoint(buf, 0, &tx_desc_num)) { ret = -EINVAL; goto err; } @@ -438,11 +478,9 @@ static ssize_t mwl_debugfs_dfs_channel_read(struct file *file, channel->hw_value, channel->center_freq, channel->flags, channel->dfs_state); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) len += scnprintf(p + len, size - len, "cac timer: %d ms\n", channel->dfs_cac_ms); -#endif } } len += scnprintf(p + len, size - len, "\n"); @@ -493,10 +531,8 @@ static ssize_t mwl_debugfs_dfs_channel_write(struct file *file, channel = &sband->channels[i]; if (channel->flags & IEEE80211_CHAN_RADAR) { channel->dfs_state = dfs_state; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) if (cac_time != -1) channel->dfs_cac_ms = cac_time * 1000; -#endif } } ret = count; @@ -758,6 +794,7 @@ MWLWIFI_DEBUGFS_FILE_READ_OPS(info); MWLWIFI_DEBUGFS_FILE_READ_OPS(vif); MWLWIFI_DEBUGFS_FILE_READ_OPS(sta); MWLWIFI_DEBUGFS_FILE_READ_OPS(ampdu); +MWLWIFI_DEBUGFS_FILE_READ_OPS(device_pwrtbl); MWLWIFI_DEBUGFS_FILE_OPS(tx_desc); MWLWIFI_DEBUGFS_FILE_OPS(dfs_channel); MWLWIFI_DEBUGFS_FILE_OPS(dfs_radar); @@ -779,6 +816,7 @@ void mwl_debugfs_init(struct ieee80211_hw *hw) MWLWIFI_DEBUGFS_ADD_FILE(vif); MWLWIFI_DEBUGFS_ADD_FILE(sta); MWLWIFI_DEBUGFS_ADD_FILE(ampdu); + MWLWIFI_DEBUGFS_ADD_FILE(device_pwrtbl); MWLWIFI_DEBUGFS_ADD_FILE(tx_desc); MWLWIFI_DEBUGFS_ADD_FILE(dfs_channel); MWLWIFI_DEBUGFS_ADD_FILE(dfs_radar); |