diff options
author | Helmut Schaa <helmut.schaa@googlemail.com> | 2010-10-02 05:29:59 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-10-05 13:35:27 -0400 |
commit | cb753b7253548b950e84843a00b4db8d0c54f578 (patch) | |
tree | fcd8cf0add4fcb78d01cb4104975e53044b711bd /drivers/net/wireless/rt2x00 | |
parent | 95192339c2de1e1a61baf289af3e3332403371c9 (diff) |
rt2x00: Allow tx duplication for legacy rates in HT40 mode
Make use of the IEEE80211_TX_RC_DUP_DATA flag to duplicate a
transmission with legacy rates to both 20Mhz channels if set.
Also update the related comment in rt2800.h to describe the
behavior of the BW_40 flag for legacy rates.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00ht.c | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h index e1583cf5894b..9bf50a1c48d0 100644 --- a/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h | |||
@@ -1982,7 +1982,8 @@ struct mac_iveiv_entry { | |||
1982 | * FRAG: 1 To inform TKIP engine this is a fragment. | 1982 | * FRAG: 1 To inform TKIP engine this is a fragment. |
1983 | * MIMO_PS: The remote peer is in dynamic MIMO-PS mode | 1983 | * MIMO_PS: The remote peer is in dynamic MIMO-PS mode |
1984 | * TX_OP: 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs | 1984 | * TX_OP: 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs |
1985 | * BW: Channel bandwidth 20MHz or 40 MHz | 1985 | * BW: Channel bandwidth 0:20MHz, 1:40 MHz (for legacy rates this will |
1986 | * duplicate the frame to both channels). | ||
1986 | * STBC: 1: STBC support MCS =0-7, 2,3 : RESERVED | 1987 | * STBC: 1: STBC support MCS =0-7, 2,3 : RESERVED |
1987 | * AMPDU: 1: this frame is eligible for AMPDU aggregation, the hw will | 1988 | * AMPDU: 1: this frame is eligible for AMPDU aggregation, the hw will |
1988 | * aggregate consecutive frames with the same RA and QoS TID. | 1989 | * aggregate consecutive frames with the same RA and QoS TID. |
diff --git a/drivers/net/wireless/rt2x00/rt2x00ht.c b/drivers/net/wireless/rt2x00/rt2x00ht.c index 48b6ed426da5..2023419ce0bd 100644 --- a/drivers/net/wireless/rt2x00/rt2x00ht.c +++ b/drivers/net/wireless/rt2x00/rt2x00ht.c | |||
@@ -85,7 +85,13 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry, | |||
85 | txdesc->rate_mode = RATE_MODE_HT_MIX; | 85 | txdesc->rate_mode = RATE_MODE_HT_MIX; |
86 | if (txrate->flags & IEEE80211_TX_RC_GREEN_FIELD) | 86 | if (txrate->flags & IEEE80211_TX_RC_GREEN_FIELD) |
87 | txdesc->rate_mode = RATE_MODE_HT_GREENFIELD; | 87 | txdesc->rate_mode = RATE_MODE_HT_GREENFIELD; |
88 | if (txrate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH) | 88 | |
89 | /* | ||
90 | * Set 40Mhz mode if necessary (for legacy rates this will | ||
91 | * duplicate the frame to both channels). | ||
92 | */ | ||
93 | if (txrate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH || | ||
94 | txrate->flags & IEEE80211_TX_RC_DUP_DATA) | ||
89 | __set_bit(ENTRY_TXD_HT_BW_40, &txdesc->flags); | 95 | __set_bit(ENTRY_TXD_HT_BW_40, &txdesc->flags); |
90 | if (txrate->flags & IEEE80211_TX_RC_SHORT_GI) | 96 | if (txrate->flags & IEEE80211_TX_RC_SHORT_GI) |
91 | __set_bit(ENTRY_TXD_HT_SHORT_GI, &txdesc->flags); | 97 | __set_bit(ENTRY_TXD_HT_SHORT_GI, &txdesc->flags); |