mirror of https://gitee.com/openkylin/linux.git
mac80211: dont assign seqno to or aggregate QoS Null frames
802.11 says: "Sequence numbers for QoS (+)Null frames may be set to any value." However, if we use the normal counters then peers will get confused with aggregation since there'll be holes in the sequence number sequence. To avoid that, neither assign a sequence number to QoS null frames nor put them on aggregation. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4b801bc969
commit
49a59543eb
|
@ -804,6 +804,9 @@ ieee80211_tx_h_sequence(struct ieee80211_tx_data *tx)
|
|||
if (ieee80211_hdrlen(hdr->frame_control) < 24)
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (ieee80211_is_qos_nullfunc(hdr->frame_control))
|
||||
return TX_CONTINUE;
|
||||
|
||||
/*
|
||||
* Anything but QoS data that has a sequence number field
|
||||
* (is long enough) gets a sequence number from the global
|
||||
|
@ -1236,6 +1239,7 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
|
|||
tx->sta = sta_info_get(sdata, hdr->addr1);
|
||||
|
||||
if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) &&
|
||||
!ieee80211_is_qos_nullfunc(hdr->frame_control) &&
|
||||
(local->hw.flags & IEEE80211_HW_AMPDU_AGGREGATION) &&
|
||||
!(local->hw.flags & IEEE80211_HW_TX_AMPDU_SETUP_IN_HW)) {
|
||||
struct tid_ampdu_tx *tid_tx;
|
||||
|
|
Loading…
Reference in New Issue