diff options
author | Bruno Randolf <br1@einfach.org> | 2010-03-25 14:49:47 +0900 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-03-31 14:39:10 -0400 |
commit | a8c944f8a00dcc4ac6900efcddab1a0cf300c791 (patch) | |
tree | 94dd655f078c6f4dc1ec924e110ad33813268dbe | |
parent | da35111ad970081bdf6e848d1861c7d16e71079b (diff) | |
download | kernel_samsung_smdk4412-a8c944f8a00dcc4ac6900efcddab1a0cf300c791.zip kernel_samsung_smdk4412-a8c944f8a00dcc4ac6900efcddab1a0cf300c791.tar.gz kernel_samsung_smdk4412-a8c944f8a00dcc4ac6900efcddab1a0cf300c791.tar.bz2 |
ath5k: add capability flag for phyerror counters
Chipsets since revision AR5213A (0x59) have hardware counters for PHY errors
which we can read directly from the registers. Older hardware has to use the RX
descriptor status to get a count of PHY errors. This will be used in several
places in the ANI implementation, so a flag is useful.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/ath5k.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath5k/caps.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h index ec62690..f578c1e 100644 --- a/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/drivers/net/wireless/ath/ath5k/ath5k.h @@ -982,6 +982,8 @@ struct ath5k_capabilities { struct { u8 q_tx_num; } cap_queues; + + bool cap_has_phyerr_counters; }; /* size of noise floor history (keep it a power of two) */ diff --git a/drivers/net/wireless/ath/ath5k/caps.c b/drivers/net/wireless/ath/ath5k/caps.c index e618e71b..74f0071 100644 --- a/drivers/net/wireless/ath/ath5k/caps.c +++ b/drivers/net/wireless/ath/ath5k/caps.c @@ -109,6 +109,12 @@ int ath5k_hw_set_capabilities(struct ath5k_hw *ah) else ah->ah_capabilities.cap_queues.q_tx_num = AR5K_NUM_TX_QUEUES; + /* newer hardware has PHY error counters */ + if (ah->ah_mac_srev >= AR5K_SREV_AR5213A) + ah->ah_capabilities.cap_has_phyerr_counters = true; + else + ah->ah_capabilities.cap_has_phyerr_counters = false; + return 0; } |