diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c index 353fc971..0811ed91 100644 --- a/src/drivers/net/intel.c +++ b/src/drivers/net/intel.c @@ -699,10 +699,14 @@ static void intel_poll ( struct net_device *netdev ) { if ( icr & INTEL_IRQ_TXDW ) intel_poll_tx ( netdev ); - /* Poll for RX completionsm, if applicable */ + /* Poll for RX completions, if applicable */ if ( icr & INTEL_IRQ_RXT0 ) intel_poll_rx ( netdev ); + /* Report receive overruns */ + if ( icr & INTEL_IRQ_RXO ) + netdev_rx_err ( netdev, NULL, -ENOBUFS ); + /* Check link state, if applicable */ if ( icr & INTEL_IRQ_LSC ) intel_check_link ( netdev ); diff --git a/src/drivers/net/intel.h b/src/drivers/net/intel.h index b38a7139..e9e9052b 100644 --- a/src/drivers/net/intel.h +++ b/src/drivers/net/intel.h @@ -93,6 +93,7 @@ enum intel_descriptor_status { #define INTEL_IRQ_TXDW 0x00000001UL /**< Transmit descriptor done */ #define INTEL_IRQ_LSC 0x00000004UL /**< Link status change */ #define INTEL_IRQ_RXT0 0x00000080UL /**< Receive timer */ +#define INTEL_IRQ_RXO 0x00000400UL /**< Receive overrun */ /** Interrupt Mask Set/Read Register */ #define INTEL_IMS 0x000d0UL