mirror of https://github.com/ipxe/ipxe.git
[intel] Report any unexpected interrupt causes
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/36/head
parent
da990b8870
commit
63dcab002e
|
@ -759,6 +759,14 @@ static void intel_poll ( struct net_device *netdev ) {
|
|||
if ( icr & INTEL_IRQ_LSC )
|
||||
intel_check_link ( netdev );
|
||||
|
||||
/* Check for unexpected interrupts */
|
||||
if ( icr & ~( INTEL_IRQ_TXDW | INTEL_IRQ_TXQE | INTEL_IRQ_LSC |
|
||||
INTEL_IRQ_RXDMT0 | INTEL_IRQ_RXT0 | INTEL_IRQ_RXO ) ) {
|
||||
DBGC ( intel, "INTEL %p unexpected ICR %08x\n", intel, icr );
|
||||
/* Report as a TX error */
|
||||
netdev_tx_err ( netdev, NULL, -ENOTSUP );
|
||||
}
|
||||
|
||||
/* Refill RX ring */
|
||||
intel_refill_rx ( intel );
|
||||
}
|
||||
|
|
|
@ -91,7 +91,9 @@ enum intel_descriptor_status {
|
|||
/** Interrupt Cause Read Register */
|
||||
#define INTEL_ICR 0x000c0UL
|
||||
#define INTEL_IRQ_TXDW 0x00000001UL /**< Transmit descriptor done */
|
||||
#define INTEL_IRQ_TXQE 0x00000002UL /**< Transmit queue empty */
|
||||
#define INTEL_IRQ_LSC 0x00000004UL /**< Link status change */
|
||||
#define INTEL_IRQ_RXDMT0 0x00000010UL /**< Receive queue low */
|
||||
#define INTEL_IRQ_RXT0 0x00000080UL /**< Receive timer */
|
||||
#define INTEL_IRQ_RXO 0x00000400UL /**< Receive overrun */
|
||||
|
||||
|
|
Loading…
Reference in New Issue