aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qca.qualcomm.com>2012-11-28 04:38:52 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-11-30 13:38:15 -0500
commitc175db87411f0e79924a48563d5f595b9a352907 (patch)
tree9b8c8740077337fb366e0e5a5a43321585eb3e06 /drivers/net/wireless/ath
parent6c50f9459e62eb133563fd23606f68bfc9d120e8 (diff)
ath9k: Move ethtool functions to debug.c
The ethtool statistics are available only when CONFIG_ATH9K_DEBUGFS is enabled, move these functions to debug.c Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath9k/debug.c119
-rw-r--r--drivers/net/wireless/ath/ath9k/debug.h8
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c127
3 files changed, 127 insertions, 127 deletions
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 939308c2571..cb5e45798ac 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1509,6 +1509,125 @@ static const struct file_operations fops_btcoex = {
1509}; 1509};
1510#endif 1510#endif
1511 1511
1512/* Ethtool support for get-stats */
1513
1514#define AMKSTR(nm) #nm "_BE", #nm "_BK", #nm "_VI", #nm "_VO"
1515static const char ath9k_gstrings_stats[][ETH_GSTRING_LEN] = {
1516 "tx_pkts_nic",
1517 "tx_bytes_nic",
1518 "rx_pkts_nic",
1519 "rx_bytes_nic",
1520 AMKSTR(d_tx_pkts),
1521 AMKSTR(d_tx_bytes),
1522 AMKSTR(d_tx_mpdus_queued),
1523 AMKSTR(d_tx_mpdus_completed),
1524 AMKSTR(d_tx_mpdu_xretries),
1525 AMKSTR(d_tx_aggregates),
1526 AMKSTR(d_tx_ampdus_queued_hw),
1527 AMKSTR(d_tx_ampdus_queued_sw),
1528 AMKSTR(d_tx_ampdus_completed),
1529 AMKSTR(d_tx_ampdu_retries),
1530 AMKSTR(d_tx_ampdu_xretries),
1531 AMKSTR(d_tx_fifo_underrun),
1532 AMKSTR(d_tx_op_exceeded),
1533 AMKSTR(d_tx_timer_expiry),
1534 AMKSTR(d_tx_desc_cfg_err),
1535 AMKSTR(d_tx_data_underrun),
1536 AMKSTR(d_tx_delim_underrun),
1537 "d_rx_decrypt_crc_err",
1538 "d_rx_phy_err",
1539 "d_rx_mic_err",
1540 "d_rx_pre_delim_crc_err",
1541 "d_rx_post_delim_crc_err",
1542 "d_rx_decrypt_busy_err",
1543
1544 "d_rx_phyerr_radar",
1545 "d_rx_phyerr_ofdm_timing",
1546 "d_rx_phyerr_cck_timing",
1547
1548};
1549#define ATH9K_SSTATS_LEN ARRAY_SIZE(ath9k_gstrings_stats)
1550
1551void ath9k_get_et_strings(struct ieee80211_hw *hw,
1552 struct ieee80211_vif *vif,
1553 u32 sset, u8 *data)
1554{
1555 if (sset == ETH_SS_STATS)
1556 memcpy(data, *ath9k_gstrings_stats,
1557 sizeof(ath9k_gstrings_stats));
1558}
1559
1560int ath9k_get_et_sset_count(struct ieee80211_hw *hw,
1561 struct ieee80211_vif *vif, int sset)
1562{
1563 if (sset == ETH_SS_STATS)
1564 return ATH9K_SSTATS_LEN;
1565 return 0;
1566}
1567
1568#define AWDATA(elem) \
1569 do { \
1570 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].elem; \
1571 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].elem; \
1572 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].elem; \
1573 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].elem; \
1574 } while (0)
1575
1576#define AWDATA_RX(elem) \
1577 do { \
1578 data[i++] = sc->debug.stats.rxstats.elem; \
1579 } while (0)
1580
1581void ath9k_get_et_stats(struct ieee80211_hw *hw,
1582 struct ieee80211_vif *vif,
1583 struct ethtool_stats *stats, u64 *data)
1584{
1585 struct ath_softc *sc = hw->priv;
1586 int i = 0;
1587
1588 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_pkts_all +
1589 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_pkts_all +
1590 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_pkts_all +
1591 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_pkts_all);
1592 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_bytes_all +
1593 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_bytes_all +
1594 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_bytes_all +
1595 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_bytes_all);
1596 AWDATA_RX(rx_pkts_all);
1597 AWDATA_RX(rx_bytes_all);
1598
1599 AWDATA(tx_pkts_all);
1600 AWDATA(tx_bytes_all);
1601 AWDATA(queued);
1602 AWDATA(completed);
1603 AWDATA(xretries);
1604 AWDATA(a_aggr);
1605 AWDATA(a_queued_hw);
1606 AWDATA(a_queued_sw);
1607 AWDATA(a_completed);
1608 AWDATA(a_retries);
1609 AWDATA(a_xretries);
1610 AWDATA(fifo_underrun);
1611 AWDATA(xtxop);
1612 AWDATA(timer_exp);
1613 AWDATA(desc_cfg_err);
1614 AWDATA(data_underrun);
1615 AWDATA(delim_underrun);
1616
1617 AWDATA_RX(decrypt_crc_err);
1618 AWDATA_RX(phy_err);
1619 AWDATA_RX(mic_err);
1620 AWDATA_RX(pre_delim_crc_err);
1621 AWDATA_RX(post_delim_crc_err);
1622 AWDATA_RX(decrypt_busy_err);
1623
1624 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_RADAR]);
1625 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_OFDM_TIMING]);
1626 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_CCK_TIMING]);
1627
1628 WARN_ON(i != ATH9K_SSTATS_LEN);
1629}
1630
1512int ath9k_init_debug(struct ath_hw *ah) 1631int ath9k_init_debug(struct ath_hw *ah)
1513{ 1632{
1514 struct ath_common *common = ath9k_hw_common(ah); 1633 struct ath_common *common = ath9k_hw_common(ah);
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index f9bee18de5a..bfc21b37cb1 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -307,6 +307,14 @@ void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
307 struct ath_tx_status *ts, struct ath_txq *txq, 307 struct ath_tx_status *ts, struct ath_txq *txq,
308 unsigned int flags); 308 unsigned int flags);
309void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs); 309void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs);
310int ath9k_get_et_sset_count(struct ieee80211_hw *hw,
311 struct ieee80211_vif *vif, int sset);
312void ath9k_get_et_stats(struct ieee80211_hw *hw,
313 struct ieee80211_vif *vif,
314 struct ethtool_stats *stats, u64 *data);
315void ath9k_get_et_strings(struct ieee80211_hw *hw,
316 struct ieee80211_vif *vif,
317 u32 sset, u8 *data);
310 318
311#else 319#else
312 320
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 0653dbc99e3..ffae384276a 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1882,133 +1882,6 @@ static int ath9k_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
1882 return 0; 1882 return 0;
1883} 1883}
1884 1884
1885#ifdef CONFIG_ATH9K_DEBUGFS
1886
1887/* Ethtool support for get-stats */
1888
1889#define AMKSTR(nm) #nm "_BE", #nm "_BK", #nm "_VI", #nm "_VO"
1890static const char ath9k_gstrings_stats[][ETH_GSTRING_LEN] = {
1891 "tx_pkts_nic",
1892 "tx_bytes_nic",
1893 "rx_pkts_nic",
1894 "rx_bytes_nic",
1895 AMKSTR(d_tx_pkts),
1896 AMKSTR(d_tx_bytes),
1897 AMKSTR(d_tx_mpdus_queued),
1898 AMKSTR(d_tx_mpdus_completed),
1899 AMKSTR(d_tx_mpdu_xretries),
1900 AMKSTR(d_tx_aggregates),
1901 AMKSTR(d_tx_ampdus_queued_hw),
1902 AMKSTR(d_tx_ampdus_queued_sw),
1903 AMKSTR(d_tx_ampdus_completed),
1904 AMKSTR(d_tx_ampdu_retries),
1905 AMKSTR(d_tx_ampdu_xretries),
1906 AMKSTR(d_tx_fifo_underrun),
1907 AMKSTR(d_tx_op_exceeded),
1908 AMKSTR(d_tx_timer_expiry),
1909 AMKSTR(d_tx_desc_cfg_err),
1910 AMKSTR(d_tx_data_underrun),
1911 AMKSTR(d_tx_delim_underrun),
1912
1913 "d_rx_decrypt_crc_err",
1914 "d_rx_phy_err",
1915 "d_rx_mic_err",
1916 "d_rx_pre_delim_crc_err",
1917 "d_rx_post_delim_crc_err",
1918 "d_rx_decrypt_busy_err",
1919
1920 "d_rx_phyerr_radar",
1921 "d_rx_phyerr_ofdm_timing",
1922 "d_rx_phyerr_cck_timing",
1923
1924};
1925#define ATH9K_SSTATS_LEN ARRAY_SIZE(ath9k_gstrings_stats)
1926
1927static void ath9k_get_et_strings(struct ieee80211_hw *hw,
1928 struct ieee80211_vif *vif,
1929 u32 sset, u8 *data)
1930{
1931 if (sset == ETH_SS_STATS)
1932 memcpy(data, *ath9k_gstrings_stats,
1933 sizeof(ath9k_gstrings_stats));
1934}
1935
1936static int ath9k_get_et_sset_count(struct ieee80211_hw *hw,
1937 struct ieee80211_vif *vif, int sset)
1938{
1939 if (sset == ETH_SS_STATS)
1940 return ATH9K_SSTATS_LEN;
1941 return 0;
1942}
1943
1944#define AWDATA(elem) \
1945 do { \
1946 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].elem; \
1947 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].elem; \
1948 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].elem; \
1949 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].elem; \
1950 } while (0)
1951
1952#define AWDATA_RX(elem) \
1953 do { \
1954 data[i++] = sc->debug.stats.rxstats.elem; \
1955 } while (0)
1956
1957static void ath9k_get_et_stats(struct ieee80211_hw *hw,
1958 struct ieee80211_vif *vif,
1959 struct ethtool_stats *stats, u64 *data)
1960{
1961 struct ath_softc *sc = hw->priv;
1962 int i = 0;
1963
1964 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_pkts_all +
1965 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_pkts_all +
1966 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_pkts_all +
1967 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_pkts_all);
1968 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_bytes_all +
1969 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_bytes_all +
1970 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_bytes_all +
1971 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_bytes_all);
1972 AWDATA_RX(rx_pkts_all);
1973 AWDATA_RX(rx_bytes_all);
1974
1975 AWDATA(tx_pkts_all);
1976 AWDATA(tx_bytes_all);
1977 AWDATA(queued);
1978 AWDATA(completed);
1979 AWDATA(xretries);
1980 AWDATA(a_aggr);
1981 AWDATA(a_queued_hw);
1982 AWDATA(a_queued_sw);
1983 AWDATA(a_completed);
1984 AWDATA(a_retries);
1985 AWDATA(a_xretries);
1986 AWDATA(fifo_underrun);
1987 AWDATA(xtxop);
1988 AWDATA(timer_exp);
1989 AWDATA(desc_cfg_err);
1990 AWDATA(data_underrun);
1991 AWDATA(delim_underrun);
1992
1993 AWDATA_RX(decrypt_crc_err);
1994 AWDATA_RX(phy_err);
1995 AWDATA_RX(mic_err);
1996 AWDATA_RX(pre_delim_crc_err);
1997 AWDATA_RX(post_delim_crc_err);
1998 AWDATA_RX(decrypt_busy_err);
1999
2000 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_RADAR]);
2001 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_OFDM_TIMING]);
2002 AWDATA_RX(phy_err_stats[ATH9K_PHYERR_CCK_TIMING]);
2003
2004 WARN_ON(i != ATH9K_SSTATS_LEN);
2005}
2006
2007/* End of ethtool get-stats functions */
2008
2009#endif
2010
2011
2012#ifdef CONFIG_PM_SLEEP 1885#ifdef CONFIG_PM_SLEEP
2013 1886
2014static void ath9k_wow_map_triggers(struct ath_softc *sc, 1887static void ath9k_wow_map_triggers(struct ath_softc *sc,