Skip to contentSkip to conversation

ath9k_hw: Handle AR_INTR_SYNC_HOST1_(FATAL|PERR) on AR9003

PATCH New Sven Eckelmann 5 participants 30 messages Sep 27, 2012 – Feb 22, 2013 Qualcomm Atheros ATH9K wireless driver

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_(FATAL|PERR) on AR9003

Interrupts with the sync_cause AR_INTR_SYNC_HOST1_FATAL and AR_INTR_SYNC_HOST1_PERR have to be handled using a chip reset. Otherwise a interrupt storm with unhandled interrupts will cause a hang or crash of the machine.

---
I don't have any hardware documentation. So I need someone who checks the flags whether this is really like AR9002 and not another thing which only gets fixed by accident using this patch.

 drivers/net/wireless/ath/ath9k/ar9003_mac.c |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)
drivers/net/wireless/ath/ath9k/ar9003_mac.c +17 -0
index d5b2e0e..301bf72 100644
@@ -182,6 +182,7 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 	struct ath9k_hw_capabilities *pCap = &ah->caps;
 	struct ath_common *common = ath9k_hw_common(ah);
 	u32 sync_cause = 0, async_cause, async_mask = AR_INTR_MAC_IRQ;
+	bool fatal_int;
 
 	if (ath9k_hw_mci_is_enabled(ah))
 		async_mask |= AR_INTR_ASYNC_MASK_MCI;
@@ -310,6 +311,22 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 
 	if (sync_cause) {
 		ath9k_debug_sync_cause(common, sync_cause);
+		fatal_int =
+			(sync_cause &
+			 (AR_INTR_SYNC_HOST1_FATAL | AR_INTR_SYNC_HOST1_PERR))
+			? true : false;
+
+		if (fatal_int) {
+			if (sync_cause & AR_INTR_SYNC_HOST1_FATAL) {
+				ath_dbg(common, ANY,
+					"received PCI FATAL interrupt\n");
+			}
+			if (sync_cause & AR_INTR_SYNC_HOST1_PERR) {
+				ath_dbg(common, ANY,
+					"received PCI PERR interrupt\n");
+			}
+			*masked |= ATH9K_INT_FATAL;
+		}
 
 		if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) {
 			REG_WRITE(ah, AR_RC, AR_RC_HOSTIF);
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Interrupts with the sync_cause AR_INTR_SYNC_HOST1_FATAL has to be handled using a chip reset. Otherwise a interrupt storm with unhandled interrupts will cause a hang or crash of the machine.

---
I was informed that AR_INTR_SYNC_HOST1_PERR should not be handled this way because it can create system freezes after an adhoc interface was created.

I really need some Atheros developer who can check the documentation to verify the interpretation of these flags. Otherwise this is just guessing and may lead to even bigger problems.

 drivers/net/wireless/ath/ath9k/ar9003_mac.c |    5 +++++
 1 file changed, 5 insertions(+)
drivers/net/wireless/ath/ath9k/ar9003_mac.c +5 -0
index d5b2e0e..6031bdf 100644
@@ -311,6 +311,11 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 	if (sync_cause) {
 		ath9k_debug_sync_cause(common, sync_cause);
 
+		if (sync_cause & AR_INTR_SYNC_HOST1_FATAL) {
+			ath_dbg(common, ANY, "received PCI FATAL interrupt\n");
+			*masked |= ATH9K_INT_FATAL;
+		}
+
 		if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) {
 			REG_WRITE(ah, AR_RC, AR_RC_HOSTIF);
 			REG_WRITE(ah, AR_RC, 0);
Signature · 1 line
1.7.10.4
#2 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

.. well, the rule here is "You shouldn't get PERR/FATAL interrupts."

Haven't I posted a summary of what those errors are?

Ok. So they're signals from the PCIe core (named host1_fatal and host1_perr. Helpfully.) Those errors occured during a DMA transfer.

So the question is why you're seeing PERR interrupts when creating an adhoc interface. That hints to me that something odd is going on..

I've seen these issues creep up when the NIC is in some way behaving very, very badly (lots of timeouts and sync errors with little to no traffic at all), which resulted in all kinds of odd and weird, unstable behaviour. After replacing the NIC with another NIC (in my case, an AR9280 -> AR9280 NIC :-) the errors went away and things continued swimmingly.

I'd have to go digging through the PCIe core source to figure out exactly what host1_peer and host1_fatal mean. I can if you'd like, it'll just take some time as I'm not familiar at all with the PCIe host interface.

Thanks,

Adrian

Quoted 39 lines · Sven Eckelmann

Interrupts with the sync_cause AR_INTR_SYNC_HOST1_FATAL has to be handled using a chip reset. Otherwise a interrupt storm with unhandled interrupts will cause a hang or crash of the machine.

---
I was informed that AR_INTR_SYNC_HOST1_PERR should not be handled this way because it can create system freezes after an adhoc interface was created.

I really need some Atheros developer who can check the documentation to verify the interpretation of these flags. Otherwise this is just guessing and may lead to even bigger problems.

 drivers/net/wireless/ath/ath9k/ar9003_mac.c |    5 +++++
 1 file changed, 5 insertions(+)
drivers/net/wireless/ath/ath9k/ar9003_mac.c +5 -1
index d5b2e0e..6031bdf 100644
@@ -311,6 +311,11 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
        if (sync_cause) {
                ath9k_debug_sync_cause(common, sync_cause);
 
+               if (sync_cause & AR_INTR_SYNC_HOST1_FATAL) {
+                       ath_dbg(common, ANY, "received PCI FATAL interrupt\n");
+                       *masked |= ATH9K_INT_FATAL;
+               }
+
                if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) {
                        REG_WRITE(ah, AR_RC, AR_RC_HOSTIF);
                        REG_WRITE(ah, AR_RC, 0);
--

1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 17 lines · Adrian Chadd

.. well, the rule here is "You shouldn't get PERR/FATAL interrupts."

Haven't I posted a summary of what those errors are?

Ok. So they're signals from the PCIe core (named host1_fatal and host1_perr. Helpfully.) Those errors occured during a DMA transfer.

So the question is why you're seeing PERR interrupts when creating an adhoc interface. That hints to me that something odd is going on..

I've seen these issues creep up when the NIC is in some way behaving very, very badly (lots of timeouts and sync errors with little to no traffic at all), which resulted in all kinds of odd and weird, unstable behaviour. After replacing the NIC with another NIC (in my case, an AR9280 -> AR9280 NIC :-) the errors went away and things continued swimmingly.

Quoted 4 lines

I'd have to go digging through the PCIe core source to figure out exactly what host1_peer and host1_fatal mean. I can if you'd like, it'll just take some time as I'm not familiar at all with the PCIe host interface.

According to the datasheet, AR_INTR_SYNC_HOST1_PERR is triggered by an invalid register access, and AR_INTR_SYNC_HOST1_FATAL is triggered by corrupt descriptors or other DMA issues.
Maybe you can get some information on the source of this PERR error if you record the last register accesses outside of the irq context and print them once this IRQ comes in.

- Felix

#4 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

In reply to Adrian Chadd

Hey Adrian,

Quoted 9 lines · Adrian Chadd

.. well, the rule here is "You shouldn't get PERR/FATAL interrupts."

Haven't I posted a summary of what those errors are?

Ok. So they're signals from the PCIe core (named host1_fatal and host1_perr. Helpfully.) Those errors occured during a DMA transfer.

So the question is why you're seeing PERR interrupts when creating an adhoc interface. That hints to me that something odd is going on..

thanks for the explanation!

Quoted 7 lines

I've seen these issues creep up when the NIC is in some way behaving very, very badly (lots of timeouts and sync errors with little to no traffic at all), which resulted in all kinds of odd and weird, unstable behaviour. After replacing the NIC with another NIC (in my case, an AR9280 -> AR9280 NIC :-) the errors went away and things continued swimmingly.

Sounds like a good solution, but I'm afraid it won't work for us. We are using AR9330 SoCs (Hornet), and as long as we don't have a very sharp knife we won't be able to replace the NIC ... And cutting a few thousand of them will also not be funny.

I'm starting to lose a little bit of confidence in these insects ... :/

Quoted 5 lines

I'd have to go digging through the PCIe core source to figure out exactly what host1_peer and host1_fatal mean. I can if you'd like, it'll just take some time as I'm not familiar at all with the PCIe host interface.

It would at least be interesting if we are supposed to handle the interrupt somehow, instead of resetting the chip.

Thanks,
Simon

Quoted 43 lines

Thanks,

Adrian

Quoted 35 lines · Sven Eckelmann

Interrupts with the sync_cause AR_INTR_SYNC_HOST1_FATAL has to be handled using a chip reset. Otherwise a interrupt storm with unhandled interrupts will cause a hang or crash of the machine.

---
I was informed that AR_INTR_SYNC_HOST1_PERR should not be handled this way because it can create system freezes after an adhoc interface was created.

I really need some Atheros developer who can check the documentation to verify the interpretation of these flags. Otherwise this is just guessing and may lead to even bigger problems.

 drivers/net/wireless/ath/ath9k/ar9003_mac.c |    5 +++++
 1 file changed, 5 insertions(+)
drivers/net/wireless/ath/ath9k/ar9003_mac.c +5 -1
index d5b2e0e..6031bdf 100644
@@ -311,6 +311,11 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
        if (sync_cause) {
                ath9k_debug_sync_cause(common, sync_cause);
 
+               if (sync_cause & AR_INTR_SYNC_HOST1_FATAL) {
+                       ath_dbg(common, ANY, "received PCI FATAL interrupt\n");
+                       *masked |= ATH9K_INT_FATAL;
+               }
+
                if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) {
                        REG_WRITE(ah, AR_RC, AR_RC_HOSTIF);
                        REG_WRITE(ah, AR_RC, 0);
--

1.7.10.4

Quoted 9 lines
Quoted 4 lines

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121002/5dfa27bd/attachment.pgp

#5 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, there are still issues on Hornet?

And no, you're not supposed to handle the interrupt per se.. it's a sign that things got upset and you can't trust anything from that point forward.

Felix is right, it'd be good to log the register accesses that lead up to this.

Adrian

#6 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 1 line · On Tuesday 02 October 2012 07:06:03 Adrian Chadd wrote:

Hm, there are still issues on Hornet?

Yes, we still have problems with hornet. The issue I am trying to "fix" with this patch is an interrupt storm on AR9330 devices with sta interface(s). Random devices crash after getting a stacktrace reporting __report_bad_irq. The crash either results in a reboot or hang of the device

[  952.950000] irq 2: nobody cared (try booting with the "irqpoll" option)
[  952.950000] Call Trace:
[  952.950000] [<8026ade8>] dump_stack+0x8/0x34
[  952.950000] [<800a75d0>] __report_bad_irq+0x44/0xf4
[  952.950000] [<800a78ec>] note_interrupt+0x200/0x2a4
[  952.950000] [<800a58c8>] handle_irq_event_percpu+0x19c/0x1e0
[  952.950000] [<800a86cc>] handle_percpu_irq+0x54/0x88
[  952.950000] [<800a501c>] generic_handle_irq+0x3c/0x4c
[  952.950000] [<80064748>] do_IRQ+0x1c/0x34
[  952.950000] [<80062d6c>] ret_from_irq+0x0/0x4
[  952.950000] [<8007673c>] tasklet_action+0xb8/0xd4
[  952.950000] [<80076c24>] __do_softirq+0xa0/0x154
[  952.950000] [<80076e30>] do_softirq+0x48/0x68
[  952.950000] [<80076f94>] local_bh_enable+0x94/0xb0
[  952.950000] [<83406d60>] cfg80211_scan_done+0x670/0x6d0 [cfg80211]
[  952.950000] 
[  952.950000] handlers:
[  952.950000] [<83564d48>] ath_isr
[  952.950000] Disabling IRQ #2

The test setup is using 30 AR9330 devices running OpenWRT 32727/33559. 32727 is using compat-wireless-2012-04-17 (+ many OpenWRT patches) and 33559 is running compat-wireless-2012-09-07 (+many more patches from Felix). 1 device is running an open AP device (standard OpenWRT settings) and 29 devices are trying to connect. Random devices will now fail. To debug this problem, I used one devices with 8 vif devices and restarted the network script again and again to force the recreation of the vif and reconnect.

The stack trace doesn't seem to be very helpful. Therefore, I checked ath_isr and noticed that the interrupts right before the device crash get the status 0 from ar9003_hw_get_isr. Digging a little but further also revealed that the interrupts in the interrupt storm also have async_cause 0 and sync_cause 0x20.

This sync cause 0x20 isn't handled anywhere and may be the cause of the hang/crash. At least this is the symptom which can be fixed without crashing the system.

I hope that helps to track down the problem.

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121002/aba09566/attachment.pgp

#7 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 36 lines · Sven Eckelmann
Quoted 1 line · On Tuesday 02 October 2012 07:06:03 Adrian Chadd wrote:

Hm, there are still issues on Hornet?

Yes, we still have problems with hornet. The issue I am trying to "fix" with this patch is an interrupt storm on AR9330 devices with sta interface(s). Random devices crash after getting a stacktrace reporting __report_bad_irq. The crash either results in a reboot or hang of the device

[  952.950000] irq 2: nobody cared (try booting with the "irqpoll" option)
[  952.950000] Call Trace:
[  952.950000] [<8026ade8>] dump_stack+0x8/0x34
[  952.950000] [<800a75d0>] __report_bad_irq+0x44/0xf4
[  952.950000] [<800a78ec>] note_interrupt+0x200/0x2a4
[  952.950000] [<800a58c8>] handle_irq_event_percpu+0x19c/0x1e0
[  952.950000] [<800a86cc>] handle_percpu_irq+0x54/0x88
[  952.950000] [<800a501c>] generic_handle_irq+0x3c/0x4c
[  952.950000] [<80064748>] do_IRQ+0x1c/0x34
[  952.950000] [<80062d6c>] ret_from_irq+0x0/0x4
[  952.950000] [<8007673c>] tasklet_action+0xb8/0xd4
[  952.950000] [<80076c24>] __do_softirq+0xa0/0x154
[  952.950000] [<80076e30>] do_softirq+0x48/0x68
[  952.950000] [<80076f94>] local_bh_enable+0x94/0xb0
[  952.950000] [<83406d60>] cfg80211_scan_done+0x670/0x6d0 [cfg80211]
[  952.950000] 
[  952.950000] handlers:
[  952.950000] [<83564d48>] ath_isr
[  952.950000] Disabling IRQ #2

The test setup is using 30 AR9330 devices running OpenWRT 32727/33559. 32727 is using compat-wireless-2012-04-17 (+ many OpenWRT patches) and 33559 is running compat-wireless-2012-09-07 (+many more patches from Felix). 1 device is running an open AP device (standard OpenWRT settings) and 29 devices are trying to connect. Random devices will now fail. To debug this problem, I used one devices with 8 vif devices and restarted the network script again and again to force the recreation of the vif and reconnect.

Quoted 8 lines

The stack trace doesn't seem to be very helpful. Therefore, I checked ath_isr and noticed that the interrupts right before the device crash get the status 0 from ar9003_hw_get_isr. Digging a little but further also revealed that the interrupts in the interrupt storm also have async_cause 0 and sync_cause 0x20.

This sync cause 0x20 isn't handled anywhere and may be the cause of the hang/crash. At least this is the symptom which can be fixed without crashing the system.

I checked the AR933x datasheet, and it says that cause 0x20 is tx descriptor corruption.

- Felix

#8 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 5 lines · Felix Fietkau
Quoted 3 lines

This sync cause 0x20 isn't handled anywhere and may be the cause of the hang/crash. At least this is the symptom which can be fixed without crashing the system.

I checked the AR933x datasheet, and it says that cause 0x20 is tx descriptor corruption.

Ah hey, for Hornet they redefined those bits:

5: MAC_TXC_CORRUPTION_FLAG_SYNC (TX descriptor integrity flag) 6: INVALID_ADDRESS_ACCESS (invalid register access)

Good catch. That's definitely something in the right direction.

Adrian

#9 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 8 lines · On Wednesday 03 October 2012 07:51:28 Adrian Chadd wrote:
Quoted 6 lines · Felix Fietkau
Quoted 3 lines

This sync cause 0x20 isn't handled anywhere and may be the cause of the hang/crash. At least this is the symptom which can be fixed without crashing the system.

I checked the AR933x datasheet, and it says that cause 0x20 is tx descriptor corruption.

Quoted 6 lines

Ah hey, for Hornet they redefined those bits:

5: MAC_TXC_CORRUPTION_FLAG_SYNC (TX descriptor integrity flag) 6: INVALID_ADDRESS_ACCESS (invalid register access)

Good catch. That's definitely something in the right direction.

Ok, I've just created a dirty hack to trace some of the register reads/writes.

I used following test setup: Two Hornets, one is the "internet gateway" (just attached using ethernet to a test server) and is running one AP vif with standard OpenWRT settings. The other Hornet is placed next to it (only some centimeter far away) and is connected to the AP using WiFi.

The client device is just trying to download a large file using HTTP. The serial consoles on both devices will now print the "same" log. I already searched for the interesting section. It is started in ath_ani_calibrate and contains ~42 register access operations.

My best guess is the REG_RMW_FIELD for ATH9K_ANI_MRC_CCK in ar9003_hw_ani_control (just checked sync_cause before and after the access).

So, now I need some input again from the guis with the spec. :)

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 999-debug_reg_write.patch
Type: text/x-patch
Size: 11457 bytes
Desc: not available
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/b98046b7/attachment-0002.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: invalid_register_access.log
Type: text/x-log
Size: 27233 bytes
Desc: not available
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/b98046b7/attachment-0003.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/b98046b7/attachment-0001.pgp

#10 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 28 lines · Sven Eckelmann
Quoted 8 lines · On Wednesday 03 October 2012 07:51:28 Adrian Chadd wrote:
Quoted 6 lines · Felix Fietkau
Quoted 3 lines

This sync cause 0x20 isn't handled anywhere and may be the cause of the hang/crash. At least this is the symptom which can be fixed without crashing the system.

I checked the AR933x datasheet, and it says that cause 0x20 is tx descriptor corruption.

Quoted 6 lines

Ah hey, for Hornet they redefined those bits:

5: MAC_TXC_CORRUPTION_FLAG_SYNC (TX descriptor integrity flag) 6: INVALID_ADDRESS_ACCESS (invalid register access)

Good catch. That's definitely something in the right direction.

Ok, I've just created a dirty hack to trace some of the register reads/writes.

I used following test setup: Two Hornets, one is the "internet gateway" (just attached using ethernet to a test server) and is running one AP vif with standard OpenWRT settings. The other Hornet is placed next to it (only some centimeter far away) and is connected to the AP using WiFi.

The client device is just trying to download a large file using HTTP. The serial consoles on both devices will now print the "same" log. I already searched for the interesting section. It is started in ath_ani_calibrate and contains ~42 register access operations.

Quoted 4 lines

My best guess is the REG_RMW_FIELD for ATH9K_ANI_MRC_CCK in ar9003_hw_ani_control (just checked sync_cause before and after the access).

So, now I need some input again from the guis with the spec. :)

Actually, this makes a lot of sense. Maximal Ratio Combining can only be done if you have multiple inputs, and Hornet is a single-chain device ;)

Please try this patch to see if it gets rid of these interrupts:
---

drivers/net/wireless/ath/ath9k/ani.c +2 -1
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah, 
 		if (IS_CHAN_2GHZ(chan)) {
 			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
 					    ATH9K_ANI_FIRSTEP_LEVEL);
-			if (AR_SREV_9300_20_OR_LATER(ah))
+			if (AR_SREV_9300_20_OR_LATER(ah) &&
+			    ah->caps.rx_chainmask != 1)
 				ah->ani_function |= ATH9K_ANI_MRC_CCK;
 		} else
 			ah->ani_function = 0;
#11 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 1 line · On Friday 05 October 2012 14:34:28 Felix Fietkau wrote:

On 2012-10-05 1:08 PM, Sven Eckelmann wrote:

[...]

Quoted 5 lines

Please try this patch to see if it gets rid of these interrupts:
---

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah, · line 314

Quoted 9 lines
drivers/net/wireless/ath/ath9k/ani.c +2 -1
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
 		if (IS_CHAN_2GHZ(chan)) {
 			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
 					    ATH9K_ANI_FIRSTEP_LEVEL);
-			if (AR_SREV_9300_20_OR_LATER(ah))
+			if (AR_SREV_9300_20_OR_LATER(ah) &&
+			    ah->caps.rx_chainmask != 1)
 				ah->ani_function |= ATH9K_ANI_MRC_CCK;
 		} else
 			ah->ani_function = 0;

Looks partially good. At least this patch fixed parts my friday :D

I have more similar bugs, but at least this one is related to a bandwidth problem which I also wanted to check today. But it didn't fix _this_ invalid register access on the client device (but I don't see it anymore on the AP device).

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/16f898f5/attachment.pgp

#12 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 20 lines · Sven Eckelmann
Quoted 1 line · On Friday 05 October 2012 14:34:28 Felix Fietkau wrote:

On 2012-10-05 1:08 PM, Sven Eckelmann wrote:

[...]

Quoted 5 lines

Please try this patch to see if it gets rid of these interrupts:
---

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah, · line 314

Quoted 9 lines
drivers/net/wireless/ath/ath9k/ani.c +2 -1
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
 		if (IS_CHAN_2GHZ(chan)) {
 			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
 					    ATH9K_ANI_FIRSTEP_LEVEL);
-			if (AR_SREV_9300_20_OR_LATER(ah))
+			if (AR_SREV_9300_20_OR_LATER(ah) &&
+			    ah->caps.rx_chainmask != 1)
 				ah->ani_function |= ATH9K_ANI_MRC_CCK;
 		} else
 			ah->ani_function = 0;

Looks partially good. At least this patch fixed parts my friday :D

Quoted 4 lines

I have more similar bugs, but at least this one is related to a bandwidth problem which I also wanted to check today. But it didn't fix _this_ invalid register access on the client device (but I don't see it anymore on the AP device).

Are you sure that it's still the same register access on the client side? I don't see how it could still access MRC related registers with this part masked out.

Maybe it would make sense to come up with a debugging patch that checks the IRQ status register on every register access to see if an error was reported by the last one, and if there is an error, throw a stack trace.

- Felix

#13 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 29 lines · On Friday 05 October 2012 15:24:25 Felix Fietkau wrote:
Quoted 28 lines · Sven Eckelmann
Quoted 1 line · On Friday 05 October 2012 14:34:28 Felix Fietkau wrote:

On 2012-10-05 1:08 PM, Sven Eckelmann wrote:

[...]

Quoted 11 lines

Please try this patch to see if it gets rid of these interrupts:
---

drivers/net/wireless/ath/ath9k/ani.c +0 -0
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
 
 		if (IS_CHAN_2GHZ(chan)) {
 
 			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
 
 					    ATH9K_ANI_FIRSTEP_LEVEL);

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah, · line 314

Quoted 10 lines
drivers/net/wireless/ath/ath9k/ani.c +2 -1
 
-			if (AR_SREV_9300_20_OR_LATER(ah))
+			if (AR_SREV_9300_20_OR_LATER(ah) &&
+			    ah->caps.rx_chainmask != 1)
 
 				ah->ani_function |= ATH9K_ANI_MRC_CCK;
 
 		} else
 
 			ah->ani_function = 0;

Looks partially good. At least this patch fixed parts my friday :D

Quoted 8 lines
Quoted 4 lines

I have more similar bugs, but at least this one is related to a bandwidth problem which I also wanted to check today. But it didn't fix _this_ invalid register access on the client device (but I don't see it anymore on the AP device).

Are you sure that it's still the same register access on the client side? I don't see how it could still access MRC related registers with this part masked out.

Yes, I am sure. Let's read some code:

	if (ah->opmode == NL80211_IFTYPE_AP) {
		if (IS_CHAN_2GHZ(chan)) {
			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
					    ATH9K_ANI_FIRSTEP_LEVEL);
			if (AR_SREV_9300_20_OR_LATER(ah) &&
			    ah->caps.rx_chainmask != 1)
				ah->ani_function |= ATH9K_ANI_MRC_CCK;
		} else
			ah->ani_function = 0;
	}

Now raise your hands when you see the "ah->opmode == NL80211_IFTYPE_AP". I've just added following after this block

	if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
		ah->ani_function &= ~ATH9K_ANI_MRC_CCK;

But maybe it is better to fix the test in __ath9k_hw_init

	if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
		ah->ani_function &= ~ATH9K_ANI_MRC_CCK;

The problem in __ath9k_hw_init is the value of ah->caps.rx_chainmask ... which is not yet initialized correctly (and therefore ends up as 0).

I've attached my "please don't enable MRC CCK" version of the patch. Feel free to submit it because you've submitted the initial version... or other things with it ;)

And thanks a lot for the help.

Quoted 3 lines

Maybe it would make sense to come up with a debugging patch that checks the IRQ status register on every register access to see if an error was reported by the last one, and if there is an error, throw a stack trace.

Already done that. But got not enough useful information from this spam of half backed stackdumps. But storing the value of the sync_cause register helped a lot.

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 991-ani_mrc_cck.patch
Type: text/x-patch
Size: 1159 bytes
Desc: not available
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/ceaede13/attachment.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/ceaede13/attachment.pgp

#14 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 63 lines · Sven Eckelmann
Quoted 29 lines · On Friday 05 October 2012 15:24:25 Felix Fietkau wrote:
Quoted 28 lines · Sven Eckelmann
Quoted 1 line · On Friday 05 October 2012 14:34:28 Felix Fietkau wrote:

On 2012-10-05 1:08 PM, Sven Eckelmann wrote:

[...]

Quoted 11 lines

Please try this patch to see if it gets rid of these interrupts:
---

drivers/net/wireless/ath/ath9k/ani.c +0 -0
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
 
 		if (IS_CHAN_2GHZ(chan)) {
 
 			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
 
 					    ATH9K_ANI_FIRSTEP_LEVEL);

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah,

Quoted 10 lines
drivers/net/wireless/ath/ath9k/ani.c +2 -1
 
-			if (AR_SREV_9300_20_OR_LATER(ah))
+			if (AR_SREV_9300_20_OR_LATER(ah) &&
+			    ah->caps.rx_chainmask != 1)
 
 				ah->ani_function |= ATH9K_ANI_MRC_CCK;
 
 		} else
 
 			ah->ani_function = 0;

Looks partially good. At least this patch fixed parts my friday :D

Quoted 8 lines
Quoted 4 lines

I have more similar bugs, but at least this one is related to a bandwidth problem which I also wanted to check today. But it didn't fix _this_ invalid register access on the client device (but I don't see it anymore on the AP device).

Are you sure that it's still the same register access on the client side? I don't see how it could still access MRC related registers with this part masked out.

Yes, I am sure. Let's read some code:

	if (ah->opmode == NL80211_IFTYPE_AP) {
		if (IS_CHAN_2GHZ(chan)) {
			ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
					    ATH9K_ANI_FIRSTEP_LEVEL);
			if (AR_SREV_9300_20_OR_LATER(ah) &&
			    ah->caps.rx_chainmask != 1)
				ah->ani_function |= ATH9K_ANI_MRC_CCK;
		} else
			ah->ani_function = 0;
	}

Now raise your hands when you see the "ah->opmode == NL80211_IFTYPE_AP". I've just added following after this block

	if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
		ah->ani_function &= ~ATH9K_ANI_MRC_CCK;

But maybe it is better to fix the test in __ath9k_hw_init

	if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
		ah->ani_function &= ~ATH9K_ANI_MRC_CCK;
Quoted 6 lines

The problem in __ath9k_hw_init is the value of ah->caps.rx_chainmask ... which is not yet initialized correctly (and therefore ends up as 0).

I've attached my "please don't enable MRC CCK" version of the patch. Feel free to submit it because you've submitted the initial version... or other things with it ;)

Thanks for testing, but for submitting I'd prefer something simple, how about this:
---

drivers/net/wireless/ath/ath9k/ar9003_phy.c +4 -0
@@ -1035,6 +1035,10 @@ static bool ar9003_hw_ani_control(struct
 		 * is_on == 0 means MRC CCK is OFF (more noise imm)
 		 */
 		bool is_on = param ? 1 : 0;
+
+		if (ah->caps.rx_chainmask == 1)
+			break;
+
 		REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL,
 			      AR_PHY_MRC_CCK_ENABLE, is_on);
 		REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL,
#15 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 6 lines · On Friday 05 October 2012 17:15:01 Felix Fietkau wrote:

Thanks for testing, but for submitting I'd prefer something simple, how about this:
---

drivers/net/wireless/ath/ath9k/ar9003_phy.c static bool ar9003_hw_ani_control(struct · line 1044

Quoted 10 lines
drivers/net/wireless/ath/ath9k/ar9003_phy.c +4 -0
@@ -1035,6 +1035,10 @@ static bool ar9003_hw_ani_control(struct
 		 * is_on == 0 means MRC CCK is OFF (more noise imm)
 		 */
 		bool is_on = param ? 1 : 0;
+
+		if (ah->caps.rx_chainmask == 1)
+			break;
+
 		REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL,
 			      AR_PHY_MRC_CCK_ENABLE, is_on);
 		REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL,

Yes, looks good.

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/7828b49d/attachment.pgp

#16 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

In reply to Felix Fietkau

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah, · line 314

Quoted 13 lines · Felix Fietkau

---

drivers/net/wireless/ath/ath9k/ani.c +2 -1
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
                if (IS_CHAN_2GHZ(chan)) {
                        ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
                                            ATH9K_ANI_FIRSTEP_LEVEL);
-                       if (AR_SREV_9300_20_OR_LATER(ah))
+                       if (AR_SREV_9300_20_OR_LATER(ah) &&
+                           ah->caps.rx_chainmask != 1)
                                ah->ani_function |= ATH9K_ANI_MRC_CCK;
                } else
                        ah->ani_function = 0;

Well, is it a RX chainmask thing, or is it a chip thing?

It's totally possible to have an RX chainmask of say 0x2 or 0x4..

Also to figure out which registers triggered the interrupt is likely going to be a bit .. special. Maybe keep a circular buffer of the last N register accesses and dump them in time order whenever you get an interrupt.

Adrian

#17 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 18 lines · Adrian Chadd

drivers/net/wireless/ath/ath9k/ani.c void ath9k_ani_reset(struct ath_hw *ah, · line 314

Quoted 13 lines · Felix Fietkau

---

drivers/net/wireless/ath/ath9k/ani.c +2 -1
@@ -307,7 +307,8 @@ void ath9k_ani_reset(struct ath_hw *ah,
                if (IS_CHAN_2GHZ(chan)) {
                        ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
                                            ATH9K_ANI_FIRSTEP_LEVEL);
-                       if (AR_SREV_9300_20_OR_LATER(ah))
+                       if (AR_SREV_9300_20_OR_LATER(ah) &&
+                           ah->caps.rx_chainmask != 1)
                                ah->ani_function |= ATH9K_ANI_MRC_CCK;
                } else
                        ah->ani_function = 0;

Well, is it a RX chainmask thing, or is it a chip thing?

Quoted 1 line

It's totally possible to have an RX chainmask of say 0x2 or 0x4..

What are you trying to tell us?

Quoted 4 lines

Also to figure out which registers triggered the interrupt is likely going to be a bit .. special. Maybe keep a circular buffer of the last N register accesses and dump them in time order whenever you get an interrupt.

Maybe you missed that part of the conversation, but this was exactly what I did. You can even find one of my debug patches which implements it (but many fancy hacks are missing).

Kind regards,
Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20121005/a23717a9/attachment.pgp

#18 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 5 lines · Sven Eckelmann
Quoted 3 lines

Well, is it a RX chainmask thing, or is it a chip thing?

It's totally possible to have an RX chainmask of say 0x2 or 0x4..

What are you trying to tell us?

That the check for "rx chainmask == 1? Definitely can't do MRC CCK" implying "rx chainmask != 1? Definitely can do MRC CCK." I think that's the wrong logic. It may be a general chipset problem across some/all AR9300 and later chips that doing MRC CCK with only one RX chain enabled is a problem, or it may be a single-chain NIC problem.

I'm pretty sure we can configure any of the RX antennas; it doesn't have to be "one chain == chain 0."

Anywy. I'll double check that.

Quoted 3 lines

Maybe you missed that part of the conversation, but this was exactly what I did. You can even find one of my debug patches which implements it (but many fancy hacks are missing).

Cool. I did miss that. But if its' a TX descriptor issue it won't be due to a register access? :)

Adrian

#19 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 15 lines · Adrian Chadd
Quoted 5 lines · Sven Eckelmann
Quoted 3 lines

Well, is it a RX chainmask thing, or is it a chip thing?

It's totally possible to have an RX chainmask of say 0x2 or 0x4..

What are you trying to tell us?

That the check for "rx chainmask == 1? Definitely can't do MRC CCK" implying "rx chainmask != 1? Definitely can do MRC CCK." I think that's the wrong logic. It may be a general chipset problem across some/all AR9300 and later chips that doing MRC CCK with only one RX chain enabled is a problem, or it may be a single-chain NIC problem.

Quoted 4 lines

I'm pretty sure we can configure any of the RX antennas; it doesn't have to be "one chain == chain 0."

Anywy. I'll double check that.

I'm pretty sure it's an issue specific to single-stream chipsets, where all MRC functionality was left out (and thus the register access leads nowhere).
I don't think this needs to consider multi-stream chipsets with only one enabled chain.

- Felix

#20 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

I can reproduce this issue on my AR9300 chip using compat-wireless-3.6.8-1 without any patch except Sven's patch on ar9003_hw_get_isr() to handle AR_INTR_SYNC_HOST1_FATAL.

I just start two hostapd to driver a wireless AP(ath1, see hostapd1.conf) and a guest AP(ath2, see hostapd2.conf), the hardware will stop working after I restart these APs a lot of times, the number of ath9k interrupts stop increasing. At this time, I can't discovery these two SSIDs on my client PC even though hostapds are working well.

just start one hostapd seems don't have this issue, just start two hostapd to drive two wireless APs still have this issue but rarely to reproduce. pls see reproduce.sh in the attachment.

I can see "ath: phy0: Failed to stop TX DMA, queues=0x001!" in the dmesg, which was output when ath_isr() receive AR_INTR_SYNC_HOST1_FATAL and try to reset the hardware.

I also record the register access like what Sven did, but I think it is different with Sven's case, since nobody called ar9003_hw_ani_control(), pls check the dmesg info in the attachment. I also test Felix F's patch on ar9003_hw_ani_control(), this issue still reproduce on my device.

here is my register record when the issue happened, just need to trace the reg whose address is 0x4028, after 4 times ath9k_conf_tx(), I receive a AR_INTR_SYNC_HOST1_FATAL value.

time, record idx, line, func, Begin|End|Write|Read, reg, val, pid, comm

[  214.856089] 3116.[0454][ath_isr][B] 0000 00000000 0 swapper
[  214.856102] 3117.[0760][ath9k_hw_intrpend][R] 4038 00000002 0 swapper
[  214.856116] 3118.[0189][ar9003_hw_get_isr][R] 4038 00000002 0 swapper
[  214.856130] 3119.[0192][ar9003_hw_get_isr][R] 7044 00000002 0 swapper
[  214.856144] 3120.[0194][ar9003_hw_get_isr][R] 0080 81000002 0 swapper
[  214.856157] 3121.[0198][ar9003_hw_get_isr][R] 4028 00000000 0 swapper <-- REG_READ(0x4028) = 0x0, no problem here
[  214.856171] 3122.[0234][ar9003_hw_get_isr][R] 00c0 81000002 0 swapper
[  214.856185] 3123.[0781][ath9k_hw_kill_interrupts][W] 0024 00000000 0 swapper
[  214.856200] 3124.[0782][ath9k_hw_kill_interrupts][R] 0024 00000000 0 swapper
[  214.856214] 3125.[0784][ath9k_hw_kill_interrupts][W] 403c 00000000 0 swapper
[  214.856228] 3126.[0785][ath9k_hw_kill_interrupts][R] 403c 00000000 0 swapper
[  214.856243] 3127.[0787][ath9k_hw_kill_interrupts][W] 402c 00000000 0 swapper
[  214.856257] 3128.[0788][ath9k_hw_kill_interrupts][R] 402c 00000000 0 swapper
[  214.856271] 3129.[0566][ath_isr][E] 0000 00000000 0 swapper
[  214.856284] 3130.[0371][ath9k_tasklet][B] 0000 00000000 0 swapper
[  214.856297] 3131.[2876][ath9k_hw_gettsf64][R] 8050 00000000 0 swapper
[  214.856311] 3132.[2878][ath9k_hw_gettsf64][R] 804c 0004f6d1 0 swapper
[  214.856325] 3133.[2879][ath9k_hw_gettsf64][R] 8050 00000000 0 swapper
[  214.856339] 3134.[0445][ath9k_hw_addrxbuf_edma][W] 0078 18a38040 0 swapper
[  214.856354] 3135.[0828][ath9k_hw_enable_interrupts][W] 0024 00000001 0 swapper
[  214.856368] 3136.[0830][ath9k_hw_enable_interrupts][W] 403c 00000002 0 swapper
[  214.856383] 3137.[0831][ath9k_hw_enable_interrupts][W] 4030 00000002 0 swapper
[  214.856397] 3138.[0833][ath9k_hw_enable_interrupts][W] 402c 00023f60 0 swapper
[  214.856412] 3139.[0834][ath9k_hw_enable_interrupts][W] 4034 00023f60 0 swapper
[  214.856427] 3140.[0837][ath9k_hw_enable_interrupts][R] 00a0 81800175 0 swapper
[  214.856441] 3141.[0837][ath9k_hw_enable_interrupts][R] 0024 00000001 0 swapper
[  214.856455] 3142.[0428][ath9k_tasklet][E] 0000 00000000 0 swapper
[  214.856469] 3143.[1396][ath9k_conf_tx][B] 0000 00000000 2639 hostapd
[  214.856483] 3144.[0404][ath9k_hw_resettxqueue][W] 1040 00101c03 2639 hostapd
[  214.856498] 3145.[0409][ath9k_hw_resettxqueue][W] 1080 0008200a 2639 hostapd
[  214.856512] 3146.[0411][ath9k_hw_resettxqueue][W] 09c0 00000800 2639 hostapd
[  214.856527] 3147.[0418][ath9k_hw_resettxqueue][W] 1100 00001102 2639 hostapd
[  214.856541] 3148.[0436][ath9k_hw_resettxqueue][W] 10c0 001005e0 2639 hostapd
[  214.856556] 3149.[0517][ath9k_hw_resettxqueue][W] 0a44 00000001 2639 hostapd
[  214.856571] 3150.[0034][ath9k_hw_set_txq_interrupts][W] 00a4 0000030f 2639 hostapd
[  214.856586] 3151.[0037][ath9k_hw_set_txq_interrupts][W] 00a8 0000030f 2639 hostapd
[  214.856601] 3152.[0041][ath9k_hw_set_txq_interrupts][W] 00ac 00c00000 2639 hostapd
[  214.856615] 3153.[1421][ath9k_conf_tx][E] 0000 00000000 2639 hostapd
[  214.856629] 3154.[1396][ath9k_conf_tx][B] 0000 00000000 2639 hostapd
[  214.856643] 3155.[0404][ath9k_hw_resettxqueue][W] 1044 00103c07 2639 hostapd
[  214.856657] 3156.[0409][ath9k_hw_resettxqueue][W] 1084 0008200a 2639 hostapd
[  214.856672] 3157.[0411][ath9k_hw_resettxqueue][W] 09c4 00000800 2639 hostapd
[  214.856686] 3158.[0418][ath9k_hw_resettxqueue][W] 1104 00001102 2639 hostapd
[  214.856701] 3159.[0436][ath9k_hw_resettxqueue][W] 10c4 00100bc0 2639 hostapd
[  214.856715] 3160.[0517][ath9k_hw_resettxqueue][W] 0a44 00000001 2639 hostapd
[  214.856730] 3161.[0034][ath9k_hw_set_txq_interrupts][W] 00a4 0000030f 2639 hostapd
[  214.856745] 3162.[0037][ath9k_hw_set_txq_interrupts][W] 00a8 0000030f 2639 hostapd
[  214.856760] 3163.[0041][ath9k_hw_set_txq_interrupts][W] 00ac 00c00000 2639 hostapd
[  214.856774] 3164.[1421][ath9k_conf_tx][E] 0000 00000000 2639 hostapd
[  214.856788] 3165.[1396][ath9k_conf_tx][B] 0000 00000000 2639 hostapd
[  214.856802] 3166.[0404][ath9k_hw_resettxqueue][W] 1048 0030fc0f 2639 hostapd
[  214.856817] 3167.[0409][ath9k_hw_resettxqueue][W] 1088 0008200a 2639 hostapd
[  214.856831] 3168.[0411][ath9k_hw_resettxqueue][W] 09c8 00000800 2639 hostapd
[  214.856846] 3169.[0418][ath9k_hw_resettxqueue][W] 1108 00001102 2639 hostapd
[  214.856860] 3170.[0436][ath9k_hw_resettxqueue][W] 10c8 00000000 2639 hostapd
[  214.856875] 3171.[0517][ath9k_hw_resettxqueue][W] 0a44 00000001 2639 hostapd
[  214.856889] 3172.[0034][ath9k_hw_set_txq_interrupts][W] 00a4 0000030f 2639 hostapd
[  214.856904] 3173.[0037][ath9k_hw_set_txq_interrupts][W] 00a8 0000030f 2639 hostapd
[  214.856919] 3174.[0041][ath9k_hw_set_txq_interrupts][W] 00ac 00c00000 2639 hostapd
[  214.856934] 3175.[1421][ath9k_conf_tx][E] 0000 00000000 2639 hostapd
[  214.856947] 3176.[1396][ath9k_conf_tx][B] 0000 00000000 2639 hostapd
[  214.856961] 3177.[0404][ath9k_hw_resettxqueue][W] 104c 007ffc0f 2639 hostapd
[  214.856976] 3178.[0409][ath9k_hw_resettxqueue][W] 108c 0008200a 2639 hostapd
[  214.856990] 3179.[0411][ath9k_hw_resettxqueue][W] 09cc 00000800 2639 hostapd
[  214.857005] 3180.[0418][ath9k_hw_resettxqueue][W] 110c 00001102 2639 hostapd
[  214.857019] 3181.[0436][ath9k_hw_resettxqueue][W] 10cc 00000000 2639 hostapd
[  214.857034] 3182.[0517][ath9k_hw_resettxqueue][W] 0a44 00000001 2639 hostapd
[  214.857048] 3183.[0034][ath9k_hw_set_txq_interrupts][W] 00a4 0000030f 2639 hostapd
[  214.857063] 3184.[0037][ath9k_hw_set_txq_interrupts][W] 00a8 0000030f 2639 hostapd
[  214.857078] 3185.[0041][ath9k_hw_set_txq_interrupts][W] 00ac 00c00000 2639 hostapd
[  214.857093] 3186.[1421][ath9k_conf_tx][E] 0000 00000000 2639 hostapd
[  214.857106] 3187.[0454][ath_isr][B] 0000 00000000 2639 hostapd
[  214.857120] 3188.[0760][ath9k_hw_intrpend][R] 4038 00000000 2639 hostapd
[  214.857134] 3189.[0767][ath9k_hw_intrpend][R] 4028 00000020 2639 hostapd
[  214.857148] 3190.[0189][ar9003_hw_get_isr][R] 4038 00000000 2639 hostapd
[  214.857162] 3191.[0198][ar9003_hw_get_isr][R] 4028 00000020 2639 hostapd  <---- REG_READ(0x4028) = 0x20, raise a  AR_INTR_SYNC_HOST1_FATAL error

I did some tests, such as
1. add delay(1000) after ath9k_conf_tx(), but can't resolve this issue.
2. add a spinlock sc->sc_reset_lock to protect the hardware between ath_reset_work() and other reset contexts, but can't resolve this issue.

Now I have no idea what to do, any suggestion will be appreciated.

- Felix Liao

-----Original Message-----
From: [email protected] [mailto:linux-wireless-owner at vger.kernel.org] On Behalf Of Felix Fietkau
Sent: Saturday, October 06, 2012 5:04 PM
To: Adrian Chadd
Cc: Sven Eckelmann; Simon Wunderlich; linux-wireless at vger.kernel.org; linville at tuxdriver.com; mcgrof at qca.qualcomm.com; ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Quoted 15 lines · Adrian Chadd
Quoted 5 lines · Sven Eckelmann
Quoted 3 lines

Well, is it a RX chainmask thing, or is it a chip thing?

It's totally possible to have an RX chainmask of say 0x2 or 0x4..

What are you trying to tell us?

That the check for "rx chainmask == 1? Definitely can't do MRC CCK" implying "rx chainmask != 1? Definitely can do MRC CCK." I think that's the wrong logic. It may be a general chipset problem across some/all AR9300 and later chips that doing MRC CCK with only one RX chain enabled is a problem, or it may be a single-chain NIC problem.

Quoted 4 lines

I'm pretty sure we can configure any of the RX antennas; it doesn't have to be "one chain == chain 0."

Anywy. I'll double check that.

I'm pretty sure it's an issue specific to single-stream chipsets, where all MRC functionality was left out (and thus the register access leads nowhere).
I don't think this needs to consider multi-stream chipsets with only one enabled chain.

- Felix

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debug_failed_to_stop_tx_dma.tar.gz
Type: application/x-gzip
Size: 40721 bytes
Desc: debug_failed_to_stop_tx_dma.tar.gz
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20130221/82895fa2/attachment-0001.bin

#21 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#22 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 20 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#23 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

And it doesn't happen with the same vap setup if you have one hostapd controlling both?

Adrian

Quoted 30 lines · Felix Liao

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 20 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#24 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

I just test this case about 4 hours, using one hostapd to driver these two APs, that is,

- hostapd hostapd1.conf -t -d -K 1> hostapd1.log &
- hostapd hostapd2.conf -t -d -K 1> hostapd2.log &
+ hostapd hostapd1.conf hostapd2.conf -t -d -K 1> hostapd.log &

seems works well so far.

Quoted 49 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 1:16 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

And it doesn't happen with the same vap setup if you have one hostapd controlling both?

Adrian

Quoted 30 lines · Felix Liao

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 20 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#25 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Ok, that's a good debugging point. It means there's only one concurrent sending path.

Are you using a multi-core board? Can you try booting it single core and see if it still behaves this way?

Adrian

Quoted 57 lines · Felix Liao

I just test this case about 4 hours, using one hostapd to driver these two APs, that is,

(quoted diff) +1 -2
-       hostapd hostapd1.conf -t -d -K 1> hostapd1.log &
-       hostapd hostapd2.conf -t -d -K 1> hostapd2.log &
+       hostapd hostapd1.conf hostapd2.conf -t -d -K 1> hostapd.log &

seems works well so far.

Quoted 49 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 1:16 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

And it doesn't happen with the same vap setup if you have one hostapd controlling both?

Adrian

Quoted 30 lines · Felix Liao

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 20 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#26 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

The CPU is only one core in my board.

Quoted 80 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 3:19 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Ok, that's a good debugging point. It means there's only one concurrent sending path.

Are you using a multi-core board? Can you try booting it single core and see if it still behaves this way?

Adrian

Quoted 28 lines · Felix Liao

I just test this case about 4 hours, using one hostapd to driver these two APs, that is,

(quoted diff) +1 -2
-       hostapd hostapd1.conf -t -d -K 1> hostapd1.log &
-       hostapd hostapd2.conf -t -d -K 1> hostapd2.log &
+       hostapd hostapd1.conf hostapd2.conf -t -d -K 1> hostapd.log &

seems works well so far.

Quoted 19 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 1:16 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

And it doesn't happen with the same vap setup if you have one hostapd controlling both?

Adrian

On 21 February 2013 17:19, Felix Liao <[email protected]>

Quoted 10 lines · wrote:
Quoted 10 lines
Quoted 10 lines

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap iwconfig ath1 power off

phy phy0 interface add ath2 type __ap iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 2 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com]

On

Quoted 18 lines
Quoted 18 lines
Quoted 18 lines
Quoted 18 lines

Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#27 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

In reply to Adrian Chadd

unlucky! it is still reproduced now when I using one hostapd to driver two APs.

Quoted 94 lines

-----Original Message-----
From: Felix Liao
Sent: Friday, February 22, 2013 3:31 PM
To: 'Adrian Chadd'
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: RE: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

The CPU is only one core in my board.

Quoted 2 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On

Behalf

Quoted 20 lines

Of Adrian Chadd
Sent: Friday, February 22, 2013 3:19 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Ok, that's a good debugging point. It means there's only one concurrent sending path.

Are you using a multi-core board? Can you try booting it single core and see if it still behaves this way?

Adrian

On 21 February 2013 22:43, Felix Liao <[email protected]>

Quoted 59 lines · wrote:
Quoted 29 lines

I just test this case about 4 hours, using one hostapd to driver these two APs, that is,

(quoted diff) +2 -2
-       hostapd hostapd1.conf -t -d -K 1> hostapd1.log &
-       hostapd hostapd2.conf -t -d -K 1> hostapd2.log &
+       hostapd hostapd1.conf hostapd2.conf -t -d -K 1> hostapd.log
+ &

seems works well so far.

Quoted 19 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 1:16 PM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

And it doesn't happen with the same vap setup if you have one hostapd controlling both?

Adrian

On 21 February 2013 17:19, Felix Liao <[email protected]>

Quoted 10 lines · wrote:
Quoted 10 lines
Quoted 10 lines

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap iwconfig ath1 power off

phy phy0 interface add ath2 type __ap iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 2 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com]

On

Quoted 18 lines
Quoted 18 lines
Quoted 18 lines
Quoted 18 lines

Behalf Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#28 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

In reply to Adrian Chadd

indeed, in order to set vap power off, I just create a station vap and set power off then change its type to AP.

reproduce.sh +11 -0
index 7f7ce2a..05a6410
@@ -14,6 +14,17 @@ brctl addif eth1-bridge eth1
 brctl addif eth2-bridge eth2
 brctl addif eth3-bridge eth3
 
+iw dev ath1 del
+iw dev ath2 del
+
+iw phy phy0 interface add ath1 type station
+iwconfig ath1 power off
+iw dev ath1 set type __ap
+
+iw phy phy0 interface add ath2 type station
+iwconfig ath2 power off
+iw dev ath1 set type __ap
+
 dmesg -c > dmesg_boot.log
 while [ 1 ]
 do
Quoted 40 lines

-----Original Message-----
From: Felix Liao
Sent: Friday, February 22, 2013 9:20 AM
To: 'Adrian Chadd'
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: RE: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 2 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On

Behalf

Quoted 18 lines

Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian

#29 lore raw

PATCH v2 1/1 ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

In reply to Adrian Chadd

I also test the following patches, but they can't resolve my problem.

[46/93] ath9k_hw: fix chain swap setting when setting rx chainmask to 5
http://patchwork.ozlabs.org/patch/218409/

[45/93] ath9k_hw: fix calibration issues on chainmask that don't include chain 0
http://patchwork.ozlabs.org/patch/218408/

[39/93] ath9k: disable the tasklet before taking the PCU lock
http://patchwork.ozlabs.org/patch/218403/

[38/93] ath9k: remove sc->rx.rxbuflock to fix a deadlock
http://patchwork.ozlabs.org/patch/218402/

[36/93] ath9k: fix rx flush handling
http://patchwork.ozlabs.org/patch/218400/

[35/93] ath9k: add a better fix for the rx tasklet vs rx flush race
http://patchwork.ozlabs.org/patch/218399/

[34/93] ath9k: do not link receive buffers during flush
http://patchwork.ozlabs.org/patch/218398/

[049/270] ath9k: use ieee80211_free_txskb
http://patchwork.ozlabs.org/patch/201782/

Quoted 76 lines

-----Original Message-----
From: Felix Liao
Sent: Friday, February 22, 2013 9:33 AM
To: 'Adrian Chadd'
Cc: 'ath9k-devel at lists.ath9k.org'; 'lindner_marek at yahoo.de'; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: RE: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

indeed, in order to set vap power off, I just create a station vap and set power off then change its type to AP.

reproduce.sh +11 -0
index 7f7ce2a..05a6410
@@ -14,6 +14,17 @@ brctl addif eth1-bridge eth1
 brctl addif eth2-bridge eth2
 brctl addif eth3-bridge eth3
 
+iw dev ath1 del
+iw dev ath2 del
+
+iw phy phy0 interface add ath1 type station
+iwconfig ath1 power off
+iw dev ath1 set type __ap
+
+iw phy phy0 interface add ath2 type station
+iwconfig ath2 power off
+iw dev ath1 set type __ap
+
 dmesg -c > dmesg_boot.log
 while [ 1 ]
 do
Quoted 15 lines

-----Original Message-----
From: Felix Liao
Sent: Friday, February 22, 2013 9:20 AM
To: 'Adrian Chadd'
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao; Hao Wang; Bryan Phillippe
Subject: RE: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

the vap setup as following, I should add these into reproduce.sh.

phy phy0 interface add ath1 type __ap
iwconfig ath1 power off

Quoted 12 lines

phy phy0 interface add ath2 type __ap
iwconfig ath2 power off

yes, I was running two hostapds, one on each vap of a single phy.

Quoted 2 lines

-----Original Message-----
From: adrian.chadd at gmail.com [mailto:adrian.chadd at gmail.com] On

Behalf

Quoted 4 lines

Of Adrian Chadd
Sent: Friday, February 22, 2013 4:39 AM
To: Felix Liao
Cc: ath9k-devel at lists.ath9k.org; lindner_marek at yahoo.de; Joe Qiao;

Hao

Quoted 14 lines
Quoted 14 lines

Wang; Bryan Phillippe
Subject: Re: [ath9k-devel] [PATCHv2] ath9k_hw: Handle AR_INTR_SYNC_HOST1_FATAL on AR9003

Hm, that's quite a CC, for people who are mostly on the list :-)

How's the vap setup look? Are you running two hostapds, one on each vap of a single card? Or is it two hostaps, each one to a separate vap on a separate NIC?

Adrian