Mercurial > illumos > illumos-gate
changeset 10434:7a008d5633fc
6846262 T2000 fma shows fault.io.pciex.device-interr in snv_115
6870404 e1000g_reset can call e1000g_start after releasing dma resources
author | guoqing zhu - Sun Microsystems - Beijing China <Guoqing.Zhu@Sun.COM> |
---|---|
date | Tue, 01 Sep 2009 17:16:01 +0800 |
parents | 31c72988d7f4 |
children | a8086b52d48a |
files | usr/src/uts/common/io/e1000g/README usr/src/uts/common/io/e1000g/e1000g_main.c usr/src/uts/common/io/e1000g/e1000g_tx.c |
diffstat | 3 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/io/e1000g/README Mon Aug 31 23:25:09 2009 -0700 +++ b/usr/src/uts/common/io/e1000g/README Tue Sep 01 17:16:01 2009 +0800 @@ -682,3 +682,9 @@ ==== This version has the following fix: 6848586 rw_enter()/rw_exit() could be called on uninitialized rw lock + +5.3.12 +==== + This version has the following fix: + 6846262 T2000 fma shows fault.io.pciex.device-interr in snv_115 + 6870404 e1000g_reset can call e1000g_start after releasing dma resources
--- a/usr/src/uts/common/io/e1000g/e1000g_main.c Mon Aug 31 23:25:09 2009 -0700 +++ b/usr/src/uts/common/io/e1000g/e1000g_main.c Tue Sep 01 17:16:01 2009 +0800 @@ -46,7 +46,7 @@ static char ident[] = "Intel PRO/1000 Ethernet"; static char e1000g_string[] = "Intel(R) PRO/1000 Network Connection"; -static char e1000g_version[] = "Driver Ver. 5.3.11"; +static char e1000g_version[] = "Driver Ver. 5.3.12"; /* * Proto types for DDI entry points @@ -1965,6 +1965,11 @@ rw_enter(&Adapter->chip_lock, RW_WRITER); + if (!(Adapter->e1000g_state & E1000G_STARTED)) { + rw_exit(&Adapter->chip_lock); + return (B_TRUE); + } + e1000g_stop(Adapter, B_FALSE); if (e1000g_start(Adapter, B_FALSE) != DDI_SUCCESS) {
--- a/usr/src/uts/common/io/e1000g/e1000g_tx.c Mon Aug 31 23:25:09 2009 -0700 +++ b/usr/src/uts/common/io/e1000g/e1000g_tx.c Tue Sep 01 17:16:01 2009 +0800 @@ -1053,10 +1053,13 @@ if (desc_count == 0) { E1000G_DEBUG_STAT(tx_ring->stat_recycle_none); /* - * If the packet hasn't been sent out for seconds, + * If the packet hasn't been sent out for seconds and + * the transmitter is not under paused flowctrl condition, * the transmitter is considered to be stalled. */ - if (delta > Adapter->stall_threshold) { + if ((delta > Adapter->stall_threshold) && + !(E1000_READ_REG(&Adapter->shared, + E1000_STATUS) & E1000_STATUS_TXOFF)) { Adapter->stall_flag = B_TRUE; } return (0);