diff options
| author | Simon Wunderlich <[email protected]> | 2013-01-23 17:38:04 +0100 | 
|---|---|---|
| committer | John W. Linville <[email protected]> | 2013-01-30 15:06:40 -0500 | 
| commit | 04ccd4a1a61a2824539e04b5d7f4ee87e8aab0ed (patch) | |
| tree | 2e7ba34126bd64cd7881a955d7793e62dcbd7400 /drivers/net/wireless/ath/ath9k/debug.c | |
| parent | 6ccea75e701d5d452b674dd5550c0caceccb5d56 (diff) | |
ath9k: add debug parameters for spectral scan
Export the various parameters to userspace.
Signed-off-by: Simon Wunderlich <[email protected]>
Signed-off-by: Mathias Kretschmer <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/debug.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/debug.c | 186 | 
1 files changed, 186 insertions, 0 deletions
| diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index 6c5d313ebcb7..012446d27bc0 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -1035,6 +1035,182 @@ static const struct file_operations fops_spec_scan_ctl = {  	.llseek = default_llseek,  }; +static ssize_t read_file_spectral_short_repeat(struct file *file, +					       char __user *user_buf, +					       size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	char buf[32]; +	unsigned int len; + +	len = sprintf(buf, "%d\n", sc->spec_config.short_repeat); +	return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t write_file_spectral_short_repeat(struct file *file, +						const char __user *user_buf, +						size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	unsigned long val; +	char buf[32]; +	ssize_t len; + +	len = min(count, sizeof(buf) - 1); +	if (copy_from_user(buf, user_buf, len)) +		return -EFAULT; + +	buf[len] = '\0'; +	if (kstrtoul(buf, 0, &val)) +		return -EINVAL; + +	if (val < 0 || val > 1) +		return -EINVAL; + +	sc->spec_config.short_repeat = val; +	return count; +} + +static const struct file_operations fops_spectral_short_repeat = { +	.read = read_file_spectral_short_repeat, +	.write = write_file_spectral_short_repeat, +	.open = simple_open, +	.owner = THIS_MODULE, +	.llseek = default_llseek, +}; + +static ssize_t read_file_spectral_count(struct file *file, +					char __user *user_buf, +					size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	char buf[32]; +	unsigned int len; + +	len = sprintf(buf, "%d\n", sc->spec_config.count); +	return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t write_file_spectral_count(struct file *file, +					 const char __user *user_buf, +					 size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	unsigned long val; +	char buf[32]; +	ssize_t len; + +	len = min(count, sizeof(buf) - 1); +	if (copy_from_user(buf, user_buf, len)) +		return -EFAULT; + +	buf[len] = '\0'; +	if (kstrtoul(buf, 0, &val)) +		return -EINVAL; + +	if (val < 0 || val > 255) +		return -EINVAL; + +	sc->spec_config.count = val; +	return count; +} + +static const struct file_operations fops_spectral_count = { +	.read = read_file_spectral_count, +	.write = write_file_spectral_count, +	.open = simple_open, +	.owner = THIS_MODULE, +	.llseek = default_llseek, +}; + +static ssize_t read_file_spectral_period(struct file *file, +					 char __user *user_buf, +					 size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	char buf[32]; +	unsigned int len; + +	len = sprintf(buf, "%d\n", sc->spec_config.period); +	return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t write_file_spectral_period(struct file *file, +					  const char __user *user_buf, +					  size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	unsigned long val; +	char buf[32]; +	ssize_t len; + +	len = min(count, sizeof(buf) - 1); +	if (copy_from_user(buf, user_buf, len)) +		return -EFAULT; + +	buf[len] = '\0'; +	if (kstrtoul(buf, 0, &val)) +		return -EINVAL; + +	if (val < 0 || val > 255) +		return -EINVAL; + +	sc->spec_config.period = val; +	return count; +} + +static const struct file_operations fops_spectral_period = { +	.read = read_file_spectral_period, +	.write = write_file_spectral_period, +	.open = simple_open, +	.owner = THIS_MODULE, +	.llseek = default_llseek, +}; + +static ssize_t read_file_spectral_fft_period(struct file *file, +					     char __user *user_buf, +					     size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	char buf[32]; +	unsigned int len; + +	len = sprintf(buf, "%d\n", sc->spec_config.fft_period); +	return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t write_file_spectral_fft_period(struct file *file, +					      const char __user *user_buf, +					      size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	unsigned long val; +	char buf[32]; +	ssize_t len; + +	len = min(count, sizeof(buf) - 1); +	if (copy_from_user(buf, user_buf, len)) +		return -EFAULT; + +	buf[len] = '\0'; +	if (kstrtoul(buf, 0, &val)) +		return -EINVAL; + +	if (val < 0 || val > 15) +		return -EINVAL; + +	sc->spec_config.fft_period = val; +	return count; +} + +static const struct file_operations fops_spectral_fft_period = { +	.read = read_file_spectral_fft_period, +	.write = write_file_spectral_fft_period, +	.open = simple_open, +	.owner = THIS_MODULE, +	.llseek = default_llseek, +}; +  static struct dentry *create_buf_file_handler(const char *filename,  					      struct dentry *parent,  					      umode_t mode, @@ -1893,6 +2069,16 @@ int ath9k_init_debug(struct ath_hw *ah)  	debugfs_create_file("spectral_scan_ctl", S_IRUSR | S_IWUSR,  			    sc->debug.debugfs_phy, sc,  			    &fops_spec_scan_ctl); +	debugfs_create_file("spectral_short_repeat", S_IRUSR | S_IWUSR, +			    sc->debug.debugfs_phy, sc, +			    &fops_spectral_short_repeat); +	debugfs_create_file("spectral_count", S_IRUSR | S_IWUSR, +			    sc->debug.debugfs_phy, sc, &fops_spectral_count); +	debugfs_create_file("spectral_period", S_IRUSR | S_IWUSR, +			    sc->debug.debugfs_phy, sc, &fops_spectral_period); +	debugfs_create_file("spectral_fft_period", S_IRUSR | S_IWUSR, +			    sc->debug.debugfs_phy, sc, +			    &fops_spectral_fft_period);  #ifdef CONFIG_ATH9K_MAC_DEBUG  	debugfs_create_file("samples", S_IRUSR, sc->debug.debugfs_phy, sc, |