summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/e1000g/README5
-rw-r--r--usr/src/uts/common/io/e1000g/e1000g_main.c7
-rw-r--r--usr/src/uts/common/io/e1000g/e1000g_rx.c2
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);