Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-7]: src Pull up following revision(s) (requested by msaitoh in ti...



details:   https://anonhg.NetBSD.org/src/rev/bcc563ddcc30
branches:  netbsd-7
changeset: 798506:bcc563ddcc30
user:      snj <snj%NetBSD.org@localhost>
date:      Fri Nov 07 21:34:56 2014 +0000

description:
Pull up following revision(s) (requested by msaitoh in ticket #190):
        sys/dev/pci/pcidevs                     1.1201-1.1202 via patch
        sys/dev/pci/if_wm.c                     1.291-1.301, 1.304, 1.306-1.307 via patch
        sys/dev/pci/if_wmreg.h                  1.61-1.65 via patch
        sys/dev/pci/if_wmvar.h                  1.21 via patch
        share/man/man4/wm.4                     1.31 via patch
- Add Internal SERDES mode support newer than or equal to 82575.
- Add new I218 devices.
- Add DH89xxCC device.
- Add some old devices.
- Fix a bug that wm_get_swsm_semaphore() timed out when attaching device on
  some machines.
- Fix a bug that the offset of alt MAC address is wrongly calculated to 0
  when alt MAC address function is really used. This bug does not appear
  as real bug if the same MAC address is written in the default location
  and alt MAC address's location.
- Don't print "failed to detect NVM bank" message.
- Delete 82580ER related code.
- Fix typo in comment.
- Fix debug message.
- Cleanup

diffstat:

 share/man/man4/wm.4    |    7 +-
 sys/dev/pci/if_wm.c    |  877 ++++++++++++++++++++++++++++++------------------
 sys/dev/pci/if_wmreg.h |  136 ++++---
 sys/dev/pci/if_wmvar.h |    3 +-
 sys/dev/pci/pcidevs    |   21 +-
 5 files changed, 647 insertions(+), 397 deletions(-)

diffs (truncated from 2122 to 300 lines):

diff -r 82c4b8e2966b -r bcc563ddcc30 share/man/man4/wm.4
--- a/share/man/man4/wm.4       Fri Nov 07 21:17:21 2014 +0000
+++ b/share/man/man4/wm.4       Fri Nov 07 21:34:56 2014 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: wm.4,v 1.30 2014/08/01 04:57:25 msaitoh Exp $
+.\"    $NetBSD: wm.4,v 1.30.2.1 2014/11/07 21:34:56 snj Exp $
 .\"
 .\" Copyright 2002, 2003 Wasabi Systems, Inc.
 .\" All rights reserved.
@@ -33,7 +33,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd August 1, 2014
+.Dd September 3, 2014
 .Dt WM 4
 .Os
 .Sh NAME
@@ -185,5 +185,4 @@
 driver was written by
 .An Jason R. Thorpe Aq Mt thorpej%wasabisystems.com@localhost .
 .Sh BUGS
-Some 82575 and newer controllers with internal SERDES are
-not currently supported.
+EEE (Energy Efficiency Ethernet) is not currently supported.
diff -r 82c4b8e2966b -r bcc563ddcc30 sys/dev/pci/if_wm.c
--- a/sys/dev/pci/if_wm.c       Fri Nov 07 21:17:21 2014 +0000
+++ b/sys/dev/pci/if_wm.c       Fri Nov 07 21:34:56 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_wm.c,v 1.289.2.1 2014/08/29 11:37:51 martin Exp $   */
+/*     $NetBSD: if_wm.c,v 1.289.2.2 2014/11/07 21:34:56 snj Exp $      */
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -73,7 +73,6 @@
  * TODO (in order of importance):
  *
  *     - Check XXX'ed comments
- *     - Internal SERDES mode newer than or equal to 82575.
  *     - EEE (Energy Efficiency Ethernet)
  *     - MSI/MSI-X
  *     - Virtual Function
@@ -82,7 +81,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.289.2.1 2014/08/29 11:37:51 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.289.2.2 2014/11/07 21:34:56 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -273,10 +272,11 @@
        int sc_bus_speed;               /* PCI/PCIX bus speed */
        int sc_pcixe_capoff;            /* PCI[Xe] capability reg offset */
 
-       const struct wm_product *sc_wmp; /* Pointer to the wm_product entry */
+       uint16_t sc_pcidevid;           /* PCI device ID */
        wm_chip_type sc_type;           /* MAC type */
        int sc_rev;                     /* MAC revision */
        wm_phy_type sc_phytype;         /* PHY type */
+       uint32_t sc_mediatype;          /* Media type (Copper, Fiber, SERDES)*/
        int sc_funcid;                  /* unit number of the chip (0 to 3) */
        int sc_flags;                   /* flags; see below */
        int sc_if_flags;                /* last if_flags */
@@ -287,7 +287,8 @@
        callout_t sc_tick_ch;           /* tick callout */
        bool sc_stopping;
 
-       int sc_ee_addrbits;             /* EEPROM address bits */
+       int sc_nvm_addrbits;            /* NVM address bits */
+       unsigned int sc_nvm_wordsize;           /* NVM word size */
        int sc_ich8_flash_base;
        int sc_ich8_flash_bank_size;
        int sc_nvm_k1_enabled;
@@ -545,7 +546,7 @@
 static int     wm_ifflags_cb(struct ethercom *);
 static int     wm_ioctl(struct ifnet *, u_long, void *);
 /* MAC address related */
-static int     wm_check_alt_mac_addr(struct wm_softc *);
+static uint16_t        wm_check_alt_mac_addr(struct wm_softc *);
 static int     wm_read_mac_addr(struct wm_softc *, uint8_t *);
 static void    wm_set_ral(struct wm_softc *, const uint8_t *, int);
 static uint32_t        wm_mchash(struct wm_softc *, const uint8_t *);
@@ -585,7 +586,7 @@
 
 /*
  * Media related.
- * GMII, SGMII, TBI (and SERDES)
+ * GMII, SGMII, TBI, SERDES and SFP.
  */
 /* GMII related */
 static void    wm_gmii_reset(struct wm_softc *);
@@ -622,18 +623,21 @@
 static int     wm_tbi_mediachange(struct ifnet *);
 static void    wm_tbi_set_linkled(struct wm_softc *);
 static void    wm_tbi_check_link(struct wm_softc *);
+/* SFP related */
+static int     wm_sfp_read_data_byte(struct wm_softc *, uint16_t, uint8_t *);
+static uint32_t        wm_sfp_get_media_type(struct wm_softc *);
 
 /*
  * NVM related.
  * Microwire, SPI (w/wo EERD) and Flash.
  */
-/* Both spi and uwire */
+/* Misc functions */
 static void    wm_eeprom_sendbits(struct wm_softc *, uint32_t, int);
 static void    wm_eeprom_recvbits(struct wm_softc *, uint32_t *, int);
+static int     wm_nvm_set_addrbits_size_eecd(struct wm_softc *);
 /* Microwire */
 static int     wm_nvm_read_uwire(struct wm_softc *, int, int, uint16_t *);
 /* SPI */
-static void    wm_set_spiaddrbits(struct wm_softc *);
 static int     wm_nvm_ready_spi(struct wm_softc *);
 static int     wm_nvm_read_spi(struct wm_softc *, int, int, uint16_t *);
 /* Using with EERD */
@@ -718,70 +722,72 @@
        pci_product_id_t        wmp_product;
        const char              *wmp_name;
        wm_chip_type            wmp_type;
-       int                     wmp_flags;
-#define        WMP_F_1000X             0x01
-#define        WMP_F_1000T             0x02
-#define        WMP_F_SERDES            0x04
+       uint32_t                wmp_flags;
+#define        WMP_F_UNKNOWN           0x00
+#define        WMP_F_FIBER             0x01
+#define        WMP_F_COPPER            0x02
+#define        WMP_F_SERDES            0x03 /* Internal SERDES */
+#define WMP_MEDIATYPE(x)       ((x) & 0x03)
 } wm_products[] = {
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82542,
          "Intel i82542 1000BASE-X Ethernet",
-         WM_T_82542_2_1,       WMP_F_1000X },
+         WM_T_82542_2_1,       WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82543GC_FIBER,
          "Intel i82543GC 1000BASE-X Ethernet",
-         WM_T_82543,           WMP_F_1000X },
+         WM_T_82543,           WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82543GC_COPPER,
          "Intel i82543GC 1000BASE-T Ethernet",
-         WM_T_82543,           WMP_F_1000T },
+         WM_T_82543,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82544EI_COPPER,
          "Intel i82544EI 1000BASE-T Ethernet",
-         WM_T_82544,           WMP_F_1000T },
+         WM_T_82544,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82544EI_FIBER,
          "Intel i82544EI 1000BASE-X Ethernet",
-         WM_T_82544,           WMP_F_1000X },
+         WM_T_82544,           WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82544GC_COPPER,
          "Intel i82544GC 1000BASE-T Ethernet",
-         WM_T_82544,           WMP_F_1000T },
+         WM_T_82544,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82544GC_LOM,
          "Intel i82544GC (LOM) 1000BASE-T Ethernet",
-         WM_T_82544,           WMP_F_1000T },
+         WM_T_82544,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82540EM,
          "Intel i82540EM 1000BASE-T Ethernet",
-         WM_T_82540,           WMP_F_1000T },
+         WM_T_82540,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82540EM_LOM,
          "Intel i82540EM (LOM) 1000BASE-T Ethernet",
-         WM_T_82540,           WMP_F_1000T },
+         WM_T_82540,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82540EP_LOM,
          "Intel i82540EP 1000BASE-T Ethernet",
-         WM_T_82540,           WMP_F_1000T },
+         WM_T_82540,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82540EP,
          "Intel i82540EP 1000BASE-T Ethernet",
-         WM_T_82540,           WMP_F_1000T },
+         WM_T_82540,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82540EP_LP,
          "Intel i82540EP 1000BASE-T Ethernet",
-         WM_T_82540,           WMP_F_1000T },
+         WM_T_82540,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82545EM_COPPER,
          "Intel i82545EM 1000BASE-T Ethernet",
-         WM_T_82545,           WMP_F_1000T },
+         WM_T_82545,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82545GM_COPPER,
          "Intel i82545GM 1000BASE-T Ethernet",
-         WM_T_82545_3,         WMP_F_1000T },
+         WM_T_82545_3,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82545GM_FIBER,
          "Intel i82545GM 1000BASE-X Ethernet",
-         WM_T_82545_3,         WMP_F_1000X },
+         WM_T_82545_3,         WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82545GM_SERDES,
          "Intel i82545GM Gigabit Ethernet (SERDES)",
@@ -789,27 +795,27 @@
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546EB_COPPER,
          "Intel i82546EB 1000BASE-T Ethernet",
-         WM_T_82546,           WMP_F_1000T },
+         WM_T_82546,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546EB_QUAD,
          "Intel i82546EB 1000BASE-T Ethernet",
-         WM_T_82546,           WMP_F_1000T },
+         WM_T_82546,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82545EM_FIBER,
          "Intel i82545EM 1000BASE-X Ethernet",
-         WM_T_82545,           WMP_F_1000X },
+         WM_T_82545,           WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546EB_FIBER,
          "Intel i82546EB 1000BASE-X Ethernet",
-         WM_T_82546,           WMP_F_1000X },
+         WM_T_82546,           WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_COPPER,
          "Intel i82546GB 1000BASE-T Ethernet",
-         WM_T_82546_3,         WMP_F_1000T },
+         WM_T_82546_3,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_FIBER,
          "Intel i82546GB 1000BASE-X Ethernet",
-         WM_T_82546_3,         WMP_F_1000X },
+         WM_T_82546_3,         WMP_F_FIBER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_SERDES,
          "Intel i82546GB Gigabit Ethernet (SERDES)",
@@ -817,63 +823,63 @@
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_QUAD_COPPER,
          "i82546GB quad-port Gigabit Ethernet",
-         WM_T_82546_3,         WMP_F_1000T },
+         WM_T_82546_3,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_QUAD_COPPER_KSP3,
          "i82546GB quad-port Gigabit Ethernet (KSP3)",
-         WM_T_82546_3,         WMP_F_1000T },
+         WM_T_82546_3,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82546GB_PCIE,
          "Intel PRO/1000MT (82546GB)",
-         WM_T_82546_3,         WMP_F_1000T },
+         WM_T_82546_3,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541EI,
          "Intel i82541EI 1000BASE-T Ethernet",
-         WM_T_82541,           WMP_F_1000T },
+         WM_T_82541,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541ER_LOM,
          "Intel i82541ER (LOM) 1000BASE-T Ethernet",
-         WM_T_82541,           WMP_F_1000T },
+         WM_T_82541,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541EI_MOBILE,
          "Intel i82541EI Mobile 1000BASE-T Ethernet",
-         WM_T_82541,           WMP_F_1000T },
+         WM_T_82541,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541ER,
          "Intel i82541ER 1000BASE-T Ethernet",
-         WM_T_82541_2,         WMP_F_1000T },
+         WM_T_82541_2,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541GI,
          "Intel i82541GI 1000BASE-T Ethernet",
-         WM_T_82541_2,         WMP_F_1000T },
+         WM_T_82541_2,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541GI_MOBILE,
          "Intel i82541GI Mobile 1000BASE-T Ethernet",
-         WM_T_82541_2,         WMP_F_1000T },
+         WM_T_82541_2,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82541PI,
          "Intel i82541PI 1000BASE-T Ethernet",
-         WM_T_82541_2,         WMP_F_1000T },
+         WM_T_82541_2,         WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82547EI,
          "Intel i82547EI 1000BASE-T Ethernet",
-         WM_T_82547,           WMP_F_1000T },
+         WM_T_82547,           WMP_F_COPPER },
 
        { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_82547EI_MOBILE,



Home | Main Index | Thread Index | Old Index