Module Name:    src
Committed By:   martin
Date:           Thu Mar  7 17:11:53 UTC 2019

Modified Files:
        src/sys/dev/pci [netbsd-8]: if_wm.c if_wmreg.h if_wmvar.h

Log Message:
Pull up the following, requested by msaitoh in ticket #1206:

        sys/dev/pci/if_wmreg.h                  1.113
        sys/dev/pci/if_wmvar.h                  1.43-1.44
        sys/dev/pci/if_wm.c                     1.626-1.627, 1.629-1.636 via 
patch

- Add support for I210 SGMII Flash-less device.
- Add I219 variations for Cannon Lake.
- Add missing rnd_detach_source().
- Use  do { ... } while (0) for DPRINTF(x, y).
- Swap enumeration of 82578 and 82577 PHY in if_wmvar.h. No functional
  change.
- Add KASSERT.
- Update TODO list. Add comment. Fix typo in comment.


To generate a diff of this commit:
cvs rdiff -u -r1.508.4.30 -r1.508.4.31 src/sys/dev/pci/if_wm.c
cvs rdiff -u -r1.98.6.7 -r1.98.6.8 src/sys/dev/pci/if_wmreg.h
cvs rdiff -u -r1.33.6.4 -r1.33.6.5 src/sys/dev/pci/if_wmvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/if_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.508.4.30 src/sys/dev/pci/if_wm.c:1.508.4.31
--- src/sys/dev/pci/if_wm.c:1.508.4.30	Mon Feb 11 13:44:34 2019
+++ src/sys/dev/pci/if_wm.c	Thu Mar  7 17:11:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wm.c,v 1.508.4.30 2019/02/11 13:44:34 martin Exp $	*/
+/*	$NetBSD: if_wm.c,v 1.508.4.31 2019/03/07 17:11:53 martin Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -79,11 +79,10 @@
  *	- Virtual Function
  *	- Set LED correctly (based on contents in EEPROM)
  *	- Rework how parameters are loaded from the EEPROM.
- *	- Image Unique ID
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.30 2019/02/11 13:44:34 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.31 2019/03/07 17:11:53 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -157,7 +156,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.
 int	wm_debug = WM_DEBUG_TX | WM_DEBUG_RX | WM_DEBUG_LINK | WM_DEBUG_GMII
     | WM_DEBUG_MANAGE | WM_DEBUG_NVM | WM_DEBUG_INIT | WM_DEBUG_LOCK;
 
-#define	DPRINTF(x, y)	if (wm_debug & (x)) printf y
+#define	DPRINTF(x, y)	do { if (wm_debug & (x)) printf y; } while (0)
 #else
 #define	DPRINTF(x, y)	__nothing
 #endif /* WM_DEBUG */
@@ -1465,7 +1464,7 @@ static const struct wm_product {
 	  WM_T_I210,		WMP_F_COPPER },
 
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I210_COPPER_WOF,
-	  "I210 Ethernet (FLASH less)",
+	  "I210 Ethernet (Copper, FLASH less)",
 	  WM_T_I210,		WMP_F_COPPER },
 
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I210_FIBER,
@@ -1477,13 +1476,17 @@ static const struct wm_product {
 	  WM_T_I210,		WMP_F_SERDES },
 
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I210_SERDES_WOF,
-	  "I210 Gigabit Ethernet (FLASH less)",
+	  "I210 Gigabit Ethernet (SERDES, FLASH less)",
 	  WM_T_I210,		WMP_F_SERDES },
 
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I210_SGMII,
 	  "I210 Gigabit Ethernet (SGMII)",
 	  WM_T_I210,		WMP_F_COPPER },
 
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I210_SGMII_WOF,
+	  "I210 Gigabit Ethernet (SGMII, FLASH less)",
+	  WM_T_I210,		WMP_F_COPPER },
+
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I211_COPPER,
 	  "I211 Ethernet (COPPER)",
 	  WM_T_I211,		WMP_F_COPPER },
@@ -1511,18 +1514,6 @@ static const struct wm_product {
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I218_LM3,
 	  "I218 LM Ethernet Connection",
 	  WM_T_PCH_LPT,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V,
-	  "I219 V Ethernet Connection",
-	  WM_T_PCH_SPT,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V2,
-	  "I219 V Ethernet Connection",
-	  WM_T_PCH_SPT,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V4,
-	  "I219 V Ethernet Connection",
-	  WM_T_PCH_SPT,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V5,
-	  "I219 V Ethernet Connection",
-	  WM_T_PCH_SPT,		WMP_F_COPPER },
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM,
 	  "I219 LM Ethernet Connection",
 	  WM_T_PCH_SPT,		WMP_F_COPPER },
@@ -1538,17 +1529,41 @@ static const struct wm_product {
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM5,
 	  "I219 LM Ethernet Connection",
 	  WM_T_PCH_SPT,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM6,
+	  "I219 LM Ethernet Connection",
+	  WM_T_PCH_CNP,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM7,
+	  "I219 LM Ethernet Connection",
+	  WM_T_PCH_CNP,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM8,
+	  "I219 LM Ethernet Connection",
+	  WM_T_PCH_CNP,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM9,
+	  "I219 LM Ethernet Connection",
+	  WM_T_PCH_CNP,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V,
+	  "I219 V Ethernet Connection",
+	  WM_T_PCH_SPT,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V2,
+	  "I219 V Ethernet Connection",
+	  WM_T_PCH_SPT,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V4,
+	  "I219 V Ethernet Connection",
+	  WM_T_PCH_SPT,		WMP_F_COPPER },
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V5,
+	  "I219 V Ethernet Connection",
+	  WM_T_PCH_SPT,		WMP_F_COPPER },
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V6,
 	  "I219 V Ethernet Connection",
 	  WM_T_PCH_CNP,		WMP_F_COPPER },
 	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V7,
 	  "I219 V Ethernet Connection",
 	  WM_T_PCH_CNP,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM6,
-	  "I219 LM Ethernet Connection",
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V8,
+	  "I219 V Ethernet Connection",
 	  WM_T_PCH_CNP,		WMP_F_COPPER },
-	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_LM7,
-	  "I219 LM Ethernet Connection",
+	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_I219_V9,
+	  "I219 V Ethernet Connection",
 	  WM_T_PCH_CNP,		WMP_F_COPPER },
 	{ 0,			0,
 	  NULL,
@@ -2968,6 +2983,8 @@ wm_detach(device_t self, int flags __unu
 	evcnt_detach(&sc->sc_ev_rx_macctl);
 #endif /* WM_EVENT_COUNTERS */
 
+	rnd_detach_source(&sc->rnd_source);
+
 	/* Tell the firmware about the release */
 	WM_CORE_LOCK(sc);
 	wm_release_manageability(sc);
@@ -13184,7 +13201,7 @@ wm_nvm_version(struct wm_softc *sc)
 	 *	82572EI	0x5069	5.6.9?
 	 *	82574L	0x1080	1.8.0?	(the spec update notes about 2.1.4)
 	 *		0x2013	2.1.3?
-	 *	82583	0x10a0	1.10.0? (document says it's default vaule)
+	 *	82583	0x10a0	1.10.0? (document says it's default value)
 	 */
 
 	/*
@@ -14849,6 +14866,8 @@ wm_set_eee_i350(struct wm_softc *sc)
 {
 	uint32_t ipcnfg, eeer;
 
+	KASSERT(sc->sc_mediatype == WM_MEDIATYPE_COPPER);
+
 	ipcnfg = CSR_READ(sc, WMREG_IPCNFG);
 	eeer = CSR_READ(sc, WMREG_EEER);
 

Index: src/sys/dev/pci/if_wmreg.h
diff -u src/sys/dev/pci/if_wmreg.h:1.98.6.7 src/sys/dev/pci/if_wmreg.h:1.98.6.8
--- src/sys/dev/pci/if_wmreg.h:1.98.6.7	Thu Jan 31 06:43:48 2019
+++ src/sys/dev/pci/if_wmreg.h	Thu Mar  7 17:11:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmreg.h,v 1.98.6.7 2019/01/31 06:43:48 martin Exp $	*/
+/*	$NetBSD: if_wmreg.h,v 1.98.6.8 2019/03/07 17:11:53 martin Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -1492,7 +1492,7 @@ struct livengood_tcpip_ctxdesc {
 #define WM_INVM_DATA_REG(reg)	(0x12120 + 4*(reg))
 #define INVM_SIZE			64 /* Number of INVM Data Registers */
 
-/* iNVM default vaule */
+/* iNVM default value */
 #define NVM_INIT_CTRL_2_DEFAULT_I211	0x7243
 #define NVM_INIT_CTRL_4_DEFAULT_I211	0x00c1
 #define NVM_LED_1_CFG_DEFAULT_I211	0x0184

Index: src/sys/dev/pci/if_wmvar.h
diff -u src/sys/dev/pci/if_wmvar.h:1.33.6.4 src/sys/dev/pci/if_wmvar.h:1.33.6.5
--- src/sys/dev/pci/if_wmvar.h:1.33.6.4	Thu Jan 31 06:43:48 2019
+++ src/sys/dev/pci/if_wmvar.h	Thu Mar  7 17:11:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmvar.h,v 1.33.6.4 2019/01/31 06:43:48 martin Exp $	*/
+/*	$NetBSD: if_wmvar.h,v 1.33.6.5 2019/03/07 17:11:53 martin Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -160,19 +160,41 @@ typedef enum {
 	WM_T_PCH_CNP,			/* (I219) */
 } wm_chip_type;
 
+/*
+ * Variations of internal or external PHYs
+ *
+ *  +- 82562 - 8254[17] - 8257[12] - 82566
+ *  |
+ * -+------------------------------------->
+ *
+ *
+ *	  +---------------------------- I347 ----- E1512 ---- E1543
+ *	  |					     |
+ *	  |	       +--------------------------- I210 - I211
+ *	  |	       |
+ *	  |	       |			+-------------+--- 82580 - I350
+ *	  |	       |			|	      |
+ *	  |	       |  +- 578 - 577 - 579 - I217 - I218 - I219
+ *	  |	       |  |
+ *   +- 56[34] -- 567 -- 573
+ *   |		(E1149) (E1111)
+ *   |
+ *  -+----------------------------------------------------------------------->
+ */
+
 typedef enum {
 	WMPHY_UNKNOWN = 0,
 	WMPHY_NONE,
-	WMPHY_M88,
-	WMPHY_IGP,
-	WMPHY_IGP_2,
-	WMPHY_GG82563,	/* 82563: 80003 */
+	WMPHY_M88,	/* 88E1000: 8254[34], E1011: 8254[056], E1111: 82573 */
+	WMPHY_IGP,	/* 8254[17] */
+	WMPHY_IGP_2,	/* 8257[12] */
+	WMPHY_GG82563,	/* 8256[34]: 80003 */
 	WMPHY_IGP_3,	/* 82566: 82575, 82576, ICH8, ICH9 */
-	WMPHY_IFE,	/* 82562 */
+	WMPHY_IFE,	/* 82562: ICH8 ICH9 */
 	WMPHY_BM,	/* 82567: ICH8 ICH9 ICH10 */
-	WMPHY_82577,	/* 82577: PCH */
 	WMPHY_82578,	/* 82578: PCH */
-	WMPHY_82579,	/* 82579: PCH2 */
+	WMPHY_82577,	/* 82577: PCH (NOTE: functionality newer than 82578) */
+	WMPHY_82579,	/* 82579 : PCH2 */
 	WMPHY_I217,	/* I217:  _LPT, I218: _LPT, I219: _SPT _CNP */
 	WMPHY_82580,	/* 82580: 82580 or I350 */
 	WMPHY_VF,

Reply via email to