spidernet: fix interrupt reason recognition
authorIshizaki Kou <kou.ishizaki@toshiba.co.jp>
Mon, 20 Aug 2007 13:13:27 +0000 (22:13 +0900)
committerJeff Garzik <jeff@garzik.org>
Thu, 13 Sep 2007 04:16:31 +0000 (00:16 -0400)
commita041fe2e8d0bd749b2416ef79adc416e24af7c63
treeda75b65fd154d284fae277d855bbeb9e225e24ba
parent64251621796d5d4c0c4b6a6b6d845e4a43c63aee
spidernet: fix interrupt reason recognition

This patch solves a problem that the spidernet driver sometimes fails
to handle IRQ.

The problem happens because,
- In Cell architecture, interrupts may arrive at an interrupt
  controller, even if they are masked by the setting on registers of
  devices. It happens when interrupt packets are sent just before
  the interrupts are masked.
- spidernet interrupt handler compares interrupt reasons with
  interrupt masks, so when such interrupts occurs, spidernet interrupt
  handler returns IRQ_NONE.
- When all of interrupt handler return IRQ_NONE, linux kernel disables
  the IRQ and it no longer delivers interrupts to the interrupt handlers.

spidernet doesn't work after above sequence, because it can't receive
interrupts.

This patch changes spidernet interrupt handler that it compares
interrupt reason with SPIDER_NET_INTX_MASK_VALUE.

Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/spider_net.c