aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-10-10 10:26:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-10-14 14:48:09 -0400
commit164ae97eb5be612b58b2b1b395bb8287f555c661 (patch)
tree97ee44232cf46bc47ab4a5ea0ca0f7f3f3da8223 /drivers
parent3bde2b68cfdeb3b68284172fa7759287a63cd981 (diff)
iwlagn: don't assign seqno to 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, don't assign sequence numbers to QoS Null frames. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi GUy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-pcie.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
index 416e9920e4d9..60a8eccb7133 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
@@ -1077,7 +1077,7 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
1077 txq_id = 1077 txq_id =
1078 trans_pcie->ac_to_queue[ctx][skb_get_queue_mapping(skb)]; 1078 trans_pcie->ac_to_queue[ctx][skb_get_queue_mapping(skb)];
1079 1079
1080 if (ieee80211_is_data_qos(fc)) { 1080 if (ieee80211_is_data_qos(fc) && !ieee80211_is_qos_nullfunc(fc)) {
1081 u8 *qc = NULL; 1081 u8 *qc = NULL;
1082 struct iwl_tid_data *tid_data; 1082 struct iwl_tid_data *tid_data;
1083 qc = ieee80211_get_qos_ctl(hdr); 1083 qc = ieee80211_get_qos_ctl(hdr);
@@ -1206,7 +1206,7 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
1206 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd); 1206 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd);
1207 iwl_txq_update_write_ptr(trans, txq); 1207 iwl_txq_update_write_ptr(trans, txq);
1208 1208
1209 if (ieee80211_is_data_qos(fc)) { 1209 if (ieee80211_is_data_qos(fc) && !ieee80211_is_qos_nullfunc(fc)) {
1210 trans->shrd->tid_data[sta_id][tid].tfds_in_queue++; 1210 trans->shrd->tid_data[sta_id][tid].tfds_in_queue++;
1211 if (!ieee80211_has_morefrags(fc)) 1211 if (!ieee80211_has_morefrags(fc))
1212 trans->shrd->tid_data[sta_id][tid].seq_number = 1212 trans->shrd->tid_data[sta_id][tid].seq_number =