diff mbox

All '0' in agg_status

Message ID 81378355ff1438395ca925d181791dbb@cvweb06.wmail.nhnsystem.com (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show

Commit Message

Kwang Min Kim Feb. 14, 2017, 8:26 a.m. UTC
I have two questions.

1. As a result of debugging 'ath10k' and 'mac80211', if there is a problem, ADDBA request and DELBA request are receive at 'station' side at the same time.
   Could it be this?


2. The code below seems to fix the problem. (I did not consider the impact elsewhere.)
   Is it the correct code? How do I fix the incorrect code?





---------------

Kim Kwang Min

Mobile +82 010-5521-6393 
Mail gwondori@nimbus.kr 






-----Original Message-----
From: "Kwang Min Kim"<gwondori@nimbus.kr> 
To: "Adrian Chadd"<adrian@freebsd.org>; <ath10k@lists.infradead.org>; 
Cc: 
Sent: 2017-01-19 (목) 19:26:44
Subject: Re: All '0' in agg_status
 
hi, adrian

firmware: 10.2.4.59-2

chipset: qca9880

driver version: backports-4.4.2

Thanks.

---------------

Kim Kwang Min

Mobile +82 010-5521-6393 
Mail gwondori@nimbus.kr 






-----Original Message-----
From: "Adrian Chadd"<adrian@freebsd.org> 
To: "김광민"<gwondori@nimbus.kr>; 
Cc: "ath10k@lists.infradead.org"<ath10k@lists.infradead.org>; "강경완"<bigskang@nimbus.kr>; 
Sent: 2017-01-18 (수) 16:40:26
Subject: Re: All '0' in agg_status
 
hiya

which firmware, chipset, driver version is this with?


-adrian





-----Original Message-----
From: "김광민"<gwondori@nimbus.kr> 
To: <ath10k@lists.infradead.org>; 
Cc: "강경완"<bigskang@nimbus.kr>; 
Sent: 2017-01-17 (화) 20:30:22
Subject: All '0' in agg_status
 
Very rarely, I experience the problem that packets are serious dropped even though all wireless states(iwconfig, iw wlan0 info, fw_stats, etc.) are OK.

This problem occurs only after the AP and station are badly(?) connected, and once the connection is established normally, this problem does not occur on the good connection. And once this problem occurred, it won't be fixed by itself until the AP and the station are reconnected.

I have investigated and I have found two differences between the good connection and the bad connection.

The one is the error messages on dmesg,
    <...>
    [ 2826.432784] wlan0: Limiting TX power to 21 (24 - 3) dBm as advertised by 04:f0:21:20:38:09
    [ 2827.296925] wlan0: Rx A-MPDU request on 04:f0:21:20:38:09 tid 0 result 0 
    [ 2827.297483] wlan0: Rx BA session stop requested for 04:f0:21:20:38:09 tid 0 recipient reason: 0 <--- from this line
    [ 2827.297578] wlan0: Rx A-MPDU request on 04:f0:21:20:38:09 tid 0 result 0 
    [ 2827.298694] wlan0: Rx BA session stop requested for 04:f0:21:20:38:09 tid 0 recipient reason: 0 
    [ 2829.074439] wlan0: Rx A-MPDU request on 04:f0:21:20:38:09 tid 6 result 0                              <-- to this line
    <...>
The another difference is in "agg_status" file on Station side (/sys/kernel/debug/ieee80211/phy0/netdev:wlan0/stations/XX:XX:XX:XX:XX:XX/agg_status).
As my investigation, the file of the AP side always have one or two '1' at the second column. And the file of the station side without problem also have one or two '1'. But, there is no '1' in the file on the station where the problem occurred.
    #more /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/*/agg_status
    next dialog_token: 0x1
    TID                RX        DTKN        SSN                TX        DTKN        pending
    00                0        0x00        0x000                0        0x00        000
    01                0        0x00        0x000                0        0x00        000
    02                0        0x00        0x000                0        0x00        000
    03                0        0x00        0x000                0        0x00        000
    04                0        0x00        0x000                0        0x00        000
    05                0        0x00        0x000                0        0x00        000
    06                0        0x00        0x000                0        0x00        000
    07                0        0x00        0x000                0        0x00        000
    08                0        0x00        0x000                0        0x00        000
    09                0        0x00        0x000                0        0x00        000
    10                0        0x00        0x000                0        0x00        000
    11                0        0x00        0x000                0        0x00        000
    12                0        0x00        0x000                0        0x00        000
    13                0        0x00        0x000                0        0x00        000
    14                0        0x00        0x000                0        0x00        000
    15                0        0x00        0x000                0        0x00        000

Could you tell me what I have to do?
Should one more '1' exist at the second columns of "agg_status"? In other words, is it problem if there is no '1' in the second column of agg_status?

If you know how to fix this, please let me know that. 

---------------

Kim Kwang Min

Mobile +82 010-5521-6393 
Mail gwondori@nimbus.kr

Comments

Kalle Valo Feb. 14, 2017, 3:09 p.m. UTC | #1
Kwang Min Kim <gwondori@nimbus.kr> writes:

> I have two questions.
>
> 1. As a result of debugging 'ath10k' and 'mac80211', if there is a problem, ADDBA request and DELBA request are receive at 'station' side at the same time.
>    Could it be this?
>
>
> 2. The code below seems to fix the problem. (I did not consider the impact elsewhere.)
>    Is it the correct code? How do I fix the incorrect code?
>
> --- net/mac80211/iface.c
> +++ net/mac80211/iface.c

For mac80211 changes you should ask about that in linux-wireless mailing
list, but better also CC the ath10k list.

https://wireless.wiki.kernel.org/en/developers/mailinglists
Kwang Min Kim Feb. 15, 2017, 10:36 a.m. UTC | #2
I understand.

I have found several related patches that have been applied to solve the problem.

Thanks.
diff mbox

Patch

--- net/mac80211/iface.c
+++ net/mac80211/iface.c
@@ -1260,10 +1265,14 @@ 
                        mutex_lock(&local->sta_mtx);
                        sta = sta_info_get_bss(sdata, rx_agg->addr);
                        if (sta)
+                       {
+/*
                                __ieee80211_stop_rx_ba_session(sta,
                                                        rx_agg->tid,
                                                        WLAN_BACK_RECIPIENT, 0,
                                                        false);
+ */
+                       }
                        mutex_unlock(&local->sta_mtx);
                } else if (ieee80211_is_action(mgmt->frame_control) &&
                           mgmt->u.action.category == WLAN_CATEGORY_BACK) {