diff options
author | Gábor Stefanik <netrolller.3d@gmail.com> | 2009-04-23 13:36:08 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-05-06 15:14:51 -0400 |
commit | 514d65c18ee3595f7f9c9132895ed449f911ecd4 (patch) | |
tree | 096cb13a50c70152cda1d5f4d9d8f3aca8efe2bf /drivers/net/wireless/iwlwifi/iwl-3945-rs.c | |
parent | 922368414e5700d1ed51510e54137359297d78e7 (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.c | 7 |
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 | ||