diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/debug.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/debug.c | 423 | 
1 files changed, 214 insertions, 209 deletions
diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c index 0bf7313b8a17..ccca724de173 100644 --- a/drivers/net/wireless/ath/ath5k/debug.c +++ b/drivers/net/wireless/ath/ath5k/debug.c @@ -157,10 +157,10 @@ static void *reg_next(struct seq_file *seq, void *p, loff_t *pos)  static int reg_show(struct seq_file *seq, void *p)  { -	struct ath5k_softc *sc = seq->private; +	struct ath5k_hw *ah = seq->private;  	struct reg *r = p;  	seq_printf(seq, "%-25s0x%08x\n", r->name, -		ath5k_hw_reg_read(sc->ah, r->addr)); +		ath5k_hw_reg_read(ah, r->addr));  	return 0;  } @@ -197,43 +197,42 @@ static const struct file_operations fops_registers = {  static ssize_t read_file_beacon(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	struct ath5k_hw *ah = sc->ah; +	struct ath5k_hw *ah = file->private_data;  	char buf[500];  	unsigned int len = 0;  	unsigned int v;  	u64 tsf; -	v = ath5k_hw_reg_read(sc->ah, AR5K_BEACON); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_BEACON); +	len += snprintf(buf + len, sizeof(buf) - len,  		"%-24s0x%08x\tintval: %d\tTIM: 0x%x\n",  		"AR5K_BEACON", v, v & AR5K_BEACON_PERIOD,  		(v & AR5K_BEACON_TIM) >> AR5K_BEACON_TIM_S); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\n", -		"AR5K_LAST_TSTP", ath5k_hw_reg_read(sc->ah, AR5K_LAST_TSTP)); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n", +		"AR5K_LAST_TSTP", ath5k_hw_reg_read(ah, AR5K_LAST_TSTP)); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\n\n", -		"AR5K_BEACON_CNT", ath5k_hw_reg_read(sc->ah, AR5K_BEACON_CNT)); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n\n", +		"AR5K_BEACON_CNT", ath5k_hw_reg_read(ah, AR5K_BEACON_CNT)); -	v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER0); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\tTU: %08x\n", +	v = ath5k_hw_reg_read(ah, AR5K_TIMER0); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n",  		"AR5K_TIMER0 (TBTT)", v, v); -	v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER1); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\tTU: %08x\n", +	v = ath5k_hw_reg_read(ah, AR5K_TIMER1); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n",  		"AR5K_TIMER1 (DMA)", v, v >> 3); -	v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER2); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\tTU: %08x\n", +	v = ath5k_hw_reg_read(ah, AR5K_TIMER2); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n",  		"AR5K_TIMER2 (SWBA)", v, v >> 3); -	v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER3); -	len += snprintf(buf+len, sizeof(buf)-len, "%-24s0x%08x\tTU: %08x\n", +	v = ath5k_hw_reg_read(ah, AR5K_TIMER3); +	len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n",  		"AR5K_TIMER3 (ATIM)", v, v); -	tsf = ath5k_hw_get_tsf64(sc->ah); -	len += snprintf(buf+len, sizeof(buf)-len, +	tsf = ath5k_hw_get_tsf64(ah); +	len += snprintf(buf + len, sizeof(buf) - len,  		"TSF\t\t0x%016llx\tTU: %08x\n",  		(unsigned long long)tsf, TSF_TO_TU(tsf)); @@ -247,8 +246,7 @@ static ssize_t write_file_beacon(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	struct ath5k_hw *ah = sc->ah; +	struct ath5k_hw *ah = file->private_data;  	char buf[20];  	if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) @@ -279,9 +277,9 @@ static ssize_t write_file_reset(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "debug file triggered reset\n"); -	ieee80211_queue_work(sc->hw, &sc->reset_work); +	struct ath5k_hw *ah = file->private_data; +	ATH5K_DBG(ah, ATH5K_DEBUG_RESET, "debug file triggered reset\n"); +	ieee80211_queue_work(ah->hw, &ah->reset_work);  	return count;  } @@ -318,23 +316,23 @@ static const struct {  static ssize_t read_file_debug(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[700];  	unsigned int len = 0;  	unsigned int i; -	len += snprintf(buf+len, sizeof(buf)-len, -		"DEBUG LEVEL: 0x%08x\n\n", sc->debug.level); +	len += snprintf(buf + len, sizeof(buf) - len, +		"DEBUG LEVEL: 0x%08x\n\n", ah->debug.level);  	for (i = 0; i < ARRAY_SIZE(dbg_info) - 1; i++) { -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  			"%10s %c 0x%08x - %s\n", dbg_info[i].name, -			sc->debug.level & dbg_info[i].level ? '+' : ' ', +			ah->debug.level & dbg_info[i].level ? '+' : ' ',  			dbg_info[i].level, dbg_info[i].desc);  	} -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  		"%10s %c 0x%08x - %s\n", dbg_info[i].name, -		sc->debug.level == dbg_info[i].level ? '+' : ' ', +		ah->debug.level == dbg_info[i].level ? '+' : ' ',  		dbg_info[i].level, dbg_info[i].desc);  	if (len > sizeof(buf)) @@ -347,7 +345,7 @@ static ssize_t write_file_debug(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	unsigned int i;  	char buf[20]; @@ -357,7 +355,7 @@ static ssize_t write_file_debug(struct file *file,  	for (i = 0; i < ARRAY_SIZE(dbg_info); i++) {  		if (strncmp(buf, dbg_info[i].name,  					strlen(dbg_info[i].name)) == 0) { -			sc->debug.level ^= dbg_info[i].level; /* toggle bit */ +			ah->debug.level ^= dbg_info[i].level; /* toggle bit */  			break;  		}  	} @@ -378,66 +376,66 @@ static const struct file_operations fops_debug = {  static ssize_t read_file_antenna(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[700];  	unsigned int len = 0;  	unsigned int i;  	unsigned int v; -	len += snprintf(buf+len, sizeof(buf)-len, "antenna mode\t%d\n", -		sc->ah->ah_ant_mode); -	len += snprintf(buf+len, sizeof(buf)-len, "default antenna\t%d\n", -		sc->ah->ah_def_ant); -	len += snprintf(buf+len, sizeof(buf)-len, "tx antenna\t%d\n", -		sc->ah->ah_tx_ant); +	len += snprintf(buf + len, sizeof(buf) - len, "antenna mode\t%d\n", +		ah->ah_ant_mode); +	len += snprintf(buf + len, sizeof(buf) - len, "default antenna\t%d\n", +		ah->ah_def_ant); +	len += snprintf(buf + len, sizeof(buf) - len, "tx antenna\t%d\n", +		ah->ah_tx_ant); -	len += snprintf(buf+len, sizeof(buf)-len, "\nANTENNA\t\tRX\tTX\n"); -	for (i = 1; i < ARRAY_SIZE(sc->stats.antenna_rx); i++) { -		len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len, "\nANTENNA\t\tRX\tTX\n"); +	for (i = 1; i < ARRAY_SIZE(ah->stats.antenna_rx); i++) { +		len += snprintf(buf + len, sizeof(buf) - len,  			"[antenna %d]\t%d\t%d\n", -			i, sc->stats.antenna_rx[i], sc->stats.antenna_tx[i]); +			i, ah->stats.antenna_rx[i], ah->stats.antenna_tx[i]);  	} -	len += snprintf(buf+len, sizeof(buf)-len, "[invalid]\t%d\t%d\n", -			sc->stats.antenna_rx[0], sc->stats.antenna_tx[0]); +	len += snprintf(buf + len, sizeof(buf) - len, "[invalid]\t%d\t%d\n", +			ah->stats.antenna_rx[0], ah->stats.antenna_tx[0]); -	v = ath5k_hw_reg_read(sc->ah, AR5K_DEFAULT_ANTENNA); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_DEFAULT_ANTENNA); +	len += snprintf(buf + len, sizeof(buf) - len,  			"\nAR5K_DEFAULT_ANTENNA\t0x%08x\n", v); -	v = ath5k_hw_reg_read(sc->ah, AR5K_STA_ID1); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_STA_ID1); +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_STA_ID1_DEFAULT_ANTENNA\t%d\n",  		(v & AR5K_STA_ID1_DEFAULT_ANTENNA) != 0); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_STA_ID1_DESC_ANTENNA\t%d\n",  		(v & AR5K_STA_ID1_DESC_ANTENNA) != 0); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_STA_ID1_RTS_DEF_ANTENNA\t%d\n",  		(v & AR5K_STA_ID1_RTS_DEF_ANTENNA) != 0); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_STA_ID1_SELFGEN_DEF_ANT\t%d\n",  		(v & AR5K_STA_ID1_SELFGEN_DEF_ANT) != 0); -	v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_AGCCTL); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_PHY_AGCCTL); +	len += snprintf(buf + len, sizeof(buf) - len,  		"\nAR5K_PHY_AGCCTL_OFDM_DIV_DIS\t%d\n",  		(v & AR5K_PHY_AGCCTL_OFDM_DIV_DIS) != 0); -	v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_RESTART); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_PHY_RESTART); +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_PHY_RESTART_DIV_GC\t\t%x\n",  		(v & AR5K_PHY_RESTART_DIV_GC) >> AR5K_PHY_RESTART_DIV_GC_S); -	v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_FAST_ANT_DIV); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_PHY_FAST_ANT_DIV); +	len += snprintf(buf + len, sizeof(buf) - len,  		"AR5K_PHY_FAST_ANT_DIV_EN\t%d\n",  		(v & AR5K_PHY_FAST_ANT_DIV_EN) != 0); -	v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_ANT_SWITCH_TABLE_0); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_PHY_ANT_SWITCH_TABLE_0); +	len += snprintf(buf + len, sizeof(buf) - len,  			"\nAR5K_PHY_ANT_SWITCH_TABLE_0\t0x%08x\n", v); -	v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_ANT_SWITCH_TABLE_1); -	len += snprintf(buf+len, sizeof(buf)-len, +	v = ath5k_hw_reg_read(ah, AR5K_PHY_ANT_SWITCH_TABLE_1); +	len += snprintf(buf + len, sizeof(buf) - len,  			"AR5K_PHY_ANT_SWITCH_TABLE_1\t0x%08x\n", v);  	if (len > sizeof(buf)) @@ -450,7 +448,7 @@ static ssize_t write_file_antenna(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	unsigned int i;  	char buf[20]; @@ -458,18 +456,18 @@ static ssize_t write_file_antenna(struct file *file,  		return -EFAULT;  	if (strncmp(buf, "diversity", 9) == 0) { -		ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_DEFAULT); +		ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_DEFAULT);  		printk(KERN_INFO "ath5k debug: enable diversity\n");  	} else if (strncmp(buf, "fixed-a", 7) == 0) { -		ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_FIXED_A); +		ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_A);  		printk(KERN_INFO "ath5k debugfs: fixed antenna A\n");  	} else if (strncmp(buf, "fixed-b", 7) == 0) { -		ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_FIXED_B); +		ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_B);  		printk(KERN_INFO "ath5k debug: fixed antenna B\n");  	} else if (strncmp(buf, "clear", 5) == 0) { -		for (i = 0; i < ARRAY_SIZE(sc->stats.antenna_rx); i++) { -			sc->stats.antenna_rx[i] = 0; -			sc->stats.antenna_tx[i] = 0; +		for (i = 0; i < ARRAY_SIZE(ah->stats.antenna_rx); i++) { +			ah->stats.antenna_rx[i] = 0; +			ah->stats.antenna_tx[i] = 0;  		}  		printk(KERN_INFO "ath5k debug: cleared antenna stats\n");  	} @@ -489,42 +487,42 @@ static const struct file_operations fops_antenna = {  static ssize_t read_file_misc(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[700];  	unsigned int len = 0; -	u32 filt = ath5k_hw_get_rx_filter(sc->ah); +	u32 filt = ath5k_hw_get_rx_filter(ah); -	len += snprintf(buf+len, sizeof(buf)-len, "bssid-mask: %pM\n", -			sc->bssidmask); -	len += snprintf(buf+len, sizeof(buf)-len, "filter-flags: 0x%x ", +	len += snprintf(buf + len, sizeof(buf) - len, "bssid-mask: %pM\n", +			ah->bssidmask); +	len += snprintf(buf + len, sizeof(buf) - len, "filter-flags: 0x%x ",  			filt);  	if (filt & AR5K_RX_FILTER_UCAST) -		len += snprintf(buf+len, sizeof(buf)-len, " UCAST"); +		len += snprintf(buf + len, sizeof(buf) - len, " UCAST");  	if (filt & AR5K_RX_FILTER_MCAST) -		len += snprintf(buf+len, sizeof(buf)-len, " MCAST"); +		len += snprintf(buf + len, sizeof(buf) - len, " MCAST");  	if (filt & AR5K_RX_FILTER_BCAST) -		len += snprintf(buf+len, sizeof(buf)-len, " BCAST"); +		len += snprintf(buf + len, sizeof(buf) - len, " BCAST");  	if (filt & AR5K_RX_FILTER_CONTROL) -		len += snprintf(buf+len, sizeof(buf)-len, " CONTROL"); +		len += snprintf(buf + len, sizeof(buf) - len, " CONTROL");  	if (filt & AR5K_RX_FILTER_BEACON) -		len += snprintf(buf+len, sizeof(buf)-len, " BEACON"); +		len += snprintf(buf + len, sizeof(buf) - len, " BEACON");  	if (filt & AR5K_RX_FILTER_PROM) -		len += snprintf(buf+len, sizeof(buf)-len, " PROM"); +		len += snprintf(buf + len, sizeof(buf) - len, " PROM");  	if (filt & AR5K_RX_FILTER_XRPOLL) -		len += snprintf(buf+len, sizeof(buf)-len, " XRPOLL"); +		len += snprintf(buf + len, sizeof(buf) - len, " XRPOLL");  	if (filt & AR5K_RX_FILTER_PROBEREQ) -		len += snprintf(buf+len, sizeof(buf)-len, " PROBEREQ"); +		len += snprintf(buf + len, sizeof(buf) - len, " PROBEREQ");  	if (filt & AR5K_RX_FILTER_PHYERR_5212) -		len += snprintf(buf+len, sizeof(buf)-len, " PHYERR-5212"); +		len += snprintf(buf + len, sizeof(buf) - len, " PHYERR-5212");  	if (filt & AR5K_RX_FILTER_RADARERR_5212) -		len += snprintf(buf+len, sizeof(buf)-len, " RADARERR-5212"); +		len += snprintf(buf + len, sizeof(buf) - len, " RADARERR-5212");  	if (filt & AR5K_RX_FILTER_PHYERR_5211) -		snprintf(buf+len, sizeof(buf)-len, " PHYERR-5211"); +		snprintf(buf + len, sizeof(buf) - len, " PHYERR-5211");  	if (filt & AR5K_RX_FILTER_RADARERR_5211) -		len += snprintf(buf+len, sizeof(buf)-len, " RADARERR-5211"); +		len += snprintf(buf + len, sizeof(buf) - len, " RADARERR-5211"); -	len += snprintf(buf+len, sizeof(buf)-len, "\nopmode: %s (%d)\n", -			ath_opmode_to_string(sc->opmode), sc->opmode); +	len += snprintf(buf + len, sizeof(buf) - len, "\nopmode: %s (%d)\n", +			ath_opmode_to_string(ah->opmode), ah->opmode);  	if (len > sizeof(buf))  		len = sizeof(buf); @@ -544,71 +542,71 @@ static const struct file_operations fops_misc = {  static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	struct ath5k_statistics *st = &sc->stats; +	struct ath5k_hw *ah = file->private_data; +	struct ath5k_statistics *st = &ah->stats;  	char buf[700];  	unsigned int len = 0;  	int i; -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"RX\n---------------------\n"); -	len += snprintf(buf+len, sizeof(buf)-len, "CRC\t%u\t(%u%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, "CRC\t%u\t(%u%%)\n",  			st->rxerr_crc,  			st->rx_all_count > 0 ? -				st->rxerr_crc*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "PHY\t%u\t(%u%%)\n", +				st->rxerr_crc * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "PHY\t%u\t(%u%%)\n",  			st->rxerr_phy,  			st->rx_all_count > 0 ? -				st->rxerr_phy*100/st->rx_all_count : 0); +				st->rxerr_phy * 100 / st->rx_all_count : 0);  	for (i = 0; i < 32; i++) {  		if (st->rxerr_phy_code[i]) -			len += snprintf(buf+len, sizeof(buf)-len, +			len += snprintf(buf + len, sizeof(buf) - len,  				" phy_err[%u]\t%u\n",  				i, st->rxerr_phy_code[i]);  	} -	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%u\t(%u%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, "FIFO\t%u\t(%u%%)\n",  			st->rxerr_fifo,  			st->rx_all_count > 0 ? -				st->rxerr_fifo*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "decrypt\t%u\t(%u%%)\n", +				st->rxerr_fifo * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "decrypt\t%u\t(%u%%)\n",  			st->rxerr_decrypt,  			st->rx_all_count > 0 ? -				st->rxerr_decrypt*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "MIC\t%u\t(%u%%)\n", +				st->rxerr_decrypt * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "MIC\t%u\t(%u%%)\n",  			st->rxerr_mic,  			st->rx_all_count > 0 ? -				st->rxerr_mic*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "process\t%u\t(%u%%)\n", +				st->rxerr_mic * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "process\t%u\t(%u%%)\n",  			st->rxerr_proc,  			st->rx_all_count > 0 ? -				st->rxerr_proc*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "jumbo\t%u\t(%u%%)\n", +				st->rxerr_proc * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "jumbo\t%u\t(%u%%)\n",  			st->rxerr_jumbo,  			st->rx_all_count > 0 ? -				st->rxerr_jumbo*100/st->rx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "[RX all\t%u]\n", +				st->rxerr_jumbo * 100 / st->rx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "[RX all\t%u]\n",  			st->rx_all_count); -	len += snprintf(buf+len, sizeof(buf)-len, "RX-all-bytes\t%u\n", +	len += snprintf(buf + len, sizeof(buf) - len, "RX-all-bytes\t%u\n",  			st->rx_bytes_count); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"\nTX\n---------------------\n"); -	len += snprintf(buf+len, sizeof(buf)-len, "retry\t%u\t(%u%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, "retry\t%u\t(%u%%)\n",  			st->txerr_retry,  			st->tx_all_count > 0 ? -				st->txerr_retry*100/st->tx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%u\t(%u%%)\n", +				st->txerr_retry * 100 / st->tx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "FIFO\t%u\t(%u%%)\n",  			st->txerr_fifo,  			st->tx_all_count > 0 ? -				st->txerr_fifo*100/st->tx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "filter\t%u\t(%u%%)\n", +				st->txerr_fifo * 100 / st->tx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "filter\t%u\t(%u%%)\n",  			st->txerr_filt,  			st->tx_all_count > 0 ? -				st->txerr_filt*100/st->tx_all_count : 0); -	len += snprintf(buf+len, sizeof(buf)-len, "[TX all\t%u]\n", +				st->txerr_filt * 100 / st->tx_all_count : 0); +	len += snprintf(buf + len, sizeof(buf) - len, "[TX all\t%u]\n",  			st->tx_all_count); -	len += snprintf(buf+len, sizeof(buf)-len, "TX-all-bytes\t%u\n", +	len += snprintf(buf + len, sizeof(buf) - len, "TX-all-bytes\t%u\n",  			st->tx_bytes_count);  	if (len > sizeof(buf)) @@ -621,8 +619,8 @@ static ssize_t write_file_frameerrors(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	struct ath5k_statistics *st = &sc->stats; +	struct ath5k_hw *ah = file->private_data; +	struct ath5k_statistics *st = &ah->stats;  	char buf[20];  	if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) @@ -660,100 +658,104 @@ static const struct file_operations fops_frameerrors = {  static ssize_t read_file_ani(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; -	struct ath5k_statistics *st = &sc->stats; -	struct ath5k_ani_state *as = &sc->ani_state; +	struct ath5k_hw *ah = file->private_data; +	struct ath5k_statistics *st = &ah->stats; +	struct ath5k_ani_state *as = &ah->ani_state;  	char buf[700];  	unsigned int len = 0; -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"HW has PHY error counters:\t%s\n", -			sc->ah->ah_capabilities.cap_has_phyerr_counters ? +			ah->ah_capabilities.cap_has_phyerr_counters ?  			"yes" : "no"); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"HW max spur immunity level:\t%d\n",  			as->max_spur_level); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  		"\nANI state\n--------------------------------------------\n"); -	len += snprintf(buf+len, sizeof(buf)-len, "operating mode:\t\t\t"); +	len += snprintf(buf + len, sizeof(buf) - len, "operating mode:\t\t\t");  	switch (as->ani_mode) {  	case ATH5K_ANI_MODE_OFF: -		len += snprintf(buf+len, sizeof(buf)-len, "OFF\n"); +		len += snprintf(buf + len, sizeof(buf) - len, "OFF\n");  		break;  	case ATH5K_ANI_MODE_MANUAL_LOW: -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  			"MANUAL LOW\n");  		break;  	case ATH5K_ANI_MODE_MANUAL_HIGH: -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  			"MANUAL HIGH\n");  		break;  	case ATH5K_ANI_MODE_AUTO: -		len += snprintf(buf+len, sizeof(buf)-len, "AUTO\n"); +		len += snprintf(buf + len, sizeof(buf) - len, "AUTO\n");  		break;  	default: -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  			"??? (not good)\n");  		break;  	} -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"noise immunity level:\t\t%d\n",  			as->noise_imm_level); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"spur immunity level:\t\t%d\n",  			as->spur_level); -	len += snprintf(buf+len, sizeof(buf)-len, "firstep level:\t\t\t%d\n", +	len += snprintf(buf + len, sizeof(buf) - len, +			"firstep level:\t\t\t%d\n",  			as->firstep_level); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"OFDM weak signal detection:\t%s\n",  			as->ofdm_weak_sig ? "on" : "off"); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"CCK weak signal detection:\t%s\n",  			as->cck_weak_sig ? "on" : "off"); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"\nMIB INTERRUPTS:\t\t%u\n",  			st->mib_intr); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"beacon RSSI average:\t%d\n", -			(int)ewma_read(&sc->ah->ah_beacon_rssi_avg)); +			(int)ewma_read(&ah->ah_beacon_rssi_avg));  #define CC_PRINT(_struct, _field) \  	_struct._field, \  	_struct.cycles > 0 ? \ -	_struct._field*100/_struct.cycles : 0 +	_struct._field * 100 / _struct.cycles : 0 -	len += snprintf(buf+len, sizeof(buf)-len, "profcnt tx\t\t%u\t(%d%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, +			"profcnt tx\t\t%u\t(%d%%)\n",  			CC_PRINT(as->last_cc, tx_frame)); -	len += snprintf(buf+len, sizeof(buf)-len, "profcnt rx\t\t%u\t(%d%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, +			"profcnt rx\t\t%u\t(%d%%)\n",  			CC_PRINT(as->last_cc, rx_frame)); -	len += snprintf(buf+len, sizeof(buf)-len, "profcnt busy\t\t%u\t(%d%%)\n", +	len += snprintf(buf + len, sizeof(buf) - len, +			"profcnt busy\t\t%u\t(%d%%)\n",  			CC_PRINT(as->last_cc, rx_busy));  #undef CC_PRINT -	len += snprintf(buf+len, sizeof(buf)-len, "profcnt cycles\t\t%u\n", +	len += snprintf(buf + len, sizeof(buf) - len, "profcnt cycles\t\t%u\n",  			as->last_cc.cycles); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"listen time\t\t%d\tlast: %d\n",  			as->listen_time, as->last_listen); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"OFDM errors\t\t%u\tlast: %u\tsum: %u\n",  			as->ofdm_errors, as->last_ofdm_errors,  			as->sum_ofdm_errors); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"CCK errors\t\t%u\tlast: %u\tsum: %u\n",  			as->cck_errors, as->last_cck_errors,  			as->sum_cck_errors); -	len += snprintf(buf+len, sizeof(buf)-len, +	len += snprintf(buf + len, sizeof(buf) - len,  			"AR5K_PHYERR_CNT1\t%x\t(=%d)\n", -			ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT1), +			ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT1),  			ATH5K_ANI_OFDM_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - -			ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT1))); -	len += snprintf(buf+len, sizeof(buf)-len, +			ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT1))); +	len += snprintf(buf + len, sizeof(buf) - len,  			"AR5K_PHYERR_CNT2\t%x\t(=%d)\n", -			ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT2), +			ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT2),  			ATH5K_ANI_CCK_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - -			ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT2))); +			ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT2)));  	if (len > sizeof(buf))  		len = sizeof(buf); @@ -765,42 +767,42 @@ static ssize_t write_file_ani(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[20];  	if (copy_from_user(buf, userbuf, min(count, sizeof(buf))))  		return -EFAULT;  	if (strncmp(buf, "sens-low", 8) == 0) { -		ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_MANUAL_HIGH); +		ath5k_ani_init(ah, ATH5K_ANI_MODE_MANUAL_HIGH);  	} else if (strncmp(buf, "sens-high", 9) == 0) { -		ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_MANUAL_LOW); +		ath5k_ani_init(ah, ATH5K_ANI_MODE_MANUAL_LOW);  	} else if (strncmp(buf, "ani-off", 7) == 0) { -		ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_OFF); +		ath5k_ani_init(ah, ATH5K_ANI_MODE_OFF);  	} else if (strncmp(buf, "ani-on", 6) == 0) { -		ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_AUTO); +		ath5k_ani_init(ah, ATH5K_ANI_MODE_AUTO);  	} else if (strncmp(buf, "noise-low", 9) == 0) { -		ath5k_ani_set_noise_immunity_level(sc->ah, 0); +		ath5k_ani_set_noise_immunity_level(ah, 0);  	} else if (strncmp(buf, "noise-high", 10) == 0) { -		ath5k_ani_set_noise_immunity_level(sc->ah, +		ath5k_ani_set_noise_immunity_level(ah,  						   ATH5K_ANI_MAX_NOISE_IMM_LVL);  	} else if (strncmp(buf, "spur-low", 8) == 0) { -		ath5k_ani_set_spur_immunity_level(sc->ah, 0); +		ath5k_ani_set_spur_immunity_level(ah, 0);  	} else if (strncmp(buf, "spur-high", 9) == 0) { -		ath5k_ani_set_spur_immunity_level(sc->ah, -						  sc->ani_state.max_spur_level); +		ath5k_ani_set_spur_immunity_level(ah, +						  ah->ani_state.max_spur_level);  	} else if (strncmp(buf, "fir-low", 7) == 0) { -		ath5k_ani_set_firstep_level(sc->ah, 0); +		ath5k_ani_set_firstep_level(ah, 0);  	} else if (strncmp(buf, "fir-high", 8) == 0) { -		ath5k_ani_set_firstep_level(sc->ah, ATH5K_ANI_MAX_FIRSTEP_LVL); +		ath5k_ani_set_firstep_level(ah, ATH5K_ANI_MAX_FIRSTEP_LVL);  	} else if (strncmp(buf, "ofdm-off", 8) == 0) { -		ath5k_ani_set_ofdm_weak_signal_detection(sc->ah, false); +		ath5k_ani_set_ofdm_weak_signal_detection(ah, false);  	} else if (strncmp(buf, "ofdm-on", 7) == 0) { -		ath5k_ani_set_ofdm_weak_signal_detection(sc->ah, true); +		ath5k_ani_set_ofdm_weak_signal_detection(ah, true);  	} else if (strncmp(buf, "cck-off", 7) == 0) { -		ath5k_ani_set_cck_weak_signal_detection(sc->ah, false); +		ath5k_ani_set_cck_weak_signal_detection(ah, false);  	} else if (strncmp(buf, "cck-on", 6) == 0) { -		ath5k_ani_set_cck_weak_signal_detection(sc->ah, true); +		ath5k_ani_set_cck_weak_signal_detection(ah, true);  	}  	return count;  } @@ -819,7 +821,7 @@ static const struct file_operations fops_ani = {  static ssize_t read_file_queue(struct file *file, char __user *user_buf,  				   size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[700];  	unsigned int len = 0; @@ -827,13 +829,13 @@ static ssize_t read_file_queue(struct file *file, char __user *user_buf,  	struct ath5k_buf *bf, *bf0;  	int i, n; -	len += snprintf(buf+len, sizeof(buf)-len, -			"available txbuffers: %d\n", sc->txbuf_len); +	len += snprintf(buf + len, sizeof(buf) - len, +			"available txbuffers: %d\n", ah->txbuf_len); -	for (i = 0; i < ARRAY_SIZE(sc->txqs); i++) { -		txq = &sc->txqs[i]; +	for (i = 0; i < ARRAY_SIZE(ah->txqs); i++) { +		txq = &ah->txqs[i]; -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  			"%02d: %ssetup\n", i, txq->setup ? "" : "not ");  		if (!txq->setup) @@ -845,9 +847,9 @@ static ssize_t read_file_queue(struct file *file, char __user *user_buf,  			n++;  		spin_unlock_bh(&txq->lock); -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  				"  len: %d bufs: %d\n", txq->txq_len, n); -		len += snprintf(buf+len, sizeof(buf)-len, +		len += snprintf(buf + len, sizeof(buf) - len,  				"  stuck: %d\n", txq->txq_stuck);  	} @@ -861,16 +863,16 @@ static ssize_t write_file_queue(struct file *file,  				 const char __user *userbuf,  				 size_t count, loff_t *ppos)  { -	struct ath5k_softc *sc = file->private_data; +	struct ath5k_hw *ah = file->private_data;  	char buf[20];  	if (copy_from_user(buf, userbuf, min(count, sizeof(buf))))  		return -EFAULT;  	if (strncmp(buf, "start", 5) == 0) -		ieee80211_wake_queues(sc->hw); +		ieee80211_wake_queues(ah->hw);  	else if (strncmp(buf, "stop", 4) == 0) -		ieee80211_stop_queues(sc->hw); +		ieee80211_stop_queues(ah->hw);  	return count;  } @@ -886,54 +888,57 @@ static const struct file_operations fops_queue = {  void -ath5k_debug_init_device(struct ath5k_softc *sc) +ath5k_debug_init_device(struct ath5k_hw *ah)  {  	struct dentry *phydir; -	sc->debug.level = ath5k_debug; +	ah->debug.level = ath5k_debug; -	phydir = debugfs_create_dir("ath5k", sc->hw->wiphy->debugfsdir); +	phydir = debugfs_create_dir("ath5k", ah->hw->wiphy->debugfsdir);  	if (!phydir) -	    return; +		return; -	debugfs_create_file("debug", S_IWUSR | S_IRUSR, phydir, sc, +	debugfs_create_file("debug", S_IWUSR | S_IRUSR, phydir, ah,  			    &fops_debug); -	debugfs_create_file("registers", S_IRUSR, phydir, sc, &fops_registers); +	debugfs_create_file("registers", S_IRUSR, phydir, ah, &fops_registers); -	debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, sc, +	debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah,  			    &fops_beacon); -	debugfs_create_file("reset", S_IWUSR, phydir, sc, &fops_reset); +	debugfs_create_file("reset", S_IWUSR, phydir, ah, &fops_reset); -	debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, sc, +	debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, ah,  			    &fops_antenna); -	debugfs_create_file("misc", S_IRUSR, phydir, sc, &fops_misc); +	debugfs_create_file("misc", S_IRUSR, phydir, ah, &fops_misc); -	debugfs_create_file("frameerrors", S_IWUSR | S_IRUSR, phydir, sc, +	debugfs_create_file("frameerrors", S_IWUSR | S_IRUSR, phydir, ah,  			    &fops_frameerrors); -	debugfs_create_file("ani", S_IWUSR | S_IRUSR, phydir, sc, &fops_ani); +	debugfs_create_file("ani", S_IWUSR | S_IRUSR, phydir, ah, &fops_ani); -	debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, sc, +	debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, ah,  			    &fops_queue); + +	debugfs_create_bool("32khz_clock", S_IWUSR | S_IRUSR, phydir, +			    &ah->ah_use_32khz_clock);  }  /* functions used in other places */  void -ath5k_debug_dump_bands(struct ath5k_softc *sc) +ath5k_debug_dump_bands(struct ath5k_hw *ah)  {  	unsigned int b, i; -	if (likely(!(sc->debug.level & ATH5K_DEBUG_DUMPBANDS))) +	if (likely(!(ah->debug.level & ATH5K_DEBUG_DUMPBANDS)))  		return; -	BUG_ON(!sc->sbands); +	BUG_ON(!ah->sbands);  	for (b = 0; b < IEEE80211_NUM_BANDS; b++) { -		struct ieee80211_supported_band *band = &sc->sbands[b]; +		struct ieee80211_supported_band *band = &ah->sbands[b];  		char bname[6];  		switch (band->band) {  		case IEEE80211_BAND_2GHZ: @@ -983,41 +988,41 @@ ath5k_debug_printrxbuf(struct ath5k_buf *bf, int done,  }  void -ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah) +ath5k_debug_printrxbuffs(struct ath5k_hw *ah)  {  	struct ath5k_desc *ds;  	struct ath5k_buf *bf;  	struct ath5k_rx_status rs = {};  	int status; -	if (likely(!(sc->debug.level & ATH5K_DEBUG_DESC))) +	if (likely(!(ah->debug.level & ATH5K_DEBUG_DESC)))  		return;  	printk(KERN_DEBUG "rxdp %x, rxlink %p\n", -		ath5k_hw_get_rxdp(ah), sc->rxlink); +		ath5k_hw_get_rxdp(ah), ah->rxlink); -	spin_lock_bh(&sc->rxbuflock); -	list_for_each_entry(bf, &sc->rxbuf, list) { +	spin_lock_bh(&ah->rxbuflock); +	list_for_each_entry(bf, &ah->rxbuf, list) {  		ds = bf->desc;  		status = ah->ah_proc_rx_desc(ah, ds, &rs);  		if (!status)  			ath5k_debug_printrxbuf(bf, status == 0, &rs);  	} -	spin_unlock_bh(&sc->rxbuflock); +	spin_unlock_bh(&ah->rxbuflock);  }  void -ath5k_debug_printtxbuf(struct ath5k_softc *sc, struct ath5k_buf *bf) +ath5k_debug_printtxbuf(struct ath5k_hw *ah, struct ath5k_buf *bf)  {  	struct ath5k_desc *ds = bf->desc;  	struct ath5k_hw_5212_tx_desc *td = &ds->ud.ds_tx5212;  	struct ath5k_tx_status ts = {};  	int done; -	if (likely(!(sc->debug.level & ATH5K_DEBUG_DESC))) +	if (likely(!(ah->debug.level & ATH5K_DEBUG_DESC)))  		return; -	done = sc->ah->ah_proc_tx_desc(sc->ah, bf->desc, &ts); +	done = ah->ah_proc_tx_desc(ah, bf->desc, &ts);  	printk(KERN_DEBUG "T (%p %llx) %08x %08x %08x %08x %08x %08x %08x "  		"%08x %c\n", ds, (unsigned long long)bf->daddr, ds->ds_link,  |