2014-07-29 06:36:42

by Denton Gentry

[permalink] [raw]
Subject: [PATCH] mac80211: fix start_seq_num in Rx reorder offload

sta->last_seq_ctrl is the seq_ctrl field from the last header
seen, need to shift it 4 bits to extract the sequence number.
Otherwise the ieee80211_sn_less() check at the top of
ieee80211_sta_manage_reorder_buf drops frames until the sequence
number catches up.

Cc: Michal Kazior <[email protected]>
Signed-off-by: Denton Gentry <[email protected]>
---
net/mac80211/iface.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 7e5afaa..7434ffe 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1195,8 +1195,8 @@ static void ieee80211_iface_work(struct work_struct *work)
if (sta) {
u16 last_seq;

- last_seq = le16_to_cpu(
- sta->last_seq_ctrl[rx_agg->tid]);
+ last_seq = IEEE80211_SEQ_TO_SN(le16_to_cpu(
+ sta->last_seq_ctrl[rx_agg->tid]));

__ieee80211_start_rx_ba_session(sta,
0, 0,
--
2.0.0.526.g5318336



2014-07-29 11:55:35

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix start_seq_num in Rx reorder offload

On Mon, 2014-07-28 at 23:36 -0700, Denton Gentry wrote:
> sta->last_seq_ctrl is the seq_ctrl field from the last header
> seen, need to shift it 4 bits to extract the sequence number.
> Otherwise the ieee80211_sn_less() check at the top of
> ieee80211_sta_manage_reorder_buf drops frames until the sequence
> number catches up.

Makes sense, applied, thanks.

johannes