dect
/
linux-2.6
Archived
13
0
Fork 0

drivers/char/ip2: split out irq core logic into separate function

No changes besides code movement and glue.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Jeff Garzik 2007-10-19 15:24:59 -04:00
parent 1daec86ad1
commit f3518e4ee7
1 changed files with 26 additions and 18 deletions

View File

@ -1166,6 +1166,31 @@ ip2_interrupt_bh(struct work_struct *work)
/* */
/* */
/******************************************************************************/
static void
ip2_irq_work(i2eBordStrPtr pB)
{
#ifdef USE_IQI
if (NO_MAIL_HERE != ( pB->i2eStartMail = iiGetMail(pB))) {
// Disable his interrupt (will be enabled when serviced)
// This is mostly to protect from reentrancy.
iiDisableMailIrq(pB);
// Park the board on the immediate queue for processing.
schedule_work(&pB->tqueue_interrupt);
// Make sure the immediate queue is flagged to fire.
}
#else
// We are using immediate servicing here. This sucks and can
// cause all sorts of havoc with ppp and others. The failsafe
// check on iiSendPendingMail could also throw a hairball.
i2ServiceBoard( pB );
#endif /* USE_IQI */
}
static irqreturn_t
ip2_interrupt(int irq, void *dev_id)
{
@ -1184,24 +1209,7 @@ ip2_interrupt(int irq, void *dev_id)
if ( pB && (pB->i2eUsingIrq == irq) ) {
handled = 1;
#ifdef USE_IQI
if (NO_MAIL_HERE != ( pB->i2eStartMail = iiGetMail(pB))) {
// Disable his interrupt (will be enabled when serviced)
// This is mostly to protect from reentrancy.
iiDisableMailIrq(pB);
// Park the board on the immediate queue for processing.
schedule_work(&pB->tqueue_interrupt);
// Make sure the immediate queue is flagged to fire.
}
#else
// We are using immediate servicing here. This sucks and can
// cause all sorts of havoc with ppp and others. The failsafe
// check on iiSendPendingMail could also throw a hairball.
i2ServiceBoard( pB );
#endif /* USE_IQI */
ip2_irq_work(pB);
}
}