X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=net%2Fmac80211%2Frc80211_pid_algo.c;h=6704fb55c6b20d419940acdc371d8689b0e6aeee;hb=a8679be2073392cf22a910bc25da0c7d36459845;hp=01d59a8e334ce832445c1c64ea3136c0bd373636;hpb=22f6dacdfcfdc792d068e9c41234808860498d04;p=~andy%2Flinux diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c index 01d59a8e334..6704fb55c6b 100644 --- a/net/mac80211/rc80211_pid_algo.c +++ b/net/mac80211/rc80211_pid_algo.c @@ -289,13 +289,15 @@ rate_control_pid_get_rate(void *priv, struct ieee80211_sta *sta, info->control.rates[0].count = txrc->hw->conf.short_frame_max_tx_count; - /* Send management frames and broadcast/multicast data using lowest - * rate. */ + /* Send management frames and NO_ACK data using lowest rate. */ fc = le16_to_cpu(hdr->frame_control); if (!sta || !spinfo || (fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA || - is_multicast_ether_addr(hdr->addr1)) { + info->flags & IEEE80211_TX_CTL_NO_ACK) { info->control.rates[0].idx = rate_lowest_index(sband, sta); + if (info->flags & IEEE80211_TX_CTL_NO_ACK) + info->control.rates[0].count = 1; + return; }