Search Linux Wireless

[PATCH RFC] mac80211: don't ask drivers to retry transmitting NO_ACK frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Set the total count of TX tries to 1 if IEEE80211_TX_CTL_NO_ACK is
set. This fixes a bug where mac80211 allowed the RC algo to request
drivers to forcibly retransmit NO_ACK (e.g. multicast) frames until
the excessive-retries limit is reached.

Signed-off-by: Gábor Stefanik <netrolller.3d@xxxxxxxxx>
Cc: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

---
Patch also available as attachment in case Gmail linewraps it.

 tx.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index b47435d..751934b 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -539,7 +539,8 @@ ieee80211_tx_h_rate_ctrl(struct ieee80211_tx_data *tx)
 	if (tx->sta)
 		tx->sta->last_tx_rate = txrc.reported_rate;

-	if (unlikely(!info->control.rates[0].count))
+	if (unlikely(!info->control.rates[0].count) ||
+	    info->flags & IEEE80211_TX_CTL_NO_ACK)
 		info->control.rates[0].count = 1;

 	if (is_multicast_ether_addr(hdr->addr1)) {
 tx.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index b47435d..751934b 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -539,7 +539,8 @@ ieee80211_tx_h_rate_ctrl(struct ieee80211_tx_data *tx)
 	if (tx->sta)
 		tx->sta->last_tx_rate = txrc.reported_rate;
 
-	if (unlikely(!info->control.rates[0].count))
+	if (unlikely(!info->control.rates[0].count) ||
+	    info->flags & IEEE80211_TX_CTL_NO_ACK)
 		info->control.rates[0].count = 1;
 
 	if (is_multicast_ether_addr(hdr->addr1)) {

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux