ath9k: Dump BTCOEX tuning parameters
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
cdbe408da7
commit
4df50ca869
3 changed files with 87 additions and 1 deletions
|
@ -494,6 +494,7 @@ void ath9k_btcoex_timer_pause(struct ath_softc *sc);
|
||||||
void ath9k_btcoex_handle_interrupt(struct ath_softc *sc, u32 status);
|
void ath9k_btcoex_handle_interrupt(struct ath_softc *sc, u32 status);
|
||||||
u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, u32 max_4ms_framelen);
|
u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, u32 max_4ms_framelen);
|
||||||
void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc);
|
void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc);
|
||||||
|
int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 len, u32 size);
|
||||||
#else
|
#else
|
||||||
static inline int ath9k_init_btcoex(struct ath_softc *sc)
|
static inline int ath9k_init_btcoex(struct ath_softc *sc)
|
||||||
{
|
{
|
||||||
|
@ -520,6 +521,11 @@ static inline u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc,
|
||||||
static inline void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc)
|
static inline void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf,
|
||||||
|
u32 len, u32 size)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
|
#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
|
||||||
|
|
||||||
struct ath9k_wow_pattern {
|
struct ath9k_wow_pattern {
|
||||||
|
|
|
@ -1586,6 +1586,35 @@ static const struct file_operations fops_samps = {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
|
||||||
|
static ssize_t read_file_btcoex(struct file *file, char __user *user_buf,
|
||||||
|
size_t count, loff_t *ppos)
|
||||||
|
{
|
||||||
|
struct ath_softc *sc = file->private_data;
|
||||||
|
u32 len = 0, size = 1500;
|
||||||
|
char *buf;
|
||||||
|
size_t retval;
|
||||||
|
|
||||||
|
buf = kzalloc(size, GFP_KERNEL);
|
||||||
|
if (buf == NULL)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
len = ath9k_dump_btcoex(sc, buf, len, size);
|
||||||
|
|
||||||
|
retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
|
||||||
|
kfree(buf);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct file_operations fops_btcoex = {
|
||||||
|
.read = read_file_btcoex,
|
||||||
|
.open = simple_open,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.llseek = default_llseek,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
int ath9k_init_debug(struct ath_hw *ah)
|
int ath9k_init_debug(struct ath_hw *ah)
|
||||||
{
|
{
|
||||||
struct ath_common *common = ath9k_hw_common(ah);
|
struct ath_common *common = ath9k_hw_common(ah);
|
||||||
|
@ -1658,6 +1687,9 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||||
sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
|
sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
|
||||||
debugfs_create_file("diversity", S_IRUSR | S_IWUSR,
|
debugfs_create_file("diversity", S_IRUSR | S_IWUSR,
|
||||||
sc->debug.debugfs_phy, sc, &fops_ant_diversity);
|
sc->debug.debugfs_phy, sc, &fops_ant_diversity);
|
||||||
|
#ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
|
||||||
|
debugfs_create_file("btcoex", S_IRUSR, sc->debug.debugfs_phy, sc,
|
||||||
|
&fops_btcoex);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -494,4 +494,52 @@ int ath9k_init_btcoex(struct ath_softc *sc)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 len, u32 size)
|
||||||
|
{
|
||||||
|
#define ATH_DUMP_BTCOEX(_s, _val) \
|
||||||
|
do { \
|
||||||
|
len += snprintf(buf + len, size - len, \
|
||||||
|
"%20s : %10d\n", _s, (_val)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
struct ath_btcoex *btcoex = &sc->btcoex;
|
||||||
|
struct ath_mci_profile *mci = &btcoex->mci;
|
||||||
|
struct ath_hw *ah = sc->sc_ah;
|
||||||
|
struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ATH_DUMP_BTCOEX("Total BT profiles", NUM_PROF(mci));
|
||||||
|
ATH_DUMP_BTCOEX("Number of MGMT", mci->num_mgmt);
|
||||||
|
ATH_DUMP_BTCOEX("Number of SCO", mci->num_sco);
|
||||||
|
ATH_DUMP_BTCOEX("Number of A2DP", mci->num_a2dp);
|
||||||
|
ATH_DUMP_BTCOEX("Number of HID", mci->num_hid);
|
||||||
|
ATH_DUMP_BTCOEX("Number of PAN", mci->num_pan);
|
||||||
|
ATH_DUMP_BTCOEX("Number of ACL", mci->num_other_acl);
|
||||||
|
ATH_DUMP_BTCOEX("Number of BDR", mci->num_bdr);
|
||||||
|
ATH_DUMP_BTCOEX("Aggr. Limit", mci->aggr_limit);
|
||||||
|
ATH_DUMP_BTCOEX("Stomp Type", btcoex->bt_stomp_type);
|
||||||
|
ATH_DUMP_BTCOEX("BTCoex Period (msec)", btcoex->btcoex_period);
|
||||||
|
ATH_DUMP_BTCOEX("Duty Cycle", btcoex->duty_cycle);
|
||||||
|
ATH_DUMP_BTCOEX("BT Wait time", btcoex->bt_wait_time);
|
||||||
|
ATH_DUMP_BTCOEX("Concurrent Tx", btcoex_hw->mci.concur_tx);
|
||||||
|
ATH_DUMP_BTCOEX("Concur RSSI count", btcoex->rssi_count);
|
||||||
|
len += snprintf(buf + len, size - len, "BT Weights: ");
|
||||||
|
for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
|
||||||
|
len += snprintf(buf + len, size - len, "%08x ",
|
||||||
|
btcoex_hw->bt_weight[i]);
|
||||||
|
len += snprintf(buf + len, size - len, "\n");
|
||||||
|
len += snprintf(buf + len, size - len, "WLAN Weights: ");
|
||||||
|
for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
|
||||||
|
len += snprintf(buf + len, size - len, "%08x ",
|
||||||
|
btcoex_hw->wlan_weight[i]);
|
||||||
|
len += snprintf(buf + len, size - len, "\n");
|
||||||
|
len += snprintf(buf + len, size - len, "Tx Priorities: ");
|
||||||
|
for (i = 0; i < ATH_BTCOEX_STOMP_MAX; i++)
|
||||||
|
len += snprintf(buf + len, size - len, "%08x ",
|
||||||
|
btcoex_hw->tx_prio[i]);
|
||||||
|
len += snprintf(buf + len, size - len, "\n");
|
||||||
|
#undef ATH_DUMP_BTCOEX
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
|
#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
|
||||||
|
|
Loading…
Add table
Reference in a new issue