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,