Adrian Chadd
6f5fe81e02
Fix a corner-case of interrupt handling which resulted in potentially
...
spurious (and fatal) interrupt errors.
One user reported seeing this:
Apr 22 18:04:24 ceres kernel: ar5416GetPendingInterrupts: fatal error,
ISR_RAC 0x0 SYNC_CAUSE 0x2000
SYNC_CAUSE of 0x2000 is AR_INTR_SYNC_LOCAL_TIMEOUT which is a bus timeout;
this shouldn't cause HAL_INT_FATAL to be set.
After checking out ath9k, ath9k_ar9002_hw_get_isr() clears (*masked)
before continuing, regardless of whether any bits in the ISR registers
are set. So if AR_INTR_SYNC_CAUSE is set to something that isn't
treated as fatal, and AR_ISR isn't read or is read and is 0, then
(*masked) wouldn't be cleared. Thus any of the existing bits set
that were passed in would be preserved in the output.
The caller in if_ath - ath_intr() - wasn't setting the masked value
to 0 before calling ath_hal_getisr(), so anything that was present
in that uninitialised variable would be preserved in the case above
of AR_ISR=0, AR_INTR_SYNC_CAUSE != 0; and if the HAL_INT_FATAL bit
was set, a fatal condition would be interpreted and the chip was
reset.
This patch does the following:
* ath_intr() - set masked to 0 before calling ath_hal_getisr();
* ar5416GetPendingInterrupts() - clear (*masked) before processing
continues; so if the interrupt source is AR_INTR_SYNC_CAUSE
and it isn't fatal, the hardware isn't reset via returning
HAL_INT_FATAL.
This doesn't fix any underlying errors which trigger
AR_INTR_SYNC_LOCAL_TIMEOUT - which is a bus timeout of some
sort - so that likely should be further investigated.
2011-04-23 06:37:09 +00:00
..
2011-02-04 15:45:48 +00:00
2011-01-19 00:57:58 +00:00
2011-04-19 20:44:43 +00:00
2011-01-06 21:02:14 +00:00
2011-02-21 09:01:34 +00:00
2011-03-23 13:10:15 +00:00
2011-04-01 18:53:41 +00:00
2011-03-23 13:10:15 +00:00
2011-04-19 10:57:40 +00:00
2011-04-19 18:09:21 +00:00
2011-03-23 13:10:15 +00:00
2011-03-23 13:10:15 +00:00
2010-01-07 21:01:37 +00:00
2010-05-31 09:07:23 +00:00
2010-07-28 16:24:11 +00:00
2010-05-03 07:32:50 +00:00
2011-04-06 20:54:26 +00:00
2011-02-21 09:01:34 +00:00
2011-04-21 20:56:34 +00:00
2011-04-23 06:37:09 +00:00
2010-12-21 12:49:37 +00:00
2011-03-23 13:10:15 +00:00
2010-10-15 14:52:11 +00:00
2011-04-05 17:41:54 +00:00
2011-02-21 09:01:34 +00:00
2010-10-15 14:52:11 +00:00
2011-01-18 15:23:16 +00:00
2011-01-17 20:15:15 +00:00
2011-03-23 13:10:15 +00:00
2011-04-21 23:06:00 +00:00
2010-01-05 20:42:25 +00:00
2011-04-22 09:44:01 +00:00
2010-10-13 17:38:23 +00:00
2010-08-11 02:13:50 +00:00
2010-07-11 21:08:29 +00:00
2010-10-02 08:18:19 +00:00
2010-05-03 07:32:50 +00:00
2010-08-04 00:25:13 +00:00
2010-10-13 17:38:23 +00:00
2011-01-29 00:53:58 +00:00
2010-01-12 17:59:58 +00:00
2011-02-21 09:01:34 +00:00
2010-05-03 07:32:50 +00:00
2011-03-25 20:53:02 +00:00
2011-04-20 23:20:00 +00:00
2011-03-28 19:08:53 +00:00
2010-01-07 21:01:37 +00:00
2010-01-08 17:20:41 +00:00
2011-03-23 13:10:15 +00:00
2011-04-05 21:55:43 +00:00
2011-01-12 19:53:56 +00:00
2011-01-18 21:14:23 +00:00
2011-02-21 09:01:34 +00:00
2011-04-22 13:56:21 +00:00
2011-03-23 13:10:15 +00:00
2010-05-03 07:32:50 +00:00
2010-01-03 23:26:29 +00:00
2011-01-18 21:14:23 +00:00
2011-02-13 19:25:48 +00:00
2011-02-21 09:01:34 +00:00
2011-01-29 21:14:29 +00:00
2010-05-03 07:32:50 +00:00
2011-03-11 22:19:49 +00:00
2011-02-16 20:07:44 +00:00
2011-03-28 16:58:48 +00:00
2011-04-22 09:41:51 +00:00
2010-11-11 20:18:33 +00:00
2010-01-07 21:01:37 +00:00
2010-12-18 14:24:24 +00:00
2011-04-22 09:39:05 +00:00
2010-06-19 13:41:17 +00:00
2011-03-21 09:40:01 +00:00
2010-10-13 14:41:52 +00:00
2010-10-04 17:22:18 +00:00
2010-01-11 04:13:06 +00:00
2011-02-01 01:05:11 +00:00
2011-04-21 14:39:33 +00:00
2010-05-03 07:32:50 +00:00
2010-12-10 22:20:11 +00:00
2011-01-22 21:33:18 +00:00
2011-01-18 21:47:30 +00:00
2010-01-08 20:40:28 +00:00
2010-04-28 15:38:01 +00:00
2011-04-14 07:14:22 +00:00
2010-05-11 17:14:17 +00:00
2011-01-18 21:14:23 +00:00
2011-03-10 23:53:01 +00:00
2011-01-05 23:15:22 +00:00
2011-01-12 19:53:56 +00:00
2011-04-20 17:49:05 +00:00
2011-02-21 09:01:34 +00:00
2011-03-23 13:10:15 +00:00
2011-03-23 13:10:15 +00:00
2010-10-13 11:37:12 +00:00
2010-10-13 11:37:12 +00:00
2011-03-28 12:48:33 +00:00
2010-12-18 14:21:28 +00:00
2011-03-24 08:56:12 +00:00
2010-10-15 15:00:30 +00:00
2010-12-20 16:39:43 +00:00
2011-03-23 13:10:15 +00:00
2011-02-09 19:31:10 +00:00
2011-01-17 22:58:28 +00:00
2010-12-06 17:02:56 +00:00
2010-10-15 14:52:11 +00:00
2011-04-22 09:22:27 +00:00
2010-01-01 22:47:53 +00:00
2010-01-28 08:41:30 +00:00
2011-01-17 19:31:34 +00:00
2011-02-25 17:30:25 +00:00
2011-04-22 09:59:16 +00:00
2011-03-23 13:10:15 +00:00
2011-04-19 10:57:40 +00:00
2011-04-22 00:44:27 +00:00
2011-04-07 13:49:44 +00:00
2010-05-03 07:32:50 +00:00
2011-03-23 13:10:15 +00:00
2011-03-23 13:10:15 +00:00
2010-08-06 09:47:48 +00:00
2010-10-15 15:00:30 +00:00
2011-04-03 11:55:48 +00:00
2011-02-21 09:01:34 +00:00
2010-11-11 13:42:46 +00:00
2011-01-19 00:57:58 +00:00
2010-11-09 10:59:09 +00:00
2011-01-12 19:53:56 +00:00
2011-03-31 13:22:12 +00:00
2010-10-15 14:52:11 +00:00
2010-05-03 07:32:50 +00:00
2010-09-05 20:04:02 +00:00
2010-09-10 11:19:03 +00:00
2011-02-19 17:38:51 +00:00
2011-01-04 10:59:38 +00:00
2010-12-18 02:54:51 +00:00
2010-07-11 21:08:29 +00:00
2011-04-09 14:45:50 +00:00
2011-02-21 09:01:34 +00:00
2011-03-23 13:10:15 +00:00
2010-01-07 21:01:37 +00:00
2010-05-03 07:32:50 +00:00
2011-02-27 13:58:20 +00:00
2010-07-11 21:08:29 +00:00
2010-10-15 15:00:30 +00:00
2010-10-15 15:00:30 +00:00
2011-03-23 13:10:15 +00:00
2011-04-19 10:57:40 +00:00
2011-02-08 00:16:36 +00:00
2011-03-23 13:10:15 +00:00
2011-03-11 22:21:12 +00:00
2010-10-15 15:00:30 +00:00
2010-05-03 07:32:50 +00:00
2010-05-03 07:32:50 +00:00
2011-04-20 19:41:08 +00:00
2010-09-10 11:19:03 +00:00
2011-03-23 13:10:15 +00:00
2011-03-11 22:23:46 +00:00
2011-04-01 13:28:34 +00:00
2011-04-22 12:46:39 +00:00
2010-11-30 17:34:15 +00:00
2010-11-15 05:25:51 +00:00
2011-03-11 22:32:17 +00:00
2010-10-24 12:51:02 +00:00
2010-08-12 00:16:18 +00:00
2010-01-28 08:41:30 +00:00
2011-01-28 23:40:13 +00:00
2010-09-04 16:27:14 +00:00
2010-10-15 15:00:30 +00:00
2011-03-23 13:10:15 +00:00
2011-02-21 09:01:34 +00:00
2010-03-29 17:26:24 +00:00
2011-04-12 07:49:11 +00:00
2011-03-23 13:10:15 +00:00
2011-03-23 13:10:15 +00:00
2011-03-23 22:06:09 +00:00
2011-02-21 09:01:34 +00:00
2010-11-07 12:29:26 +00:00
2011-01-19 17:04:07 +00:00
2010-05-03 07:32:50 +00:00
2011-02-21 09:01:34 +00:00
2010-05-03 07:32:50 +00:00
2011-01-29 02:36:45 +00:00
2011-03-23 13:10:15 +00:00