[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