summaryrefslogtreecommitdiffstats
path: root/sys/dev/e1000/if_em.h
diff options
context:
space:
mode:
authorjfv <jfv@FreeBSD.org>2010-10-26 00:07:58 +0000
committerjfv <jfv@FreeBSD.org>2010-10-26 00:07:58 +0000
commit8f29eb92e8f6ffb49db7252f29703f52c6b033b8 (patch)
tree69cc6348b902082ef2eab8aff1561abeaf239816 /sys/dev/e1000/if_em.h
parent4dfcef74e1114e7c367d8f3f09ae8c847f597a15 (diff)
downloadFreeBSD-src-8f29eb92e8f6ffb49db7252f29703f52c6b033b8.zip
FreeBSD-src-8f29eb92e8f6ffb49db7252f29703f52c6b033b8.tar.gz
Bug fix delta to the em driver:
- Chasin down bogus watchdogs has led to an improved design to this handling, the hang decision takes place in the tx cleanup, with only a simple report check in local_timer. Our tests have shown no false watchdogs with this code. - VLAN fixes from jhb, the shadow vfta should be per interface, but as global it was not. Thanks John. - Bug fixes in the support for new PCH2 hardware. - Thanks for all the help and feedback on the driver, changes to lem with be coming shortly as well.
Diffstat (limited to 'sys/dev/e1000/if_em.h')
-rw-r--r--sys/dev/e1000/if_em.h27
1 files changed, 21 insertions, 6 deletions
diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h
index fec34ac..8bfd600 100644
--- a/sys/dev/e1000/if_em.h
+++ b/sys/dev/e1000/if_em.h
@@ -188,6 +188,10 @@
#define EM_EEPROM_APME 0x400;
#define EM_82544_APME 0x0004;
+#define EM_QUEUE_IDLE 0
+#define EM_QUEUE_WORKING 1
+#define EM_QUEUE_HUNG 2
+
/*
* TDBA/RDBA should be aligned on 16 byte boundary. But TDLEN/RDLEN should be
* multiple of 128 bytes. So we align TDBA/RDBA on 128 byte boundary. This will
@@ -272,7 +276,7 @@ struct tx_ring {
u32 me;
u32 msix;
u32 ims;
- bool watchdog_check;
+ int queue_status;
int watchdog_time;
struct em_dma_alloc txdma;
struct e1000_tx_desc *tx_base;
@@ -391,6 +395,7 @@ struct adapter {
struct rx_ring *rx_rings;
int num_rx_desc;
u32 rx_process_limit;
+ u32 rx_mbuf_sz;
/* Management and WOL features */
u32 wol;
@@ -400,11 +405,21 @@ struct adapter {
/* Multicast array memory */
u8 *mta;
- /* Info about the board itself */
- uint8_t link_active;
- uint16_t link_speed;
- uint16_t link_duplex;
- uint32_t smartspeed;
+ /*
+ ** Shadow VFTA table, this is needed because
+ ** the real vlan filter table gets cleared during
+ ** a soft reset and the driver needs to be able
+ ** to repopulate it.
+ */
+ u32 shadow_vfta[EM_VFTA_SIZE];
+
+ /* Info about the interface */
+ u8 link_active;
+ u16 link_speed;
+ u16 link_duplex;
+ u32 smartspeed;
+ u32 fc_setting;
+
struct em_int_delay_info tx_int_delay;
struct em_int_delay_info tx_abs_int_delay;
struct em_int_delay_info rx_int_delay;
OpenPOWER on IntegriCloud