aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-5000.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-10-21 06:40:02 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-10-31 19:00:23 -0400
commite6a9854b05c1a6af1308fe2b8c68f35abf28a3ee (patch)
tree241f611f8194586ccabf61bacb060508773b9d05 /drivers/net/wireless/iwlwifi/iwl-5000.c
parentcb121bad67a32cde37adc2729b7e18aa4fd3063e (diff)
mac80211/drivers: rewrite the rate control API
So after the previous changes we were still unhappy with how convoluted the API is and decided to make things simpler for everybody. This completely changes the rate control API, now taking into account 802.11n with MCS rates and more control, most drivers don't support that though. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 56a3f0c84a1e..d5282fa65084 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -390,8 +390,8 @@ static void iwl5000_chain_noise_reset(struct iwl_priv *priv)
390static void iwl5000_rts_tx_cmd_flag(struct ieee80211_tx_info *info, 390static void iwl5000_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
391 __le32 *tx_flags) 391 __le32 *tx_flags)
392{ 392{
393 if ((info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) || 393 if ((info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
394 (info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT)) 394 (info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT))
395 *tx_flags |= TX_CMD_FLG_RTS_CTS_MSK; 395 *tx_flags |= TX_CMD_FLG_RTS_CTS_MSK;
396 else 396 else
397 *tx_flags &= ~TX_CMD_FLG_RTS_CTS_MSK; 397 *tx_flags &= ~TX_CMD_FLG_RTS_CTS_MSK;
@@ -1154,7 +1154,7 @@ static int iwl5000_tx_status_reply_tx(struct iwl_priv *priv,
1154 agg->frame_count, agg->start_idx, idx); 1154 agg->frame_count, agg->start_idx, idx);
1155 1155
1156 info = IEEE80211_SKB_CB(priv->txq[txq_id].txb[idx].skb[0]); 1156 info = IEEE80211_SKB_CB(priv->txq[txq_id].txb[idx].skb[0]);
1157 info->status.retry_count = tx_resp->failure_frame; 1157 info->status.rates[0].count = tx_resp->failure_frame + 1;
1158 info->flags &= ~IEEE80211_TX_CTL_AMPDU; 1158 info->flags &= ~IEEE80211_TX_CTL_AMPDU;
1159 info->flags |= iwl_is_tx_success(status)? 1159 info->flags |= iwl_is_tx_success(status)?
1160 IEEE80211_TX_STAT_ACK : 0; 1160 IEEE80211_TX_STAT_ACK : 0;
@@ -1307,7 +1307,7 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1307 iwl_txq_check_empty(priv, sta_id, tid, txq_id); 1307 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
1308 } 1308 }
1309 } else { 1309 } else {
1310 info->status.retry_count = tx_resp->failure_frame; 1310 info->status.rates[0].count = tx_resp->failure_frame + 1;
1311 info->flags = 1311 info->flags =
1312 iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0; 1312 iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0;
1313 iwl_hwrate_to_tx_control(priv, 1313 iwl_hwrate_to_tx_control(priv,