Skip to contentSkip to conversation

ath9k: add STBC Rx flags (repost untill some one asnwers)

PATCH New Oleksij Rempel 2 participants 5 messages Jun 3, 2013 Qualcomm Atheros ATH9K wireless driver

lore
Share & tools
lore
#0 lore raw

cover ath9k: add STBC Rx flags (repost untill some one asnwers)

One more repost of old patches. I need, please, at least some kind of answer:
"we don't wont patches from you" or "you are doing some thing wrong".

#1 lore raw

PATCH 1/2 ath9k: remove useless flag conversation.

some flags used only outside of ath9k - In this case we can use "enum mac80211_rx_flags" and pass it upstream without extra conversation.

---
 drivers/net/wireless/ath/ath9k/ar9003_mac.c |  5 +++--
 drivers/net/wireless/ath/ath9k/mac.c        | 11 +++++++----
 drivers/net/wireless/ath/ath9k/mac.h        |  1 +
 drivers/net/wireless/ath/ath9k/recv.c       |  5 +----
 4 files changed, 12 insertions(+), 10 deletions(-)
drivers/net/wireless/ath/ath9k/ar9003_mac.c +3 -2
index 301bf72..5163abd 100644
@@ -469,6 +469,7 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
 
 	rxs->rs_status = 0;
 	rxs->rs_flags =  0;
+	rxs->flag =  0;
 
 	rxs->rs_datalen = rxsp->status2 & AR_DataLen;
 	rxs->rs_tstamp =  rxsp->status3;
@@ -493,8 +494,8 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
 	rxs->rs_isaggr = (rxsp->status11 & AR_RxAggr) ? 1 : 0;
 	rxs->rs_moreaggr = (rxsp->status11 & AR_RxMoreAggr) ? 1 : 0;
 	rxs->rs_antenna = (MS(rxsp->status4, AR_RxAntenna) & 0x7);
-	rxs->rs_flags  = (rxsp->status4 & AR_GI) ? ATH9K_RX_GI : 0;
-	rxs->rs_flags  |= (rxsp->status4 & AR_2040) ? ATH9K_RX_2040 : 0;
+	rxs->flag  |= (rxsp->status4 & AR_GI) ? RX_FLAG_SHORT_GI : 0;
+	rxs->flag  |= (rxsp->status4 & AR_2040) ? RX_FLAG_40MHZ : 0;
 
 	rxs->evm0 = rxsp->status6;
 	rxs->evm1 = rxsp->status7;
drivers/net/wireless/ath/ath9k/mac.c +7 -4
index 498fee0..a52081d 100644
@@ -547,6 +547,7 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
 
 	rs->rs_status = 0;
 	rs->rs_flags = 0;
+	rs->flag = 0;
 
 	rs->rs_datalen = ads.ds_rxstatus1 & AR_DataLen;
 	rs->rs_tstamp = ads.AR_RcvTimestamp;
@@ -586,10 +587,12 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
 	rs->rs_moreaggr =
 		(ads.ds_rxstatus8 & AR_RxMoreAggr) ? 1 : 0;
 	rs->rs_antenna = MS(ads.ds_rxstatus3, AR_RxAntenna);
-	rs->rs_flags =
-		(ads.ds_rxstatus3 & AR_GI) ? ATH9K_RX_GI : 0;
-	rs->rs_flags |=
-		(ads.ds_rxstatus3 & AR_2040) ? ATH9K_RX_2040 : 0;
+
+	/* directly mapped flags for ieee80211_rx_status */
+	rs->flag |=
+		(ads.ds_rxstatus3 & AR_GI) ? RX_FLAG_SHORT_GI : 0;
+	rs->flag |=
+		(ads.ds_rxstatus3 & AR_2040) ? RX_FLAG_40MHZ : 0;
 
 	if (ads.ds_rxstatus8 & AR_PreDelimCRCErr)
 		rs->rs_flags |= ATH9K_RX_DELIM_CRC_PRE;
drivers/net/wireless/ath/ath9k/mac.h +1 -0
index 5865f92..3f1e775 100644
@@ -149,6 +149,7 @@ struct ath_rx_status {
 	u32 evm2;
 	u32 evm3;
 	u32 evm4;
+	u32 flag; /* see enum mac80211_rx_flags */
 };
 
 struct ath_htc_rx_status {
drivers/net/wireless/ath/ath9k/recv.c +1 -4
index 8be2b5d..b4b758d 100644
@@ -868,10 +868,7 @@ static int ath9k_process_rate(struct ath_common *common,
 	if (rx_stats->rs_rate & 0x80) {
 		/* HT rate */
 		rxs->flag |= RX_FLAG_HT;
-		if (rx_stats->rs_flags & ATH9K_RX_2040)
-			rxs->flag |= RX_FLAG_40MHZ;
-		if (rx_stats->rs_flags & ATH9K_RX_GI)
-			rxs->flag |= RX_FLAG_SHORT_GI;
+		rxs->flag |= rx_stats->flag;
 		rxs->rate_idx = rx_stats->rs_rate & 0x7f;
 		return 0;
 	}
Signature · 1 line
1.8.1.2
#2 lore raw

PATCH v4 2/2 ath9k: check for Rx-STBC flag and pass it to ieee80211

In reply to Oleksij Rempel

This patch make use of STBC flag in DMA RX descriptor. Only devices after ar9280 can provide this information.

If card support it we will set HAVE_STBC flag, to show clint programm thet STBC is supported but not received.

---
 drivers/net/wireless/ath/ath9k/init.c | 10 ++++++++--
 drivers/net/wireless/ath/ath9k/mac.c  |  5 +++++
 drivers/net/wireless/ath/ath9k/mac.h  |  3 ++-
 3 files changed, 15 insertions(+), 3 deletions(-)
drivers/net/wireless/ath/ath9k/init.c +8 -2
index aba4151..b9c97d4 100644
@@ -21,6 +21,7 @@
 #include <linux/ath9k_platform.h>
 #include <linux/module.h>
 #include <linux/relay.h>
+#include <net/ieee80211_radiotap.h>
 
 #include "ath9k.h"
 
@@ -769,8 +770,13 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
 		IEEE80211_HW_REPORTS_TX_ACK_STATUS |
 		IEEE80211_HW_SUPPORTS_RC_TABLE;
 
-	if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT)
-		 hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
+	if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) {
+		hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
+
+		if (AR_SREV_9280_20_OR_LATER(ah))
+			hw->radiotap_mcs_details |=
+				IEEE80211_RADIOTAP_MCS_HAVE_STBC;
+	}
 
 	if (AR_SREV_9160_10_OR_LATER(sc->sc_ah) || ath9k_modparam_nohwcrypt)
 		hw->flags |= IEEE80211_HW_MFP_CAPABLE;
drivers/net/wireless/ath/ath9k/mac.c +5 -0
index a52081d..d055e38 100644
@@ -593,6 +593,11 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
 		(ads.ds_rxstatus3 & AR_GI) ? RX_FLAG_SHORT_GI : 0;
 	rs->flag |=
 		(ads.ds_rxstatus3 & AR_2040) ? RX_FLAG_40MHZ : 0;
+	if (AR_SREV_9280_20_OR_LATER(ah))
+		rs->flag |=
+			(ads.ds_rxstatus3 & AR_STBC) ?
+				/* we can only Nss=1 STBC */
+				(1 << RX_FLAG_STBC_SHIFT) : 0;
 
 	if (ads.ds_rxstatus8 & AR_PreDelimCRCErr)
 		rs->rs_flags |= ATH9K_RX_DELIM_CRC_PRE;
drivers/net/wireless/ath/ath9k/mac.h +2 -1
index 3f1e775..b02dfce 100644
@@ -534,7 +534,8 @@ struct ar5416_desc {
 #define AR_2040             0x00000002
 #define AR_Parallel40       0x00000004
 #define AR_Parallel40_S     2
-#define AR_RxStatusRsvd30   0x000000f8
+#define AR_STBC             0x00000008 /* on ar9280 and later */
+#define AR_RxStatusRsvd30   0x000000f0
 #define AR_RxAntenna	    0xffffff00
 #define AR_RxAntenna_S	    8
 
Signature · 1 line
1.8.1.2
#3 lore raw

cover ath9k: add STBC Rx flags (repost untill some one asnwers)

In reply to Oleksij Rempel
Quoted 2 lines · Oleksij Rempel

One more repost of old patches. I need, please, at least some kind of answer:
"we don't wont patches from you" or "you are doing some thing wrong".

Both the patches have already been merged in wireless-testing.

commit b0a1ae976d6cd40ff90ba87883e17eb2610dae3d

Author: Oleksij Rempel <[email protected]>
Date:   Fri May 24 20:30:59 2013 +0200

ath9k: check for Rx-STBC flag and pass it to ieee80211

This patch make use of STBC flag in DMA RX descriptor. Only devices after ar9280 can provide this information.

If card support it we will set HAVE_STBC flag, to show clint programm thet STBC is supported but not received.

commit ab276103357637fb26cc851369b5abbdc42afbf4

Author: Oleksij Rempel <[email protected]>
Date:   Fri May 24 12:18:30 2013 +0200

ath9k: remove useless flag conversation.

some flags used only outside of ath9k - In this case we can use "enum mac80211_rx_flags" and pass it upstream without extra conversation.

Sujith

#4 lore raw

cover ath9k: add STBC Rx flags (repost untill some one asnwers)

Am 03.06.2013 11:59, schrieb Sujith Manoharan:

Quoted 5 lines
Quoted 2 lines · Oleksij Rempel

One more repost of old patches. I need, please, at least some kind of answer:
"we don't wont patches from you" or "you are doing some thing wrong".

Both the patches have already been merged in wireless-testing.

ah... i didn't noticed that.
thank you ;)

Quoted 30 lines

commit b0a1ae976d6cd40ff90ba87883e17eb2610dae3d

Author: Oleksij Rempel <[email protected]>
Date:   Fri May 24 20:30:59 2013 +0200

ath9k: check for Rx-STBC flag and pass it to ieee80211

This patch make use of STBC flag in DMA RX descriptor. Only devices after ar9280 can provide this information.

If card support it we will set HAVE_STBC flag, to show clint programm thet STBC is supported but not received.

commit ab276103357637fb26cc851369b5abbdc42afbf4

Author: Oleksij Rempel <[email protected]>
Date:   Fri May 24 12:18:30 2013 +0200

ath9k: remove useless flag conversation.

some flags used only outside of ath9k - In this case we can use "enum mac80211_rx_flags" and pass it upstream without extra conversation.

Sujith

Signature · 2 lines
Regards,
Oleksij