Message ID | 1396374940-21453-1-git-send-email-greearb@candelatech.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
greearb@candelatech.com writes: > From: Ben Greear <greearb@candelatech.com> > > It can be nice to update the firmware's stats while > debugging other bits of the driver, so add helper method > to do this. > > Signed-off-by: Ben Greear <greearb@candelatech.com> [...] > --- a/drivers/net/wireless/ath/ath10k/debug.h > +++ b/drivers/net/wireless/ath/ath10k/debug.h > @@ -135,4 +135,6 @@ struct dbglog_hdr_s { > > void ath10k_dbg_print_fw_dbg_buffer(u8 *buffer, int len, const char* lvl); > > +int ath10k_refresh_peer_stats(struct ath10k *ar); I don't see anyone calling this. How are you planning to use it?
On 04/02/2014 12:32 AM, Kalle Valo wrote: > greearb@candelatech.com writes: > >> From: Ben Greear <greearb@candelatech.com> >> >> It can be nice to update the firmware's stats while >> debugging other bits of the driver, so add helper method >> to do this. >> >> Signed-off-by: Ben Greear <greearb@candelatech.com> > > [...] > >> --- a/drivers/net/wireless/ath/ath10k/debug.h >> +++ b/drivers/net/wireless/ath/ath10k/debug.h >> @@ -135,4 +135,6 @@ struct dbglog_hdr_s { >> >> void ath10k_dbg_print_fw_dbg_buffer(u8 *buffer, int len, const char* lvl); >> >> +int ath10k_refresh_peer_stats(struct ath10k *ar); > > I don't see anyone calling this. How are you planning to use it? The RFC patch that debugs tx-hang calls it..nice to see he firmware's buffer reap stats and such before/after trying to flush the buffers. I figure it will be useful for other such uses as well, now that stats actually work. Thanks, Ben
Ben Greear <greearb@candelatech.com> writes: > On 04/02/2014 12:32 AM, Kalle Valo wrote: >> greearb@candelatech.com writes: >> >>> From: Ben Greear <greearb@candelatech.com> >>> >>> It can be nice to update the firmware's stats while >>> debugging other bits of the driver, so add helper method >>> to do this. >>> >>> Signed-off-by: Ben Greear <greearb@candelatech.com> >> >> [...] >> >>> --- a/drivers/net/wireless/ath/ath10k/debug.h >>> +++ b/drivers/net/wireless/ath/ath10k/debug.h >>> @@ -135,4 +135,6 @@ struct dbglog_hdr_s { >>> >>> void ath10k_dbg_print_fw_dbg_buffer(u8 *buffer, int len, const char* lvl); >>> >>> +int ath10k_refresh_peer_stats(struct ath10k *ar); >> >> I don't see anyone calling this. How are you planning to use it? > > The RFC patch that debugs tx-hang calls it..nice to see he firmware's > buffer reap stats and such before/after trying to flush the buffers. > > I figure it will be useful for other such uses as well, now that stats > actually work. Ok, I'll drop this patch for now. You can resend when we have callers for this.
diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index f562ac5..5813286 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -283,6 +283,21 @@ void ath10k_debug_read_target_stats(struct ath10k *ar, complete(&ar->debug.event_stats_compl); } +int ath10k_refresh_peer_stats(struct ath10k *ar) +{ + int ret = ath10k_wmi_request_stats(ar, WMI_REQUEST_PEER_STAT); + if (ret) { + ath10k_warn("could not request stats (%d)\n", ret); + return ret; + } + + ret = wait_for_completion_timeout(&ar->debug.event_stats_compl, 1*HZ); + if (ret <= 0) + return ret; + + return 0; +} + static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { @@ -291,7 +306,6 @@ static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf, char *buf = NULL; unsigned int len = 0, buf_len = 8000; ssize_t ret_cnt = 0; - long left; int i; int ret; @@ -306,14 +320,8 @@ static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf, if (!buf) goto exit; - ret = ath10k_wmi_request_stats(ar, WMI_REQUEST_PEER_STAT); - if (ret) { - ath10k_warn("could not request stats (%d)\n", ret); - goto exit; - } - - left = wait_for_completion_timeout(&ar->debug.event_stats_compl, 1*HZ); - if (left <= 0) + ret = ath10k_refresh_peer_stats(ar); + if (ret) goto exit; spin_lock_bh(&ar->data_lock); diff --git a/drivers/net/wireless/ath/ath10k/debug.h b/drivers/net/wireless/ath/ath10k/debug.h index 12573fa..e5d1391 100644 --- a/drivers/net/wireless/ath/ath10k/debug.h +++ b/drivers/net/wireless/ath/ath10k/debug.h @@ -135,4 +135,6 @@ struct dbglog_hdr_s { void ath10k_dbg_print_fw_dbg_buffer(u8 *buffer, int len, const char* lvl); +int ath10k_refresh_peer_stats(struct ath10k *ar); + #endif /* _DEBUG_H_ */