diff options
author | Michael Brown <mcb30@ipxe.org> | 2012-10-24 11:21:34 -0700 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2012-10-24 11:21:34 -0700 |
commit | dace457bafd839eeabbf18a2a34c1005ccab4cc0 (patch) | |
tree | ddc374ffd39258168bc357e473911a92a4bbb8d7 /src/drivers | |
parent | 7cf6c6bfedb9cda38bd1ea4a30035527cb5195d5 (diff) | |
download | ipxe-dace457bafd839eeabbf18a2a34c1005ccab4cc0.tar.gz |
[intel] Report receive overruns via network device errors
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/net/intel.c | 6 | ||||
-rw-r--r-- | src/drivers/net/intel.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c index 353fc9710..0811ed910 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 b38a71390..e9e9052b8 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 |