diff options
author | sv141092 <none@none> | 2008-02-14 05:09:11 -0800 |
---|---|---|
committer | sv141092 <none@none> | 2008-02-14 05:09:11 -0800 |
commit | 6ad5fc39c6f3b123ae5588d60fc8dfe068e07bfc (patch) | |
tree | 03f023af07c072edeea3518c3b78324d6a084033 /usr/src | |
parent | 21fb627b6c515feaa2e056538281c0584bbaf430 (diff) | |
download | illumos-joyent-6ad5fc39c6f3b123ae5588d60fc8dfe068e07bfc.tar.gz |
6633239 e1000g: link flaps observed on Galaxy(X4100) systems running 64-bit kernel
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/io/e1000g/README | 5 | ||||
-rw-r--r-- | usr/src/uts/common/io/e1000g/e1000g_main.c | 18 | ||||
-rw-r--r-- | usr/src/uts/common/io/e1000g/e1000g_sw.h | 2 |
3 files changed, 22 insertions, 3 deletions
diff --git a/usr/src/uts/common/io/e1000g/README b/usr/src/uts/common/io/e1000g/README index 0880ae3807..bcd70bb376 100644 --- a/usr/src/uts/common/io/e1000g/README +++ b/usr/src/uts/common/io/e1000g/README @@ -561,3 +561,8 @@ Notes on packaging: This version has the following fix: 6648775 e1000g: pci8086,10be - e1000g[0]: Identify hardware failed +5.2.6 +====== + This version has the following fix: + 6633239 e1000g: link flaps observed on Galaxy(X4100) systems running 64-bit kernel + diff --git a/usr/src/uts/common/io/e1000g/e1000g_main.c b/usr/src/uts/common/io/e1000g/e1000g_main.c index d90857754f..e4aefe2620 100644 --- a/usr/src/uts/common/io/e1000g/e1000g_main.c +++ b/usr/src/uts/common/io/e1000g/e1000g_main.c @@ -46,9 +46,9 @@ #include "e1000g_sw.h" #include "e1000g_debug.h" -static char ident[] = "Intel PRO/1000 Ethernet 5.2.5"; +static char ident[] = "Intel PRO/1000 Ethernet 5.2.6"; static char e1000g_string[] = "Intel(R) PRO/1000 Network Connection"; -static char e1000g_version[] = "Driver Ver. 5.2.5"; +static char e1000g_version[] = "Driver Ver. 5.2.6"; /* * Proto types for DDI entry points @@ -2513,7 +2513,11 @@ e1000g_m_getcapab(void *arg, mac_capab_t cap, void *cap_data) case e1000_82572: case e1000_82573: case e1000_80003es2lan: - *txflags = HCKSUM_IPHDRCKSUM | HCKSUM_INET_PARTIAL; + if (Adapter->tx_hcksum_enabled) + *txflags = HCKSUM_IPHDRCKSUM | + HCKSUM_INET_PARTIAL; + else + return (B_FALSE); break; /* @@ -2695,6 +2699,14 @@ e1000g_get_conf(struct e1000g *Adapter) e1000g_get_prop(Adapter, "tx_recycle_num", MIN_TX_RECYCLE_NUM, MAX_TX_RECYCLE_NUM, DEFAULT_TX_RECYCLE_NUM); + + /* + * Hardware checksum enable/disable parameter + */ + Adapter->tx_hcksum_enabled = + e1000g_get_prop(Adapter, "tx_hcksum_enabled", + 0, 1, DEFAULT_TX_HCKSUM_ENABLE); + } /* diff --git a/usr/src/uts/common/io/e1000g/e1000g_sw.h b/usr/src/uts/common/io/e1000g/e1000g_sw.h index 95e4009e84..ba7f1f4a6f 100644 --- a/usr/src/uts/common/io/e1000g/e1000g_sw.h +++ b/usr/src/uts/common/io/e1000g/e1000g_sw.h @@ -166,6 +166,7 @@ extern "C" { /* which is normally 0x040 */ #define DEFAULT_TBI_COMPAT_ENABLE 1 /* Enable SBP workaround */ #define DEFAULT_MSI_ENABLE 1 /* MSI Enable */ +#define DEFAULT_TX_HCKSUM_ENABLE 1 /* Hardware checksum enable */ #define TX_DRAIN_TIME (200) /* # milliseconds xmit drain */ @@ -958,6 +959,7 @@ typedef struct e1000g { #endif boolean_t msi_enabled; + boolean_t tx_hcksum_enabled; int intr_type; int intr_cnt; int intr_cap; |