mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 08:47:24 +07:00
ath10k: add debugfs entry to configure quiet period
Add support to configure quiet period (in milliseconds) via debugfs. This is useful to experiment different quiet period values along with different throttle ratio. echo 100 > /sys/kernel/debug/ieee80211/phyX/ath10k/quiet_period Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
4705e34ee5
commit
63fb32df97
@ -1991,6 +1991,49 @@ static const struct file_operations fops_pktlog_filter = {
|
||||
.open = simple_open
|
||||
};
|
||||
|
||||
static ssize_t ath10k_write_quiet_period(struct file *file,
|
||||
const char __user *ubuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct ath10k *ar = file->private_data;
|
||||
u32 period;
|
||||
|
||||
if (kstrtouint_from_user(ubuf, count, 0, &period))
|
||||
return -EINVAL;
|
||||
|
||||
if (period < ATH10K_QUIET_PERIOD_MIN) {
|
||||
ath10k_warn(ar, "Quiet period %u can not be lesser than 25ms\n",
|
||||
period);
|
||||
return -EINVAL;
|
||||
}
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
ar->thermal.quiet_period = period;
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ath10k_read_quiet_period(struct file *file, char __user *ubuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
char buf[32];
|
||||
struct ath10k *ar = file->private_data;
|
||||
int len = 0;
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
len = scnprintf(buf, sizeof(buf) - len, "%d\n",
|
||||
ar->thermal.quiet_period);
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
return simple_read_from_buffer(ubuf, count, ppos, buf, len);
|
||||
}
|
||||
|
||||
static const struct file_operations fops_quiet_period = {
|
||||
.read = ath10k_read_quiet_period,
|
||||
.write = ath10k_write_quiet_period,
|
||||
.open = simple_open
|
||||
};
|
||||
|
||||
int ath10k_debug_create(struct ath10k *ar)
|
||||
{
|
||||
ar->debug.fw_crash_data = vzalloc(sizeof(*ar->debug.fw_crash_data));
|
||||
@ -2088,6 +2131,9 @@ int ath10k_debug_register(struct ath10k *ar)
|
||||
debugfs_create_file("pktlog_filter", S_IRUGO | S_IWUSR,
|
||||
ar->debug.debugfs_phy, ar, &fops_pktlog_filter);
|
||||
|
||||
debugfs_create_file("quiet_period", S_IRUGO | S_IWUSR,
|
||||
ar->debug.debugfs_phy, ar, &fops_quiet_period);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -96,8 +96,7 @@ static int ath10k_thermal_set_cur_dutycycle(struct thermal_cooling_device *cdev,
|
||||
ret = -ENETDOWN;
|
||||
goto out;
|
||||
}
|
||||
period = max(ATH10K_QUIET_PERIOD_MIN,
|
||||
(ATH10K_QUIET_PERIOD_DEFAULT / num_bss));
|
||||
period = ar->thermal.quiet_period;
|
||||
duration = (period * duty_cycle) / 100;
|
||||
enabled = duration ? 1 : 0;
|
||||
|
||||
@ -207,6 +206,7 @@ int ath10k_thermal_register(struct ath10k *ar)
|
||||
}
|
||||
|
||||
ar->thermal.cdev = cdev;
|
||||
ar->thermal.quiet_period = ATH10K_QUIET_PERIOD_DEFAULT;
|
||||
|
||||
/* Do not register hwmon device when temperature reading is not
|
||||
* supported by firmware
|
||||
|
@ -29,6 +29,7 @@ struct ath10k_thermal {
|
||||
|
||||
/* protected by conf_mutex */
|
||||
u32 duty_cycle;
|
||||
u32 quiet_period;
|
||||
/* temperature value in Celcius degree
|
||||
* protected by data_lock
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user