* mac80211: out of date seq number cause network stall @ 2017-06-24 17:21 孙建希 2017-06-24 17:49 ` 孙建希 0 siblings, 1 reply; 5+ messages in thread From: 孙建希 @ 2017-06-24 17:21 UTC (permalink / raw) To: linux-wireless Hi, I first find this bug in wds ath9k mode. When use iperf3, so many out of date seq number, in mac80211 function ieee80211_sta_manage_reorder_buf: [ 1248.968407] mac80211 with out of date seq number: 2551 2547 2552 [ 1248.972972] mac80211 with out of date seq number: 2551 2548 2552 [ 1248.978800] mac80211 with out of date seq number: 2551 2549 2552 [ 1248.984760] mac80211 with out of date seq number: 2551 2550 2552 [ 1248.990636] mac80211 with out of date seq number: 2551 2551 2552 `previous seq number` `current seq number` `head seq num`. when `head seq number` - `current seq num` > 200 . Iperf3 will block. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac80211: out of date seq number cause network stall 2017-06-24 17:21 mac80211: out of date seq number cause network stall 孙建希 @ 2017-06-24 17:49 ` 孙建希 2017-06-25 10:33 ` 孙建希 0 siblings, 1 reply; 5+ messages in thread From: 孙建希 @ 2017-06-24 17:49 UTC (permalink / raw) To: linux-wireless Hi, I found `head seq number` bigger than all seq num: [ 3887.972639] ma80211 with out of date seq number: 1296 1297 1889 [ 3887.977134] ma80211 with out of date seq number: 1296 1298 1889 [ 3887.983082] ma80211 with out of date seq number: 1296 1299 1889 [ 3887.988929] ma80211 with out of date seq number: 1296 1300 1889 [ 3887.994861] ma80211 with out of date seq number: 1296 1301 1889 [ 3888.000764] ma80211 with out of date seq number: 1296 1302 1889 [ 3888.006638] ma80211 with out of date seq number: 1296 1303 1889 [ 3888.012576] ma80211 with out of date seq number: 1296 1304 1889 On Sun, Jun 25, 2017 at 1:21 AM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@gma= il.com> wrote: > Hi, > > I first find this bug in wds ath9k mode. > > When use iperf3, so many out of date seq number, in mac80211 function > ieee80211_sta_manage_reorder_buf: > > [ 1248.968407] mac80211 with out of date seq number: 2551 2547 2552 > [ 1248.972972] mac80211 with out of date seq number: 2551 2548 2552 > [ 1248.978800] mac80211 with out of date seq number: 2551 2549 2552 > [ 1248.984760] mac80211 with out of date seq number: 2551 2550 2552 > [ 1248.990636] mac80211 with out of date seq number: 2551 2551 2552 > > > `previous seq number` `current seq number` `head seq num`. > > > when `head seq number` - `current seq num` > 200 . Iperf3 will block. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac80211: out of date seq number cause network stall 2017-06-24 17:49 ` 孙建希 @ 2017-06-25 10:33 ` 孙建希 2017-06-27 8:07 ` 孙建希 0 siblings, 1 reply; 5+ messages in thread From: 孙建希 @ 2017-06-25 10:33 UTC (permalink / raw) To: linux-wireless, Johannes Berg, David S. Miller hi, In function `ieee80211_sta_manage_reorder_buf`: 1104 /* frame with out of date sequence number */ 1105 if (ieee80211_sn_less(mpdu_seq_num, head_seq_num)) { 1106 dev_kfree_skb(skb); 1107 goto out; 1108 } 1109 head_seq_num will out of oder, in ath9k wds mode. But i can not find why will out of order. [ 1549.043719] mac80211 mpdu_seq_num: 325 head_seq_num:326 [ 1549.053979] mac80211 mpdu_seq_num: 325 head_seq_num:1263 [ 1549.072450] mac80211 mpdu_seq_num: 326 head_seq_num:1263 head_seq_num out of order. Then almost 1000 packet will drop. I have read function `ieee80211_sta_manage_reorder_buf` and add some debug info. I suppose this bug is not caused by this function. I grep all mac80211 code, and there's no code change head_seq_num. Please help. On Sun, Jun 25, 2017 at 1:49 AM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@gma= il.com> wrote: > Hi, > > I found `head seq number` bigger than all seq num: > > [ 3887.972639] ma80211 with out of date seq number: 1296 1297 1889 > [ 3887.977134] ma80211 with out of date seq number: 1296 1298 1889 > [ 3887.983082] ma80211 with out of date seq number: 1296 1299 1889 > [ 3887.988929] ma80211 with out of date seq number: 1296 1300 1889 > [ 3887.994861] ma80211 with out of date seq number: 1296 1301 1889 > [ 3888.000764] ma80211 with out of date seq number: 1296 1302 1889 > [ 3888.006638] ma80211 with out of date seq number: 1296 1303 1889 > [ 3888.012576] ma80211 with out of date seq number: 1296 1304 1889 > > On Sun, Jun 25, 2017 at 1:21 AM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@g= mail.com> wrote: >> Hi, >> >> I first find this bug in wds ath9k mode. >> >> When use iperf3, so many out of date seq number, in mac80211 function >> ieee80211_sta_manage_reorder_buf: >> >> [ 1248.968407] mac80211 with out of date seq number: 2551 2547 2552 >> [ 1248.972972] mac80211 with out of date seq number: 2551 2548 2552 >> [ 1248.978800] mac80211 with out of date seq number: 2551 2549 2552 >> [ 1248.984760] mac80211 with out of date seq number: 2551 2550 2552 >> [ 1248.990636] mac80211 with out of date seq number: 2551 2551 2552 >> >> >> `previous seq number` `current seq number` `head seq num`. >> >> >> when `head seq number` - `current seq num` > 200 . Iperf3 will block. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac80211: out of date seq number cause network stall 2017-06-25 10:33 ` 孙建希 @ 2017-06-27 8:07 ` 孙建希 2017-06-27 8:37 ` Johannes Berg 0 siblings, 1 reply; 5+ messages in thread From: 孙建希 @ 2017-06-27 8:07 UTC (permalink / raw) To: linux-wireless, Johannes Berg, David S. Miller all, When recieve block ack request ctrl packet. I catch some error packet with ssn bigger than last recevice packet seq number. Then ieee80211_release_reorder_frames(rx->sdata, tid_agg_rx, start_seq_num, frames); will update head_seq_num to a wrong number. Which cause packet loss. So I think there should be a check start_seq_num should less than last seq number. Index: compat-wireless-2017-01-31/net/mac80211/rx.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- compat-wireless-2017-01-31.orig/net/mac80211/rx.c 2017-02-02 19:15:23.000000000 +0800 +++ compat-wireless-2017-01-31/net/mac80211/rx.c 2017-06-27 16:06:07.688053203 +0800 @@ -1040,6 +1040,8 @@ goto out; } + tid_agg_rx->last_mpdu_seq_num =3D mpdu_seq_num; + /* * If frame the sequence number exceeds our buffering window * size release some previous frames to make room for this one. @@ -2642,6 +2644,8 @@ TU_TO_EXP_TIME(tid_agg_rx->timeout)); spin_lock(&tid_agg_rx->reorder_lock); + if(ieee80211_sn_less(tid_agg_rx->last_mpdu_seq_num, start_seq_num)) + start_seq_num =3D ieee80211_sn_inc(tid_agg_rx->last_mpdu_seq_num); /* release stored frames up to start of BAR */ ieee80211_release_reorder_frames(rx->sdata, tid_agg_rx, start_seq_num, frames); Index: compat-wireless-2017-01-31/net/mac80211/sta_info.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- compat-wireless-2017-01-31.orig/net/mac80211/sta_info.h 2017-06-19 20:36:19.945264458 +0800 +++ compat-wireless-2017-01-31/net/mac80211/sta_info.h 2017-06-27 15:53:57.610946298 +0800 @@ -207,6 +207,7 @@ struct timer_list session_timer; struct timer_list reorder_timer; unsigned long last_rx; + u16 last_mpdu_seq_num; u16 head_seq_num; On Sun, Jun 25, 2017 at 6:33 PM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@gma= il.com> wrote: > hi, > > In function `ieee80211_sta_manage_reorder_buf`: > > 1104 /* frame with out of date sequence number */ > 1105 if (ieee80211_sn_less(mpdu_seq_num, head_seq_num)) { > 1106 dev_kfree_skb(skb); > 1107 goto out; > 1108 } > 1109 > > head_seq_num will out of oder, in ath9k wds mode. But i can not find > why will out of order. > > [ 1549.043719] mac80211 mpdu_seq_num: 325 head_seq_num:326 > [ 1549.053979] mac80211 mpdu_seq_num: 325 head_seq_num:1263 > [ 1549.072450] mac80211 mpdu_seq_num: 326 head_seq_num:1263 > > head_seq_num out of order. Then almost 1000 packet will drop. I have > read function `ieee80211_sta_manage_reorder_buf` and add some debug > info. I suppose this bug is not caused by this function. > > I grep all mac80211 code, and there's no code change head_seq_num. > > Please help. > > On Sun, Jun 25, 2017 at 1:49 AM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@g= mail.com> wrote: >> Hi, >> >> I found `head seq number` bigger than all seq num: >> >> [ 3887.972639] ma80211 with out of date seq number: 1296 1297 1889 >> [ 3887.977134] ma80211 with out of date seq number: 1296 1298 1889 >> [ 3887.983082] ma80211 with out of date seq number: 1296 1299 1889 >> [ 3887.988929] ma80211 with out of date seq number: 1296 1300 1889 >> [ 3887.994861] ma80211 with out of date seq number: 1296 1301 1889 >> [ 3888.000764] ma80211 with out of date seq number: 1296 1302 1889 >> [ 3888.006638] ma80211 with out of date seq number: 1296 1303 1889 >> [ 3888.012576] ma80211 with out of date seq number: 1296 1304 1889 >> >> On Sun, Jun 25, 2017 at 1:21 AM, =E5=AD=99=E5=BB=BA=E5=B8=8C <ycsunjane@= gmail.com> wrote: >>> Hi, >>> >>> I first find this bug in wds ath9k mode. >>> >>> When use iperf3, so many out of date seq number, in mac80211 function >>> ieee80211_sta_manage_reorder_buf: >>> >>> [ 1248.968407] mac80211 with out of date seq number: 2551 2547 2552 >>> [ 1248.972972] mac80211 with out of date seq number: 2551 2548 2552 >>> [ 1248.978800] mac80211 with out of date seq number: 2551 2549 2552 >>> [ 1248.984760] mac80211 with out of date seq number: 2551 2550 2552 >>> [ 1248.990636] mac80211 with out of date seq number: 2551 2551 2552 >>> >>> >>> `previous seq number` `current seq number` `head seq num`. >>> >>> >>> when `head seq number` - `current seq num` > 200 . Iperf3 will block. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac80211: out of date seq number cause network stall 2017-06-27 8:07 ` 孙建希 @ 2017-06-27 8:37 ` Johannes Berg 0 siblings, 0 replies; 5+ messages in thread From: Johannes Berg @ 2017-06-27 8:37 UTC (permalink / raw) To: 孙建希, linux-wireless -davem, he's really not concerned with this Hi, I really don't think that you're looking at the right thing - you should look at the transmitter. Please provide a sniffer capture showing the problem. johannes ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-06-27 8:37 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-24 17:21 mac80211: out of date seq number cause network stall 孙建希 2017-06-24 17:49 ` 孙建希 2017-06-25 10:33 ` 孙建希 2017-06-27 8:07 ` 孙建希 2017-06-27 8:37 ` Johannes Berg
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).