* [PATCH] ath6kl: Fix packet drop when ath6kl_cookie runs out
@ 2011-11-08 14:31 Vasanthakumar Thiagarajan
2011-11-13 9:43 ` Kalle Valo
0 siblings, 1 reply; 2+ messages in thread
From: Vasanthakumar Thiagarajan @ 2011-11-08 14:31 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
"ath6kl: Maintain virtual interface in a list" mistakenly stops the
netq only when the mode is ibss. This causes packet drops in sta mode
when the available cookies (buffer abstraction in ath6kl and also used
for tx throttling) runs out for the highest priority traffic. This patch
just fixes this regression though the original code may still need fixes
which can be addressed in separate patches.
Reported-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/txrx.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/txrx.c b/drivers/net/wireless/ath/ath6kl/txrx.c
index 62beadb..0b45d45 100644
--- a/drivers/net/wireless/ath/ath6kl/txrx.c
+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
@@ -453,11 +453,11 @@ enum htc_send_full_action ath6kl_tx_queue_full(struct htc_target *target,
set_bit(WMI_CTRL_EP_FULL, &ar->flag);
spin_unlock_bh(&ar->lock);
ath6kl_err("wmi ctrl ep is full\n");
- goto stop_adhoc_netq;
+ return action;
}
if (packet->info.tx.tag == ATH6KL_CONTROL_PKT_TAG)
- goto stop_adhoc_netq;
+ return action;
/*
* The last MAX_HI_COOKIE_NUM "batch" of cookies are reserved for
@@ -465,20 +465,18 @@ enum htc_send_full_action ath6kl_tx_queue_full(struct htc_target *target,
*/
if (ar->ac_stream_pri_map[ar->ep2ac_map[endpoint]] <
ar->hiac_stream_active_pri &&
- ar->cookie_count <= MAX_HI_COOKIE_NUM) {
+ ar->cookie_count <= MAX_HI_COOKIE_NUM)
/*
* Give preference to the highest priority stream by
* dropping the packets which overflowed.
*/
action = HTC_SEND_FULL_DROP;
- goto stop_adhoc_netq;
- }
-stop_adhoc_netq:
/* FIXME: Locking */
spin_lock_bh(&ar->list_lock);
list_for_each_entry(vif, &ar->vif_list, list) {
- if (vif->nw_type == ADHOC_NETWORK) {
+ if (vif->nw_type == ADHOC_NETWORK ||
+ action != HTC_SEND_FULL_DROP) {
spin_unlock_bh(&ar->list_lock);
spin_lock_bh(&vif->if_lock);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ath6kl: Fix packet drop when ath6kl_cookie runs out
2011-11-08 14:31 [PATCH] ath6kl: Fix packet drop when ath6kl_cookie runs out Vasanthakumar Thiagarajan
@ 2011-11-13 9:43 ` Kalle Valo
0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2011-11-13 9:43 UTC (permalink / raw)
To: Vasanthakumar Thiagarajan; +Cc: linux-wireless
On 11/08/2011 04:31 PM, Vasanthakumar Thiagarajan wrote:
> "ath6kl: Maintain virtual interface in a list" mistakenly stops the
> netq only when the mode is ibss. This causes packet drops in sta mode
> when the available cookies (buffer abstraction in ath6kl and also used
> for tx throttling) runs out for the highest priority traffic. This patch
> just fixes this regression though the original code may still need fixes
> which can be addressed in separate patches.
>
> Reported-by: Kalle Valo <kvalo@qca.qualcomm.com>
> Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Thanks, applied.
> * The last MAX_HI_COOKIE_NUM "batch" of cookies are reserved for
> @@ -465,20 +465,18 @@ enum htc_send_full_action ath6kl_tx_queue_full(struct htc_target *target,
> */
> if (ar->ac_stream_pri_map[ar->ep2ac_map[endpoint]] <
> ar->hiac_stream_active_pri &&
> - ar->cookie_count <= MAX_HI_COOKIE_NUM) {
> + ar->cookie_count <= MAX_HI_COOKIE_NUM)
> /*
> * Give preference to the highest priority stream by
> * dropping the packets which overflowed.
> */
> action = HTC_SEND_FULL_DROP;
In the code before "ath6kl: Maintain virtual interface in a list" this
test was not run in Ad-Hoc mode, but now it is run. AFAICS it shouldn't
create any issues, but wanted to point out anyway.
Also, as discussed earlier, it's better to have braces when you have a
comment in a single line if statement. But this is a minor style issue
and can be fixed later. Any case here are examples what I mean:
if (foo)
return 0;
if (bar) {
/* this is a comment */
return 0;
}
/* this is a second comment */
if (foobar)
return 0;
Kalle
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-11-13 9:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-08 14:31 [PATCH] ath6kl: Fix packet drop when ath6kl_cookie runs out Vasanthakumar Thiagarajan
2011-11-13 9:43 ` Kalle Valo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).