[rt2x00-users] [RFC] rt2x00: rt2800: enable STBC
Helmut Schaa
helmut.schaa at googlemail.com
Fri May 28 11:35:52 UTC 2010
Enable STBC in the tx descriptor when mac80211 tells us to do so.
Replace the stbc field with a flag as TX STBC only uses on and off.
Signed-off-by: Helmut Schaa <helmut.schaa at googlemail.com>
---
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
drivers/net/wireless/rt2x00/rt2x00ht.c | 3 ++-
drivers/net/wireless/rt2x00/rt2x00queue.h | 4 ++--
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index db4250d..87e7010 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -306,7 +306,8 @@ void rt2800_write_txwi(struct sk_buff *skb, struct txentry_desc *txdesc)
test_bit(ENTRY_TXD_HT_BW_40, &txdesc->flags));
rt2x00_set_field32(&word, TXWI_W0_SHORT_GI,
test_bit(ENTRY_TXD_HT_SHORT_GI, &txdesc->flags));
- rt2x00_set_field32(&word, TXWI_W0_STBC, txdesc->stbc);
+ rt2x00_set_field32(&word, TXWI_W0_STBC,
+ test_bit(ENTRY_TXD_HT_STBC, &txdesc->flags));
rt2x00_set_field32(&word, TXWI_W0_PHYMODE, txdesc->rate_mode);
rt2x00_desc_write(txwi, 0, word);
diff --git a/drivers/net/wireless/rt2x00/rt2x00ht.c b/drivers/net/wireless/rt2x00/rt2x00ht.c
index 5a40760..f61c030 100644
--- a/drivers/net/wireless/rt2x00/rt2x00ht.c
+++ b/drivers/net/wireless/rt2x00/rt2x00ht.c
@@ -44,7 +44,6 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
txdesc->mpdu_density = 0;
txdesc->ba_size = 7; /* FIXME: What value is needed? */
- txdesc->stbc = 0; /* FIXME: What value is needed? */
txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);
if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
@@ -55,6 +54,8 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
*/
if (tx_info->flags & IEEE80211_TX_CTL_AMPDU)
__set_bit(ENTRY_TXD_HT_AMPDU, &txdesc->flags);
+ if (tx_info->flags & IEEE80211_TX_CTL_STBC)
+ __set_bit(ENTRY_TXD_HT_STBC, &txdesc->flags);
/*
* Determine HT Mix/Greenfield rate mode
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h
index f791708..812eb5e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
@@ -261,6 +261,7 @@ struct txdone_entry_desc {
* @ENTRY_TXD_HT_AMPDU: This frame is part of an AMPDU.
* @ENTRY_TXD_HT_BW_40: Use 40MHz Bandwidth.
* @ENTRY_TXD_HT_SHORT_GI: Use short GI.
+ * @ENTRY_TXD_HT_STBC: Use STBC.
*/
enum txentry_desc_flags {
ENTRY_TXD_RTS_FRAME,
@@ -279,6 +280,7 @@ enum txentry_desc_flags {
ENTRY_TXD_HT_AMPDU,
ENTRY_TXD_HT_BW_40,
ENTRY_TXD_HT_SHORT_GI,
+ ENTRY_TXD_HT_STBC,
};
/**
@@ -295,7 +297,6 @@ enum txentry_desc_flags {
* @signal: PLCP signal.
* @service: PLCP service.
* @msc: MCS.
- * @stbc: STBC.
* @ba_size: BA size.
* @rate_mode: Rate mode (See @enum rate_modulation).
* @mpdu_density: MDPU density.
@@ -324,7 +325,6 @@ struct txentry_desc {
u16 service;
u16 mcs;
- u16 stbc;
u16 ba_size;
u16 rate_mode;
u16 mpdu_density;
--
1.6.4.2
More information about the users
mailing list