diff options
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 | 7 | ||||
-rw-r--r-- | usr/src/uts/common/io/e1000g/e1000g_rx.c | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/e1000g/README b/usr/src/uts/common/io/e1000g/README index c38d8001d2..92761ffbae 100644 --- a/usr/src/uts/common/io/e1000g/README +++ b/usr/src/uts/common/io/e1000g/README @@ -644,3 +644,8 @@ Notes on packaging: 6699662 global e1000g rwlock prevents scaling on multiple interfaces 6781905 super slow throughput on e1000g 82541 and 82547 chips 6786783 e1000g needs to have a new tx stall detection mechanism to cover 82546 errata No.18 + +5.3.5 +====== + This version has the following fix: + 6732858 panic in e1000g_free_dma_buffer diff --git a/usr/src/uts/common/io/e1000g/e1000g_main.c b/usr/src/uts/common/io/e1000g/e1000g_main.c index c86ff3472a..6d9b4646d9 100644 --- a/usr/src/uts/common/io/e1000g/e1000g_main.c +++ b/usr/src/uts/common/io/e1000g/e1000g_main.c @@ -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.4"; +static char e1000g_version[] = "Driver Ver. 5.3.5"; /* * Proto types for DDI entry points @@ -5841,7 +5841,12 @@ e1000g_fm_fini(struct e1000g *Adapter) ddi_fm_handler_unregister(Adapter->dip); /* Unregister from IO Fault Services */ + mutex_enter(&e1000g_rx_detach_lock); ddi_fm_fini(Adapter->dip); + if (Adapter->priv_dip != NULL) { + DEVI(Adapter->priv_dip)->devi_fmhdl = NULL; + } + mutex_exit(&e1000g_rx_detach_lock); } } diff --git a/usr/src/uts/common/io/e1000g/e1000g_rx.c b/usr/src/uts/common/io/e1000g/e1000g_rx.c index 20180aa351..b70474446d 100644 --- a/usr/src/uts/common/io/e1000g/e1000g_rx.c +++ b/usr/src/uts/common/io/e1000g/e1000g_rx.c @@ -102,9 +102,9 @@ e1000g_rxfree_func(p_rx_sw_packet_t packet) ref_cnt = atomic_dec_32_nv(&packet->ref_cnt); if (ref_cnt == 0) { + mutex_enter(&e1000g_rx_detach_lock); e1000g_free_rx_sw_packet(packet, B_FALSE); - mutex_enter(&e1000g_rx_detach_lock); atomic_dec_32(&rx_data->pending_count); atomic_dec_32(&e1000g_mblks_pending); |