1 From ecce227dab27aaf2d1c81a605d3e6e6f6d55908a Mon Sep 17 00:00:00 2001
2 From: Ivo van Doorn <IvDoorn@gmail.com>
3 Date: Sun, 18 Jan 2009 20:20:08 +0100
4 Subject: [PATCH] rt2x00: Fix preamble detection (rt2x00ht)
6 Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
8 drivers/net/wireless/rt2x00/rt2x00ht.c | 14 +++++++-------
9 drivers/net/wireless/rt2x00/rt2x00lib.h | 4 ++--
10 drivers/net/wireless/rt2x00/rt2x00queue.c | 2 +-
11 3 files changed, 10 insertions(+), 10 deletions(-)
13 --- a/drivers/net/wireless/rt2x00/rt2x00ht.c
14 +++ b/drivers/net/wireless/rt2x00/rt2x00ht.c
17 void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
18 struct txentry_desc *txdesc,
19 - struct ieee80211_rate *rate)
20 + const struct rt2x00_rate *hwrate)
22 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb);
23 - const struct rt2x00_rate *hwrate = rt2x00_get_rate(rate->hw_value);
24 + struct ieee80211_tx_rate *txrate = &tx_info->control.rates[0];
26 if (tx_info->control.sta)
27 txdesc->mpdu_density =
28 @@ -46,7 +46,7 @@ void rt2x00ht_create_tx_descriptor(struc
29 txdesc->stbc = 0; /* FIXME: What value is needed? */
31 txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);
32 - if (rate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
33 + if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
37 @@ -58,12 +58,12 @@ void rt2x00ht_create_tx_descriptor(struc
39 * Determine HT Mix/Greenfield rate mode
41 - if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_MCS)
42 + if (txrate->flags & IEEE80211_TX_RC_MCS)
43 txdesc->rate_mode = RATE_MODE_HT_MIX;
44 - if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_GREEN_FIELD)
45 + if (txrate->flags & IEEE80211_TX_RC_GREEN_FIELD)
46 txdesc->rate_mode = RATE_MODE_HT_GREENFIELD;
47 - if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
48 + if (txrate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
49 __set_bit(ENTRY_TXD_HT_BW_40, &txdesc->flags);
50 - if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_SHORT_GI)
51 + if (txrate->flags & IEEE80211_TX_RC_SHORT_GI)
52 __set_bit(ENTRY_TXD_HT_SHORT_GI, &txdesc->flags);
54 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h
55 +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
56 @@ -344,11 +344,11 @@ static inline void rt2x00crypto_rx_inser
57 #ifdef CONFIG_RT2X00_LIB_HT
58 void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
59 struct txentry_desc *txdesc,
60 - struct ieee80211_rate *rate);
61 + const struct rt2x00_rate *hwrate);
63 static inline void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
64 struct txentry_desc *txdesc,
65 - struct ieee80211_rate *rate)
66 + const struct rt2x00_rate *hwrate)
69 #endif /* CONFIG_RT2X00_LIB_HT */
70 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
71 +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
72 @@ -326,7 +326,7 @@ static void rt2x00queue_create_tx_descri
73 * Apply TX descriptor handling by components
75 rt2x00crypto_create_tx_descriptor(entry, txdesc);
76 - rt2x00ht_create_tx_descriptor(entry, txdesc, rate);
77 + rt2x00ht_create_tx_descriptor(entry, txdesc, hwrate);
78 rt2x00queue_create_tx_descriptor_seq(entry, txdesc);
79 rt2x00queue_create_tx_descriptor_plcp(entry, txdesc, hwrate);