Loading drivers/char/ip2/ip2main.c +26 −18 Original line number Diff line number Diff line Loading @@ -1166,26 +1166,10 @@ ip2_interrupt_bh(struct work_struct *work) /* */ /* */ /******************************************************************************/ static irqreturn_t ip2_interrupt(int irq, void *dev_id) static void ip2_irq_work(i2eBordStrPtr pB) { int i; i2eBordStrPtr pB; int handled = 0; ip2trace (ITRC_NO_PORT, ITRC_INTR, 99, 1, irq ); /* Service just the boards on the list using this irq */ for( i = 0; i < i2nBoards; ++i ) { pB = i2BoardPtrTable[i]; // Only process those boards which match our IRQ. // IRQ = 0 for polled boards, we won't poll "IRQ" boards 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. Loading @@ -1197,12 +1181,36 @@ ip2_interrupt(int irq, void *dev_id) // 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) { int i; i2eBordStrPtr pB; int handled = 0; ip2trace (ITRC_NO_PORT, ITRC_INTR, 99, 1, irq ); /* Service just the boards on the list using this irq */ for( i = 0; i < i2nBoards; ++i ) { pB = i2BoardPtrTable[i]; // Only process those boards which match our IRQ. // IRQ = 0 for polled boards, we won't poll "IRQ" boards if ( pB && (pB->i2eUsingIrq == irq) ) { handled = 1; ip2_irq_work(pB); } } ++irq_counter; Loading Loading
drivers/char/ip2/ip2main.c +26 −18 Original line number Diff line number Diff line Loading @@ -1166,26 +1166,10 @@ ip2_interrupt_bh(struct work_struct *work) /* */ /* */ /******************************************************************************/ static irqreturn_t ip2_interrupt(int irq, void *dev_id) static void ip2_irq_work(i2eBordStrPtr pB) { int i; i2eBordStrPtr pB; int handled = 0; ip2trace (ITRC_NO_PORT, ITRC_INTR, 99, 1, irq ); /* Service just the boards on the list using this irq */ for( i = 0; i < i2nBoards; ++i ) { pB = i2BoardPtrTable[i]; // Only process those boards which match our IRQ. // IRQ = 0 for polled boards, we won't poll "IRQ" boards 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. Loading @@ -1197,12 +1181,36 @@ ip2_interrupt(int irq, void *dev_id) // 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) { int i; i2eBordStrPtr pB; int handled = 0; ip2trace (ITRC_NO_PORT, ITRC_INTR, 99, 1, irq ); /* Service just the boards on the list using this irq */ for( i = 0; i < i2nBoards; ++i ) { pB = i2BoardPtrTable[i]; // Only process those boards which match our IRQ. // IRQ = 0 for polled boards, we won't poll "IRQ" boards if ( pB && (pB->i2eUsingIrq == irq) ) { handled = 1; ip2_irq_work(pB); } } ++irq_counter; Loading