Skip to content

Commit

Permalink
mac80211: fix duration calculation for QoS NOACK frames
Browse files Browse the repository at this point in the history
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Simon Wunderlich authored and John W. Linville committed Nov 28, 2011
1 parent b53be79 commit 6674f21
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions net/mac80211/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 6674f21

Please sign in to comment.