aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
diff options
context:
space:
mode:
authorGábor Stefanik <netrolller.3d@gmail.com>2009-04-23 13:36:08 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-05-06 15:14:51 -0400
commit514d65c18ee3595f7f9c9132895ed449f911ecd4 (patch)
tree096cb13a50c70152cda1d5f4d9d8f3aca8efe2bf /drivers/net/wireless/iwlwifi/iwl-3945-rs.c
parent922368414e5700d1ed51510e54137359297d78e7 (diff)
iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs
Make iwl-{3945|agn}-rs check for IEEE80211_TX_CTL_NO_ACK instead of is_multicast_ether_addr when determining whether to use the lowest rate, and set the retry count to 0 (total try count = 1) if IEEE80211_TX_CTL_NO_ACK is set. Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-3945-rs.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945-rs.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
index f63a9c5ba262..814afaf6d10b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
@@ -683,11 +683,10 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
683 if (sta) 683 if (sta)
684 rate_mask = sta->supp_rates[sband->band]; 684 rate_mask = sta->supp_rates[sband->band];
685 685
686 /* Send management frames and broadcast/multicast data using lowest 686 /* Send management frames and NO_ACK data using lowest rate. */
687 * rate. */
688 fc = le16_to_cpu(hdr->frame_control); 687 fc = le16_to_cpu(hdr->frame_control);
689 if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA || 688 if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
690 is_multicast_ether_addr(hdr->addr1) || 689 info->flags & IEEE80211_TX_CTL_NO_ACK ||
691 !sta || !priv_sta) { 690 !sta || !priv_sta) {
692 IWL_DEBUG_RATE(priv, "leave: No STA priv data to update!\n"); 691 IWL_DEBUG_RATE(priv, "leave: No STA priv data to update!\n");
693 if (!rate_mask) 692 if (!rate_mask)
@@ -696,6 +695,8 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
696 else 695 else
697 info->control.rates[0].idx = 696 info->control.rates[0].idx =
698 rate_lowest_index(sband, sta); 697 rate_lowest_index(sband, sta);
698 if (info->flags & IEEE80211_TX_CTL_NO_ACK)
699 info->control.rates[0].count = 1;
699 return; 700 return;
700 } 701 }
701 702