From fe0db8506f99a7125a4ee1d0e81e90e23ed24018 Mon Sep 17 00:00:00 2001 From: Simon Wunderlich Date: Mon, 21 Nov 2011 21:34:30 +0100 Subject: [PATCH] --- yaml --- r: 278381 b: refs/heads/master c: 6674f210e9dbf30e592ccd85b0cf90bd8d1d2d28 h: refs/heads/master i: 278379: e6c488a1f23732c2d2d51ca5145e6da7c9fab419 v: v3 --- [refs] | 2 +- trunk/net/mac80211/tx.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 5982f8326247..aaa4087a7640 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b53be7920bd9bb1bb99fecc2ff537bc79d24082f +refs/heads/master: 6674f210e9dbf30e592ccd85b0cf90bd8d1d2d28 diff --git a/trunk/net/mac80211/tx.c b/trunk/net/mac80211/tx.c index 205fdcb70fff..a5ff02fbda8c 100644 --- a/trunk/net/mac80211/tx.c +++ b/trunk/net/mac80211/tx.c @@ -151,11 +151,15 @@ static __le16 ieee80211_duration(struct ieee80211_tx_data *tx, rate = mrate; } - /* Time needed to transmit ACK - * (10 bytes + 4-byte FCS = 112 bits) plus SIFS; rounded up - * to closest integer */ - - dur = ieee80211_frame_duration(local, 10, rate, erp, + /* Don't calculate ACKs for QoS Frames with NoAck Policy set */ + if (ieee80211_is_data_qos(hdr->frame_control) && + *(ieee80211_get_qos_ctl(hdr)) | IEEE80211_QOS_CTL_ACK_POLICY_NOACK) + dur = 0; + else + /* Time needed to transmit ACK + * (10 bytes + 4-byte FCS = 112 bits) plus SIFS; rounded up + * to closest integer */ + dur = ieee80211_frame_duration(local, 10, rate, erp, tx->sdata->vif.bss_conf.use_short_preamble); if (next_frag_len) {