changeset 3170:ff80d4b3644b

6464581 assertion failed: bgep->bge_chip_state == BGE_CHIP_RESET 6480901 bge support for PCI ID 14e4,1654 6480903 bge support for PCI ID 14e4,1679 6487521 primary network does not come up after system resume from suspended state.
author ml149210
date Sun, 26 Nov 2006 16:30:59 -0800
parents 1dea14abfe17
children 6a9918e92494
files usr/src/pkgdefs/SUNWbge/postinstall usr/src/uts/common/io/bge/bge_chip2.c usr/src/uts/common/io/bge/bge_hw.h usr/src/uts/common/io/bge/bge_main2.c usr/src/uts/common/io/bge/bge_send.c
diffstat 5 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/pkgdefs/SUNWbge/postinstall	Sat Nov 25 11:05:17 2006 -0800
+++ b/usr/src/pkgdefs/SUNWbge/postinstall	Sun Nov 26 16:30:59 2006 -0800
@@ -148,6 +148,7 @@
 	"pci14e4,16a8"
 	"pci14e4,1649"
 	"pci14e4,1653"
+	"pci14e4,1654"
 	"pci14e4,1659"
 	"pci14e4,165d"
 	"pci14e4,165e"
@@ -158,6 +159,7 @@
 	"pci14e4,169c"
 	"pci14e4,1677"
 	"pci14e4,1678"
+	"pci14e4,1679"
 	"pci14e4,167d"
 	"pciex14e4,169d"' \
 	-b "$BASEDIR" bge
--- a/usr/src/uts/common/io/bge/bge_chip2.c	Sat Nov 25 11:05:17 2006 -0800
+++ b/usr/src/uts/common/io/bge/bge_chip2.c	Sun Nov 26 16:30:59 2006 -0800
@@ -1824,6 +1824,7 @@
 	case DEVICE_ID_5704:
 	case DEVICE_ID_5705M:
 	case DEVICE_ID_5705C:
+	case DEVICE_ID_5705_2:
 	case DEVICE_ID_5706:
 	case DEVICE_ID_5782:
 	case DEVICE_ID_5788:
@@ -1836,6 +1837,7 @@
 	case DEVICE_ID_5714C:
 	case DEVICE_ID_5714S:
 	case DEVICE_ID_5715C:
+	case DEVICE_ID_5715S:
 		config1 = bge_reg_get32(bgep, NVM_CONFIG1_REG);
 		if (config1 & NVM_CFG1_FLASH_MODE)
 			if (config1 & NVM_CFG1_BUFFERED_MODE)
@@ -1999,6 +2001,7 @@
 	case DEVICE_ID_5705M:
 	case DEVICE_ID_5705MA3:
 	case DEVICE_ID_5705F:
+	case DEVICE_ID_5705_2:
 		cidp->chip_label = 5705;
 		cidp->mbuf_lo_water_rdma = RDMA_MBUF_LOWAT_5705;
 		cidp->mbuf_lo_water_rmac = MAC_RX_MBUF_LOWAT_5705;
@@ -2079,6 +2082,7 @@
 		break;
 
 	case DEVICE_ID_5715C:
+	case DEVICE_ID_5715S:
 		cidp->chip_label = 5715;
 		cidp->mbuf_lo_water_rdma = RDMA_MBUF_LOWAT_5705;
 		cidp->mbuf_lo_water_rmac = MAC_RX_MBUF_LOWAT_5705;
@@ -3189,7 +3193,7 @@
 	if (sx0 != 0) {
 		BGE_REPORT((bgep, "SEND INDEX - device didn't RESET"));
 		bge_fm_ereport(bgep, DDI_FM_DEVICE_INVAL_STATE);
-		return (DDI_FAILURE);
+		retval = DDI_FAILURE;
 	}
 
 	/* Enable MSI code */
--- a/usr/src/uts/common/io/bge/bge_hw.h	Sat Nov 25 11:05:17 2006 -0800
+++ b/usr/src/uts/common/io/bge/bge_hw.h	Sun Nov 26 16:30:59 2006 -0800
@@ -65,6 +65,7 @@
 #define	DEVICE_ID_5704S			0x16a8
 #define	DEVICE_ID_5704			0x1649
 #define	DEVICE_ID_5705C			0x1653
+#define	DEVICE_ID_5705_2		0x1654
 #define	DEVICE_ID_5705M			0x165d
 #define	DEVICE_ID_5705MA3		0x165e
 #define	DEVICE_ID_5705F			0x166e
@@ -80,6 +81,7 @@
 #define	DEVICE_ID_5714C			0x1668
 #define	DEVICE_ID_5714S			0x1669
 #define	DEVICE_ID_5715C			0x1678
+#define	DEVICE_ID_5715S			0x1679
 
 #define	REVISION_ID_5700_B0		0x10
 #define	REVISION_ID_5700_B2		0x12
@@ -124,6 +126,9 @@
 #define	REVISION_ID_5715_A1		0x01
 #define	REVISION_ID_5715_A2		0xA2
 
+#define	REVISION_ID_5715S_A0		0x00
+#define	REVISION_ID_5715S_A1		0x01
+
 #define	DEVICE_5704_SERIES_CHIPSETS(bgep)\
 		((bgep->chipid.device == DEVICE_ID_5700) ||\
 		(bgep->chipid.device == DEVICE_ID_5701) ||\
@@ -146,7 +151,8 @@
 		(bgep->chipid.device == DEVICE_ID_5705MA3) ||\
 		(bgep->chipid.device == DEVICE_ID_5705F) ||\
 		(bgep->chipid.device == DEVICE_ID_5782) ||\
-		(bgep->chipid.device == DEVICE_ID_5788))
+		(bgep->chipid.device == DEVICE_ID_5788) ||\
+		(bgep->chipid.device == DEVICE_ID_5705_2))
 
 #define	DEVICE_5721_SERIES_CHIPSETS(bgep) \
 		((bgep->chipid.device == DEVICE_ID_5721) ||\
@@ -159,7 +165,8 @@
 #define	DEVICE_5714_SERIES_CHIPSETS(bgep) \
 		((bgep->chipid.device == DEVICE_ID_5714C) ||\
 		(bgep->chipid.device == DEVICE_ID_5714S) ||\
-		(bgep->chipid.device == DEVICE_ID_5715C))
+		(bgep->chipid.device == DEVICE_ID_5715C) ||\
+		(bgep->chipid.device == DEVICE_ID_5715S))
 
 /*
  * Second section:
@@ -239,6 +246,9 @@
 #define	MHCR_CHIP_REV_5715_A0		0x50000000
 #define	MHCR_CHIP_REV_5715_A1		0x90010000
 
+#define	MHCR_CHIP_REV_5715S_A0		0x50000000
+#define	MHCR_CHIP_REV_5715S_A1		0x90010000
+
 #define	MHCR_CHIP_ASIC_REV(ChipRevId)	((ChipRevId) & 0xf0000000)
 #define	MHCR_CHIP_ASIC_REV_5700		(0x7 << 28)
 #define	MHCR_CHIP_ASIC_REV_5701		(0x0 << 28)
--- a/usr/src/uts/common/io/bge/bge_main2.c	Sat Nov 25 11:05:17 2006 -0800
+++ b/usr/src/uts/common/io/bge/bge_main2.c	Sun Nov 26 16:30:59 2006 -0800
@@ -33,7 +33,7 @@
  * This is the string displayed by modinfo, etc.
  * Make sure you keep the version ID up to date!
  */
-static char bge_ident[] = "Broadcom Gb Ethernet v0.52";
+static char bge_ident[] = "Broadcom Gb Ethernet v0.53";
 
 /*
  * Property names
--- a/usr/src/uts/common/io/bge/bge_send.c	Sat Nov 25 11:05:17 2006 -0800
+++ b/usr/src/uts/common/io/bge/bge_send.c	Sun Nov 26 16:30:59 2006 -0800
@@ -532,12 +532,13 @@
 	ASSERT(mp != NULL);
 	ASSERT(bgep->bge_mac_state == BGE_MAC_STARTED);
 
+	rw_enter(bgep->errlock, RW_READER);
 	if (bgep->bge_chip_state != BGE_CHIP_RUNNING) {
 		BGE_DEBUG(("bge_m_tx: chip not running"));
-		return (mp);
+		freemsgchain(mp);
+		mp = NULL;
 	}
 
-	rw_enter(bgep->errlock, RW_READER);
 	while (mp != NULL) {
 		next = mp->b_next;
 		mp->b_next = NULL;