Skip to content

Commit

Permalink
mt76: check qos ack policy before reordering packets
Browse files Browse the repository at this point in the history
Do not attempt to reorder packets not part of a BA session

Signed-off-by: Felix Fietkau <[email protected]>
  • Loading branch information
nbd168 committed Jan 29, 2018
1 parent e67e7a5 commit 8693864
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion agg-rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,13 @@ mt76_rx_aggr_check_ctl(struct sk_buff *skb, struct sk_buff_head *frames)
void mt76_rx_aggr_reorder(struct sk_buff *skb, struct sk_buff_head *frames)
{
struct mt76_rx_status *status = (struct mt76_rx_status *) skb->cb;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
struct mt76_wcid *wcid = status->wcid;
struct ieee80211_sta *sta;
struct mt76_rx_tid *tid;
bool sn_less;
u16 seqno, head, size;
u8 idx;
u8 ackp, idx;

__skb_queue_tail(frames, skb);

Expand All @@ -165,6 +166,12 @@ void mt76_rx_aggr_reorder(struct sk_buff *skb, struct sk_buff_head *frames)
return;
}

/* not part of a BA session */
ackp = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_ACK_POLICY_MASK;
if (ackp != IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK &&
ackp != IEEE80211_QOS_CTL_ACK_POLICY_NORMAL)
return;

tid = rcu_dereference(wcid->aggr[status->tid]);
if (!tid)
return;
Expand Down

0 comments on commit 8693864

Please sign in to comment.