Mathieu Slabbinck | 30 Jun 15:59 2015
Picon

Re: Fwd: TX99 rate control

On Tue, Jun 30, 2015 at 3:51 PM, Jonathan Bagg <jbagg <at> lenbrook.com> wrote:
> Mathieu,
>
> Did you ever get a higher rate working?  I am trying to do Specific
> Absorption Rate (SAR) testing with an AR9485.  I have enabled tx99 in the
> kernel and I see the ath9k tx99 entries in the debugfs.  Googling I found
> the below commands.  Our CM has tried these without success.  I am in the
> process of renting a spectrum analyser to debug.  Maybe I only the slowest
> rate works like your issue?
>
>
> iw dev mon0 set channel 6 HT40+
> iw dev mon0 set bitrates legacy-2.4 54
> echo 10 > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99_power
> echo 1  > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99
>
> iw version = 3.15
> kernel = 3.19 on arm with tx99 enabled
>
> Our CM is using a testing house called SGS (http://www.sgsap.com/)  Anyone
> put a ath9k through SAR at SGS?
>
>
>
> On 15-06-08 11:02 AM, Mathieu Slabbinck wrote:
>>
>> Hi all,
>>
>> I'm trying to figure out how to get rate control working in TX99.
>> Currently it's forced in code to rate = &tx_info->control.rates[0];
(Continue reading)

ramesh | 27 Jun 14:59 2015

ath9k backports-4.0.1-1

Hi,

Recently I have downloaded ath9k backports-4.0.1-1 driver source code. I 
don't know
from where I should start analyse code. So can anyone please tell me 
from where I
can start analysing code.

Thanks,
Ramesh
Amna Waqar | 26 Jun 13:50 2015
Picon

Fw: AR9382 Ath9k driver 802.11r and 802.11k support

 
Regards

Amna

----- Forwarded Message -----
From: Amna Waqar <amna.waqar1 <at> yahoo.com>
To: "ath9k-devel <at> lists.ath9k.org" <ath9k-devel <at> lists.ath9k.org>
Sent: Friday, June 26, 2015 3:01 PM
Subject: AR9382 Ath9k driver 802.11r and 802.11k support

Hello everyone,
Does Ath9k driver for AR9382 wlan chip support 802.11r/k modes? Does radio of AR9382 support 802.11r mode?
 
Regards

Amna


_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
Janusz Dziedzic | 23 Jun 10:54 2015

[PATCH 1/3 v2] ath9k: handle RoC cancel correctly

In case we will get ROC cancel from mac80211 we
should not call ieee80211_remain_on_channel_expired().

In other case I hit such warning on MIPS and
p2p negotiation failed (tested with use_chanctx=1).

ath: phy0: Starting RoC period
ath: phy0: Channel definition created: 2412 MHz
ath: phy0: Assigned next_chan to 2412 MHz
ath: phy0: Offchannel duration for chan 2412 MHz : 506632
ath: phy0: ath_chanctx_set_next: current: 2412 MHz, next: 2412 MHz
ath: phy0: Stopping current chanctx: 2412
ath: phy0: Flush timeout: 200
ath: phy0: ath_chanctx_set_next: Set channel 2412 MHz
ath: phy0: Set channel: 2412 MHz width: 0
ath: phy0: Reset to 2412 MHz, HT40: 0 fastcc: 0
ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_TSF_TIMER, state: ATH_CHANCTX_STATE_IDLE
ath: phy0: ath_offchannel_channel_change: offchannel state: ATH_OFFCHANNEL_ROC_START
ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_SWITCH, state: ATH_CHANCTX_STATE_IDLE
ath: phy0: Cancel RoC
ath: phy0: RoC aborted
ath: phy0: RoC request on vif: 00:03:7f:4e:a0:cd, type: 1 duration: 500
ath: phy0: Starting RoC period
ath: phy0: Channel definition created: 2412 MHz
ath: phy0: Assigned next_chan to 2412 MHz
ath: phy0: Offchannel duration for chan 2412 MHz : 506705
ath: phy0: ath_chanctx_set_next: current: 2412 MHz, next: 2412 MHz
ath: phy0: ath_offchannel_channel_change: offchannel state: ATH_OFFCHANNEL_ROC_START
ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_SWITCH, state: ATH_CHANCTX_STATE_IDLE
------------[ cut here ]------------
WARNING: CPU: 0 PID: 3312 at drivers/net/wireless/ath/ath9k/main.c:2319
Modules linked in: ath9k ath9k_common ath9k_hw ath mac80211 cfg80211

Signed-off-by: Janusz Dziedzic <janusz.dziedzic <at> tieto.com>
---
 drivers/net/wireless/ath/ath9k/ath9k.h   |  8 +++++++-
 drivers/net/wireless/ath/ath9k/channel.c | 23 ++++++++++++++++-------
 drivers/net/wireless/ath/ath9k/main.c    |  4 ++--
 3 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 030fd0f..7d41c8f 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
 <at>  <at>  -409,6 +409,12  <at>  <at>  enum ath_offchannel_state {
 	ATH_OFFCHANNEL_ROC_DONE,
 };

+enum ath_roc_complete_reason {
+	ATH_ROC_COMPLETE_EXPIRE,
+	ATH_ROC_COMPLETE_ABORT,
+	ATH_ROC_COMPLETE_CANCEL,
+};
+
 struct ath_offchannel {
 	struct ath_chanctx chan;
 	struct timer_list timer;
 <at>  <at>  -470,7 +476,7  <at>  <at>  void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
 void ath_chanctx_set_next(struct ath_softc *sc, bool force);
 void ath_offchannel_next(struct ath_softc *sc);
 void ath_scan_complete(struct ath_softc *sc, bool abort);
-void ath_roc_complete(struct ath_softc *sc, bool abort);
+void ath_roc_complete(struct ath_softc *sc, enum ath_roc_complete_reason reason);
 struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc);

 #else
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c
index 2066650..35cfcd0 100644
--- a/drivers/net/wireless/ath/ath9k/channel.c
+++ b/drivers/net/wireless/ath/ath9k/channel.c
 <at>  <at>  -915,18 +915,27  <at>  <at>  void ath_offchannel_next(struct ath_softc *sc)
 	}
 }

-void ath_roc_complete(struct ath_softc *sc, bool abort)
+void ath_roc_complete(struct ath_softc *sc, enum ath_roc_complete_reason reason)
 {
 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);

-	if (abort)
+	sc->offchannel.roc_vif = NULL;
+	sc->offchannel.roc_chan = NULL;
+
+	switch(reason) {
+	case ATH_ROC_COMPLETE_ABORT:
 		ath_dbg(common, CHAN_CTX, "RoC aborted\n");
-	else
+		ieee80211_remain_on_channel_expired(sc->hw);
+		break;
+	case ATH_ROC_COMPLETE_EXPIRE:
 		ath_dbg(common, CHAN_CTX, "RoC expired\n");
+		ieee80211_remain_on_channel_expired(sc->hw);
+		break;
+	case ATH_ROC_COMPLETE_CANCEL:
+		ath_dbg(common, CHAN_CTX, "RoC canceled\n");
+		break;
+	}

-	sc->offchannel.roc_vif = NULL;
-	sc->offchannel.roc_chan = NULL;
-	ieee80211_remain_on_channel_expired(sc->hw);
 	ath_offchannel_next(sc);
 	ath9k_ps_restore(sc);
 }
 <at>  <at>  -1058,7 +1067,7  <at>  <at>  static void ath_offchannel_timer(unsigned long data)
 	case ATH_OFFCHANNEL_ROC_START:
 	case ATH_OFFCHANNEL_ROC_WAIT:
 		sc->offchannel.state = ATH_OFFCHANNEL_ROC_DONE;
-		ath_roc_complete(sc, false);
+		ath_roc_complete(sc, ATH_ROC_COMPLETE_EXPIRE);
 		break;
 	default:
 		break;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 945f002..2277e09 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
 <at>  <at>  -2244,7 +2244,7  <at>  <at>  static void ath9k_cancel_pending_offchannel(struct ath_softc *sc)

 		del_timer_sync(&sc->offchannel.timer);
 		if (sc->offchannel.state >= ATH_OFFCHANNEL_ROC_START)
-			ath_roc_complete(sc, true);
+			ath_roc_complete(sc, ATH_ROC_COMPLETE_ABORT);
 	}

 	if (test_bit(ATH_OP_SCANNING, &common->op_flags)) {
 <at>  <at>  -2353,7 +2353,7  <at>  <at>  static int ath9k_cancel_remain_on_channel(struct ieee80211_hw *hw)

 	if (sc->offchannel.roc_vif) {
 		if (sc->offchannel.state >= ATH_OFFCHANNEL_ROC_START)
-			ath_roc_complete(sc, true);
+			ath_roc_complete(sc, ATH_ROC_COMPLETE_CANCEL);
 	}

 	mutex_unlock(&sc->mutex);
--

-- 
1.9.1
Brandon Enochs | 22 Jun 18:39 2015
Picon

Raditotap overall RSSI vs per chain RSSI

Can anyone explain how the overall RSSI is calculated versus the per chain RSSI?  Sometimes, it seems to be the maximum of the per chain RSSI and other times it's none of them.

_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
Janusz Dziedzic | 22 Jun 13:43 2015

[PATCH 0/3] ath9k: P2P patches when chanctx used

Patches for problems I hit during P2P tests when
multichannel used (driver loaded with use_chanctx=1).

Janusz Dziedzic (3):
  ath9k: handle RoC abort correctly
  ath9k: make rxfilter per HW
  ath9k: advertise p2p dev support when chanctx

 drivers/net/wireless/ath/ath9k/ath9k.h   |  3 ++-
 drivers/net/wireless/ath/ath9k/channel.c |  3 ++-
 drivers/net/wireless/ath/ath9k/init.c    |  6 +++++-
 drivers/net/wireless/ath/ath9k/main.c    |  2 +-
 drivers/net/wireless/ath/ath9k/recv.c    | 12 ++++++------
 5 files changed, 16 insertions(+), 10 deletions(-)

--

-- 
1.9.1
Zefir Kurtisi | 18 Jun 13:17 2015

[PATCH v2] ath9k: spectral - simplify max_index calculation

The max_index value provided in the spectral data set
has to be interpreted differently for HT20 and HT40.
In HT40, the value is given as unsigned index and
shall be taken as is, while in HT20 it is a signed
value around bin index 28 and needs to be converted
to an unsigned index.

This patch simplifies the previous correction and
prepares the related functions to be shared with
the DFS module.

Signed-off-by: Zefir Kurtisi <zefir.kurtisi <at> neratec.com>
---

v2: fix conversion offset as reported by Nick Kossifidis

 drivers/net/wireless/ath/ath9k/common-spectral.c | 20 ++++++-------
 drivers/net/wireless/ath/ath9k/common-spectral.h | 36 +++++++-----------------
 2 files changed, 18 insertions(+), 38 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/common-spectral.c b/drivers/net/wireless/ath/ath9k/common-spectral.c
index a876271..175193d 100644
--- a/drivers/net/wireless/ath/ath9k/common-spectral.c
+++ b/drivers/net/wireless/ath/ath9k/common-spectral.c
 <at>  <at>  -59,8 +59,8  <at>  <at>  ath_cmn_max_idx_verify_ht20_fft(u8 *sample_end, int bytes_read)

 	sample = sample_end - SPECTRAL_HT20_SAMPLE_LEN + 1;

-	max_index = spectral_max_index(mag_info->all_bins,
-				       SPECTRAL_HT20_NUM_BINS);
+	/* in ht20, this is a 6-bit signed number => shift it to 0 */
+	max_index = (spectral_max_index(mag_info->all_bins) ^ 0x20) - 4;
 	max_magnitude = spectral_max_magnitude(mag_info->all_bins);

 	max_exp = mag_info->max_exp & 0xf;
 <at>  <at>  -100,12 +100,10  <at>  <at>  ath_cmn_max_idx_verify_ht20_40_fft(u8 *sample_end, int bytes_read)
 	sample = sample_end - SPECTRAL_HT20_40_SAMPLE_LEN + 1;

 	lower_mag = spectral_max_magnitude(mag_info->lower_bins);
-	lower_max_index = spectral_max_index(mag_info->lower_bins,
-					     SPECTRAL_HT20_40_NUM_BINS);
+	lower_max_index = spectral_max_index(mag_info->lower_bins);

 	upper_mag = spectral_max_magnitude(mag_info->upper_bins);
-	upper_max_index = spectral_max_index(mag_info->upper_bins,
-					     SPECTRAL_HT20_40_NUM_BINS);
+	upper_max_index = spectral_max_index(mag_info->upper_bins);

 	max_exp = mag_info->max_exp & 0xf;

 <at>  <at>  -169,8 +167,8  <at>  <at>  ath_cmn_process_ht20_fft(struct ath_rx_status *rs,
 	magnitude = spectral_max_magnitude(mag_info->all_bins);
 	fft_sample_20.max_magnitude = __cpu_to_be16(magnitude);

-	max_index = spectral_max_index(mag_info->all_bins,
-					SPECTRAL_HT20_NUM_BINS);
+	/* in ht20, this is a 6-bit signed number => shift it to 0 */
+	max_index = (spectral_max_index(mag_info->all_bins) ^ 0x20) - 4;
 	fft_sample_20.max_index = max_index;

 	bitmap_w = spectral_bitmap_weight(mag_info->all_bins);
 <at>  <at>  -302,12 +300,10  <at>  <at>  ath_cmn_process_ht20_40_fft(struct ath_rx_status *rs,
 	upper_mag = spectral_max_magnitude(mag_info->upper_bins);
 	fft_sample_40.upper_max_magnitude = __cpu_to_be16(upper_mag);

-	lower_max_index = spectral_max_index(mag_info->lower_bins,
-					SPECTRAL_HT20_40_NUM_BINS);
+	lower_max_index = spectral_max_index(mag_info->lower_bins);
 	fft_sample_40.lower_max_index = lower_max_index;

-	upper_max_index = spectral_max_index(mag_info->upper_bins,
-					SPECTRAL_HT20_40_NUM_BINS);
+	upper_max_index = spectral_max_index(mag_info->upper_bins);
 	fft_sample_40.upper_max_index = upper_max_index;

 	lower_bitmap_w = spectral_bitmap_weight(mag_info->lower_bins);
diff --git a/drivers/net/wireless/ath/ath9k/common-spectral.h b/drivers/net/wireless/ath/ath9k/common-spectral.h
index 998743b..7540835 100644
--- a/drivers/net/wireless/ath/ath9k/common-spectral.h
+++ b/drivers/net/wireless/ath/ath9k/common-spectral.h
 <at>  <at>  -116,33 +116,17  <at>  <at>  static inline u16 spectral_max_magnitude(u8 *bins)
 	       (bins[2] & 0x03) << 10;
 }

-/* return the max magnitude from the all/upper/lower bins */
-static inline u8 spectral_max_index(u8 *bins, int num_bins)
+/* return the max index from the all/upper/lower bins
+ *
+ * in HT20: 6-bit signed number of range -28 to +27
+ * in HT40: 6-bit unsigned number of range 0 to +63
+ *          (upper sub-channel index 0 is DC)
+ *
+ * Correct interpretation of the value has to be done at caller
+ */
+static inline u8 spectral_max_index(u8 *bins)
 {
-	s8 m = (bins[2] & 0xfc) >> 2;
-	u8 zero_idx = num_bins / 2;
-
-	/* It's a 5 bit signed int, remove its sign and use one's
-	 * complement interpretation to add the sign back to the 8
-	 * bit int
-	 */
-	if (m & 0x20) {
-		m &= ~0x20;
-		m |= 0xe0;
-	}
-
-	/* Bring the zero point to the beginning
-	 * instead of the middle so that we can use
-	 * it for array lookup and that we don't deal
-	 * with negative values later
-	 */
-	m += zero_idx;
-
-	/* Sanity check to make sure index is within bounds */
-	if (m < 0 || m > num_bins - 1)
-		m = 0;
-
-	return m;
+	return (bins[2] & 0xfc) >> 2;
 }

 /* return the bitmap weight from the all/upper/lower bins */
--

-- 
1.9.1
Martin Chauchet | 18 Jun 09:05 2015
Picon

Injected 11n Radiotap frames default to 11a

Hello everyone,

 

I am currently trying to inject frames in Monitor Mode on a

 

 

 

_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
Martin Chauchet | 18 Jun 09:17 2015
Picon

Injected 11n Radiotap frames default to 11a

Hello everyone,

 

// First of all sorry for the previous fragmented mail, my email software played a trick on me.

 

I am currently trying to inject frames in Monitor Mode on a Atheros AR9580 based WNIC with radiotap headers within the 5GHz band.

The goal ist o achieve injection in 11n mode, but all the frames I inject appear to be sent in 11a mode (according to wireshark captures on a second machine).

 

OS is Ubuntu Linux with kernel 3.13 and ath9k drivers.

In order to ease the injection process, I decided to use libpcap.

 

This is my radiotap header:

 

0x00, 0x00,                         // <-- radiotap version

0x0e, 0x00,                        // <- radiotap header length

0x00, 0x80, 0x0a, 0x00, // <-- Present Flags bitmap, a/n selection in Byte 3

0x00, 0x00, 0x00,

0x07, 0x04, 0x07,             //HT/MCS

 

I copied it from a regularly sent iperf packet which was sent correctly in 11n at MCS 7 and short guard intervals.

 

My question is: Am I missing something? Or am I stuck in a dead end?

 

Thank you in advance,

Martin

 

---------------------------------------------------------

Martin Chauchet, B.Sc.

Bonn Rhein Sieg University of Applied Science

Department of Computer Science

Grantham-Allee 20, Sankt Augustin

http://inf.h-brs.de

mailto:martin.chauchet <at> smail.inf.h-brs.de

---------------------------------------------------------

 

 

 

 

 

_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
Hemamali G | 17 Jun 16:24 2015
Picon

CSI Support From AR9390 Wireless Chipset

Hi There,
   I am looking for following information from Atheros AR9390 WiFi open source driver and i believe it's hardware has the capability to output this data but i want to know what are the software controls/commands to read out this while driver is running on the linux platform. I need this for some research purposes.

"The CSI (channel state information) is similar to RSSI which describes the power of received signal. But unlike RSSI, CSI is energy over multiple subcarriers. In 802.11 g/n, there are 64 subcarriers. So CSI is a vector with 64 elements, each is a complex value. At the physical layer of wifi, they will do channel estimation, CSI is the channel estimation results for every sub-carrier."



And also it will be great if somebody can clarify whether this spectruam scanning application can run in paralel in presense of Tx/Rx traffic or just in standalone debug mode? It will be great if some body takes me to the right pointers for this

Best Regards,
-Hema

_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
CHAN WOONG BAE | 16 Jun 15:22 2015
Picon

hi

I don’t want to receive e-mail from ath9k-devel. Please delete this email account from your mailing list. Thanks.

_______________________________________________
ath9k-devel mailing list
ath9k-devel <at> lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Gmane