From dace457bafd839eeabbf18a2a34c1005ccab4cc0 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 24 Oct 2012 11:21:34 -0700 Subject: [PATCH] [intel] Report receive overruns via network device errors Signed-off-by: Michael Brown --- src/drivers/net/intel.c | 6 +++++- src/drivers/net/intel.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) 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