Re: [ath9k-devel] [PATCH v2 1/3] mac80211: add STBC flag for radiotap

2013-05-23 Thread Johannes Berg
On Thu, 2013-05-23 at 09:17 +0200, Oleksij Rempel wrote:
 revision:
 - v2. set HAVE_STBC only if it is present.
   do not set STBC flag on TX packets.

Please don't include changes *inside* the changelog. Also, an actual
commit message would be nice.

johannes

___
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel


[ath9k-devel] [PATCH v3 1/3] mac80211: add STBC flag for radiotap

2013-05-23 Thread Oleksij Rempel
Some chips can tell us if received frame was
encoded with STBC or not. To make this information available
in user space we can use updated radiotap specification:
http://www.radiotap.org/defined-fields/MCS

This patch add HAVE_STBC flag and provide number
of STBC encoded spatial streams (Nss).

Signed-off-by: Oleksij Rempel li...@rempel-privat.de
---
 include/net/ieee80211_radiotap.h |  7 +++
 include/net/mac80211.h   |  4 
 net/mac80211/rx.c| 13 -
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/include/net/ieee80211_radiotap.h b/include/net/ieee80211_radiotap.h
index c399963..c6d07cb 100644
--- a/include/net/ieee80211_radiotap.h
+++ b/include/net/ieee80211_radiotap.h
@@ -269,6 +269,7 @@ enum ieee80211_radiotap_type {
 #define IEEE80211_RADIOTAP_MCS_HAVE_GI 0x04
 #define IEEE80211_RADIOTAP_MCS_HAVE_FMT0x08
 #define IEEE80211_RADIOTAP_MCS_HAVE_FEC0x10
+#define IEEE80211_RADIOTAP_MCS_HAVE_STBC   0x20
 
 #define IEEE80211_RADIOTAP_MCS_BW_MASK 0x03
 #defineIEEE80211_RADIOTAP_MCS_BW_200
@@ -278,6 +279,12 @@ enum ieee80211_radiotap_type {
 #define IEEE80211_RADIOTAP_MCS_SGI 0x04
 #define IEEE80211_RADIOTAP_MCS_FMT_GF  0x08
 #define IEEE80211_RADIOTAP_MCS_FEC_LDPC0x10
+#define IEEE80211_RADIOTAP_MCS_STBC_MASK   0x60
+#defineIEEE80211_RADIOTAP_MCS_STBC_1   1
+#defineIEEE80211_RADIOTAP_MCS_STBC_2   2
+#defineIEEE80211_RADIOTAP_MCS_STBC_3   3
+
+#define IEEE80211_RADIOTAP_MCS_STBC_SHIFT  5
 
 /* For IEEE80211_RADIOTAP_AMPDU_STATUS */
 #define IEEE80211_RADIOTAP_AMPDU_REPORT_ZEROLEN0x0001
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 885898a..16705a9 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -805,6 +805,7 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info 
*info)
  * on this subframe
  * @RX_FLAG_AMPDU_DELIM_CRC_KNOWN: The delimiter CRC field is known (the CRC
  * is stored in the @ampdu_delimiter_crc field)
+ * @RX_FLAG_STBC_MASK: STBC 2 bit bitmask. 1 - Nss=1, 2 - Nss=2, 3 - Nss=3
  */
 enum mac80211_rx_flags {
RX_FLAG_MMIC_ERROR  = BIT(0),
@@ -832,8 +833,11 @@ enum mac80211_rx_flags {
RX_FLAG_80MHZ   = BIT(23),
RX_FLAG_80P80MHZ= BIT(24),
RX_FLAG_160MHZ  = BIT(25),
+   RX_FLAG_STBC_MASK   = BIT(26) | BIT(27),
 };
 
+#define RX_FLAG_STBC_SHIFT 26
+
 /**
  * struct ieee80211_rx_status - receive status
  *
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 8e29526..db7c68a 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -258,8 +258,16 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local 
*local,
pos += 2;
 
if (status-flag  RX_FLAG_HT) {
+   unsigned int stbc = status-flag  RX_FLAG_STBC_MASK;
rthdr-it_present |= cpu_to_le32(1  IEEE80211_RADIOTAP_MCS);
-   *pos++ = local-hw.radiotap_mcs_details;
+
+   /* MCS known field */
+   *pos = local-hw.radiotap_mcs_details;
+   if (stbc)
+   *pos |= IEEE80211_RADIOTAP_MCS_HAVE_STBC;
+   *pos++;
+
+   /* MCS flags field */
*pos = 0;
if (status-flag  RX_FLAG_SHORT_GI)
*pos |= IEEE80211_RADIOTAP_MCS_SGI;
@@ -267,6 +275,9 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local 
*local,
*pos |= IEEE80211_RADIOTAP_MCS_BW_40;
if (status-flag  RX_FLAG_HT_GF)
*pos |= IEEE80211_RADIOTAP_MCS_FMT_GF;
+   if (stbc)
+   *pos |= (stbc  RX_FLAG_STBC_SHIFT)
+IEEE80211_RADIOTAP_MCS_STBC_SHIFT;
pos++;
*pos++ = status-rate_idx;
}
-- 
1.8.1.2

___
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel


Re: [ath9k-devel] [PATCH v3 1/3] mac80211: add STBC flag for radiotap

2013-05-23 Thread Johannes Berg
On Thu, 2013-05-23 at 16:11 +0200, Oleksij Rempel wrote:

 - *pos++ = local-hw.radiotap_mcs_details;
 +
 + /* MCS known field */
 + *pos = local-hw.radiotap_mcs_details;
 + if (stbc)
 + *pos |= IEEE80211_RADIOTAP_MCS_HAVE_STBC;

I think you shouldn't make this change, and the driver should include
the HAVE_STBC flag in the hw.radiotap_mcs_details. I actually thought of
this approach as well, but now just realized that this means that if the
driver _knows_ that a certain frame was received w/o STBC, this
knowledge cannot be transferred to the user, which would be a loss of
information.

 +   if (stbc)
 +   *pos |= (stbc  RX_FLAG_STBC_SHIFT)
 +   
 IEEE80211_RADIOTAP_MCS_STBC_SHIFT;

No need for the if() here, OR'ing in 0 doesn't do anything.

johannes

___
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel


[ath9k-devel] modifying priority of UDP packets

2013-05-23 Thread abhinav narain
Hi all,
I wanted to modify the priority of one of specific UDP frames generated by
my specific application,
to be send on VI queue.
Can someone please tell, which files should I look into in compat-wireless
folder ?
-
Abhinav
___
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel