diff options
| author | Stephen Rothwell <sfr@canb.auug.org.au> | 2011-07-25 13:59:46 -0400 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-07-25 14:53:52 -0400 | 
| commit | 5f00bcb38ef9a980a33c6dbdc0044964b05f22dd (patch) | |
| tree | 3175fb9375aecb50bde1be0bf4fa8aa8155131d6 /drivers/net/wireless/ath/ath9k/debug.c | |
| parent | 34006cee28f7344f9557a4be3816c7891b1bbab1 (diff) | |
| parent | b6844e8f64920cdee620157252169ba63afb0c89 (diff) | |
Merge branch 'master' into devel and apply fixup from Stephen Rothwell:
vfs/nfs: fixup for nfs_open_context change
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/debug.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/debug.c | 59 | 
1 files changed, 57 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index d55ffd7d4bd..22d3a26e684 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -176,6 +176,56 @@ static const struct file_operations fops_rx_chainmask = {  	.llseek = default_llseek,  }; +static ssize_t read_file_disable_ani(struct file *file, char __user *user_buf, +			     size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	struct ath_common *common = ath9k_hw_common(sc->sc_ah); +	char buf[32]; +	unsigned int len; + +	len = sprintf(buf, "%d\n", common->disable_ani); +	return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t write_file_disable_ani(struct file *file, +				      const char __user *user_buf, +				      size_t count, loff_t *ppos) +{ +	struct ath_softc *sc = file->private_data; +	struct ath_common *common = ath9k_hw_common(sc->sc_ah); +	unsigned long disable_ani; +	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 (strict_strtoul(buf, 0, &disable_ani)) +		return -EINVAL; + +	common->disable_ani = !!disable_ani; + +	if (disable_ani) { +		sc->sc_flags &= ~SC_OP_ANI_RUN; +		del_timer_sync(&common->ani.timer); +	} else { +		sc->sc_flags |= SC_OP_ANI_RUN; +		ath_start_ani(common); +	} + +	return count; +} + +static const struct file_operations fops_disable_ani = { +	.read = read_file_disable_ani, +	.write = write_file_disable_ani, +	.open = ath9k_debugfs_open, +	.owner = THIS_MODULE, +	.llseek = default_llseek, +};  static ssize_t read_file_dma(struct file *file, char __user *user_buf,  			     size_t count, loff_t *ppos) @@ -550,6 +600,7 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,  	PR("MPDUs Queued:    ", queued);  	PR("MPDUs Completed: ", completed); +	PR("MPDUs XRetried:  ", xretries);  	PR("Aggregates:      ", a_aggr);  	PR("AMPDUs Queued HW:", a_queued_hw);  	PR("AMPDUs Queued SW:", a_queued_sw); @@ -587,7 +638,6 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,  	PRQLE("axq_q empty:       ", axq_q);  	PRQLE("axq_acq empty:     ", axq_acq); -	PRQLE("txq_fifo_pending:  ", txq_fifo_pending);  	for (i = 0; i < ATH_TXFIFO_DEPTH; i++) {  		snprintf(tmp, sizeof(tmp) - 1, "txq_fifo[%i] empty: ", i);  		PRQLE(tmp, txq_fifo[i]); @@ -807,7 +857,10 @@ void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,  		else  			TX_STAT_INC(qnum, a_completed);  	} else { -		TX_STAT_INC(qnum, completed); +		if (bf_isxretried(bf)) +			TX_STAT_INC(qnum, xretries); +		else +			TX_STAT_INC(qnum, completed);  	}  	if (ts->ts_status & ATH9K_TXERR_FIFO) @@ -1160,6 +1213,8 @@ int ath9k_init_debug(struct ath_hw *ah)  			    sc->debug.debugfs_phy, sc, &fops_rx_chainmask);  	debugfs_create_file("tx_chainmask", S_IRUSR | S_IWUSR,  			    sc->debug.debugfs_phy, sc, &fops_tx_chainmask); +	debugfs_create_file("disable_ani", S_IRUSR | S_IWUSR, +			    sc->debug.debugfs_phy, sc, &fops_disable_ani);  	debugfs_create_file("regidx", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,  			    sc, &fops_regidx);  	debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,  | 
