Module Name:    src
Committed By:   msaitoh
Date:           Thu Oct 17 09:13:48 UTC 2019

Modified Files:
        src/share/man/man4: alc.4
        src/sys/dev/pci: if_alc.c if_alcreg.h

Log Message:
 Add support for Killer E2400 and E2500.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/share/man/man4/alc.4
cvs rdiff -u -r1.41 -r1.42 src/sys/dev/pci/if_alc.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/pci/if_alcreg.h

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

Modified files:

Index: src/share/man/man4/alc.4
diff -u src/share/man/man4/alc.4:1.5 src/share/man/man4/alc.4:1.6
--- src/share/man/man4/alc.4:1.5	Mon Jan 19 11:53:59 2015
+++ src/share/man/man4/alc.4	Thu Oct 17 09:13:48 2019
@@ -1,4 +1,4 @@
-.\"	$NetBSD: alc.4,v 1.5 2015/01/19 11:53:59 wiz Exp $
+.\"	$NetBSD: alc.4,v 1.6 2019/10/17 09:13:48 msaitoh Exp $
 .\"
 .\" Copyright (c) 2009 Kevin Lo <ke...@openbsd.org>
 .\"
@@ -14,12 +14,12 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd January 18, 2015
+.Dd October 16, 2019
 .Dt ALC 4
 .Os
 .Sh NAME
 .Nm alc
-.Nd Atheros AR813x/AR815x/AR816x/AR817x Ethernet device
+.Nd Atheros AR813x/AR815x/AR816x/AR817x Killer E2200/2400/2500 Ethernet device
 .Sh SYNOPSIS
 .Cd "alc* at pci?"
 .Cd "atphy* at mii?"
@@ -27,7 +27,8 @@
 The
 .Nm
 driver provides support for Ethernet interfaces based on the
-Atheros AR813x/AR815x/AR816x/AR817x Gigabit/Fast Ethernet chipsets.
+Atheros AR813x/AR815x/AR816x/AR817x Gigabit/Fast Ethernet chipsets and
+Killer E2200/2400/2500 Ethernet chipsets.
 .Pp
 The following
 .Ar media

Index: src/sys/dev/pci/if_alc.c
diff -u src/sys/dev/pci/if_alc.c:1.41 src/sys/dev/pci/if_alc.c:1.42
--- src/sys/dev/pci/if_alc.c:1.41	Thu Oct 17 09:12:12 2019
+++ src/sys/dev/pci/if_alc.c	Thu Oct 17 09:13:48 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_alc.c,v 1.41 2019/10/17 09:12:12 msaitoh Exp $	*/
+/*	$NetBSD: if_alc.c,v 1.42 2019/10/17 09:13:48 msaitoh Exp $	*/
 /*	$OpenBSD: if_alc.c,v 1.1 2009/08/08 09:31:13 kevlo Exp $	*/
 /*-
  * Copyright (c) 2009, Pyun YongHyeon <yong...@freebsd.org>
@@ -101,6 +101,10 @@ static struct alc_ident alc_ident_table[
 		"Atheros AR8172 PCIe Fast Ethernet" },
 	{ PCI_VENDOR_ATTANSIC, PCI_PRODUCT_ATTANSIC_E2200, 9 * 1024,
 		"Killer E2200 Gigabit Ethernet" },
+	{ PCI_VENDOR_ATTANSIC, PCI_PRODUCT_ATTANSIC_E2400, 9 * 1024,
+		"Killer E2400 Gigabit Ethernet" },
+	{ PCI_VENDOR_ATTANSIC, PCI_PRODUCT_ATTANSIC_E2500, 9 * 1024,
+		"Killer E2500 Gigabit Ethernet" },
 	{ 0, 0, 0, NULL },
 };
 
@@ -1002,6 +1006,8 @@ alc_phy_down(struct alc_softc *sc)
 	switch (sc->alc_ident->deviceid) {
 	case PCI_PRODUCT_ATTANSIC_AR8161:
 	case PCI_PRODUCT_ATTANSIC_E2200:
+	case PCI_PRODUCT_ATTANSIC_E2400:
+	case PCI_PRODUCT_ATTANSIC_E2500:
 	case PCI_PRODUCT_ATTANSIC_AR8162:
 	case PCI_PRODUCT_ATTANSIC_AR8171:
 	case PCI_PRODUCT_ATTANSIC_AR8172:
@@ -1342,7 +1348,13 @@ alc_attach(device_t parent, device_t sel
 			sc->alc_dma_rd_burst = 3;
 		if (alc_dma_burst[sc->alc_dma_wr_burst] > 1024)
 			sc->alc_dma_wr_burst = 3;
-
+		/*
+		 * Force maximum payload size to 128 bytes for
+		 * E2200/E2400/E2500.
+		 * Otherwise it triggers DMA write error.
+		 */
+		if ((sc->alc_flags & ALC_FLAG_E2X00) != 0)
+			sc->alc_dma_wr_burst = 0;
 		alc_init_pcie(sc);
 	}
 
@@ -1361,13 +1373,17 @@ alc_attach(device_t parent, device_t sel
 	 * shows the same PHY model/revision number of AR8131.
 	 */
 	switch (sc->alc_ident->deviceid) {
+	case PCI_PRODUCT_ATTANSIC_E2200:
+	case PCI_PRODUCT_ATTANSIC_E2400:
+	case PCI_PRODUCT_ATTANSIC_E2500:
+		sc->alc_flags |= ALC_FLAG_E2X00;
+		/* FALLTHROUGH */
 	case PCI_PRODUCT_ATTANSIC_AR8161:
 		if (PCI_SUBSYS_ID(pci_conf_read(
 		   sc->sc_pct, sc->sc_pcitag, PCI_SUBSYS_ID_REG)) == 0x0091 &&
 		   sc->alc_rev == 0)
 			sc->alc_flags |= ALC_FLAG_LINK_WAR;
 		/* FALLTHROUGH */
-	case PCI_PRODUCT_ATTANSIC_E2200:
 	case PCI_PRODUCT_ATTANSIC_AR8171:
 		sc->alc_flags |= ALC_FLAG_AR816X_FAMILY;
 		break;

Index: src/sys/dev/pci/if_alcreg.h
diff -u src/sys/dev/pci/if_alcreg.h:1.7 src/sys/dev/pci/if_alcreg.h:1.8
--- src/sys/dev/pci/if_alcreg.h:1.7	Tue Sep  3 14:29:26 2019
+++ src/sys/dev/pci/if_alcreg.h	Thu Oct 17 09:13:48 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_alcreg.h,v 1.7 2019/09/03 14:29:26 msaitoh Exp $	*/
+/*	$NetBSD: if_alcreg.h,v 1.8 2019/10/17 09:13:48 msaitoh Exp $	*/
 /*	$OpenBSD: if_alcreg.h,v 1.1 2009/08/08 09:31:13 kevlo Exp $	*/
 /*-
  * Copyright (c) 2009, Pyun YongHyeon <yong...@freebsd.org>
@@ -1475,7 +1475,8 @@ struct alc_softc {
 #define	ALC_FLAG_APS		0x1000
 #define	ALC_FLAG_AR816X_FAMILY	0x2000
 #define	ALC_FLAG_LINK_WAR	0x4000
-#define	ALC_FLAG_LINK		0x8000
+#define	ALC_FLAG_E2X00		0x8000
+#define	ALC_FLAG_LINK		0x10000
 
 	callout_t		sc_tick_ch;
 	struct alc_hw_stats	alc_stats;

Reply via email to