diff mbox

ath9k: fix aggregation session lockup

Message ID 53E4B305.8050500@open-mesh.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Antonio Quartulli Aug. 8, 2014, 11:22 a.m. UTC
On 04/08/14 22:14, Ben Greear wrote:
> On 08/04/2014 06:27 AM, Antonio Quartulli wrote:
> 
> 
>> On 29/07/14 18:05, Ben Greear wrote:
>>> On 07/28/2014 02:11 PM, Felix Fietkau wrote:
>>>> Interesting. Maybe you should ask Antonio for an updated version of the patch that he used to debug this issue. If you give me the output of it while
>>>> it's locked up, I might be able to figure out what's going on in your setup.
>>>
>>> What is the easiest upstream tree for you to debug?
> 
>> Sorry for the late reply but I was pretty "disconnected" in the last days.
> 
>> Is the debugging patch still required? If so, I can dig in my buildroot and retrieve it.
> 
> I would appreciate it if you could post the patch.  I'd like to
> see if I can get the bug fixed once and for all.....
> 
> Thanks,
> Ben

Ben,

attached you have the patches we have been using during our debug.

They create a new debugfs file that you can read when the wifi is stuck
in order to gather some information about the queues/tids status. The
file is located in the ath9k debugfs folder and its name is "nodes".

I hope it can help.

Cheers,
diff mbox

Patch

diff -urw compat-wireless-2014-05-22.orig/drivers/net/wireless/ath/ath9k/debug.c compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/debug.c
--- compat-wireless-2014-05-22.orig/drivers/net/wireless/ath/ath9k/debug.c	2014-07-23 00:44:26.713083838 +0200
+++ compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/debug.c	2014-07-23 00:56:13.615066352 +0200
@@ -715,14 +715,20 @@ 
 
 static void ath9k_debug_print_skb(struct sk_buff_head *skb_head)
 {
+	struct ieee80211_tx_info *tx_info;
 	struct ath_frame_info *fi;
 	struct ath_buf *bf;
 	struct sk_buff *skb;
 
 	skb_queue_walk(skb_head, skb) {
+		tx_info = IEEE80211_SKB_CB(skb);
+		nodes_len += snprintf(nodes_buf + nodes_len,
+				      nodes_size - nodes_len,
+				      "skb tx_info->flags = %#.8x\n",
+				      tx_info->flags);
+
 		fi = get_frame_info(skb);
 		bf = fi->bf;
-
 		if (!bf) {
 			nodes_len += snprintf(nodes_buf + nodes_len, nodes_size - nodes_len, "no bf\n");
 			continue;