Module Name:    src
Committed By:   nisimura
Date:           Sat Dec 14 04:12:50 UTC 2019

Modified Files:
        src/sys/dev/pci: if_kse.c

Log Message:
use FC enable bit for 8842 host port


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/sys/dev/pci/if_kse.c

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_kse.c
diff -u src/sys/dev/pci/if_kse.c:1.45 src/sys/dev/pci/if_kse.c:1.46
--- src/sys/dev/pci/if_kse.c:1.45	Thu Dec 12 12:00:06 2019
+++ src/sys/dev/pci/if_kse.c	Sat Dec 14 04:12:49 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_kse.c,v 1.45 2019/12/12 12:00:06 nisimura Exp $	*/
+/*	$NetBSD: if_kse.c,v 1.46 2019/12/14 04:12:49 nisimura Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.45 2019/12/12 12:00:06 nisimura Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.46 2019/12/14 04:12:49 nisimura Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -91,6 +91,9 @@ __KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1
 #define MARH	0x204	/* MAC address high */
 #define GRR	0x216	/* global reset */
 #define SIDER	0x400	/* switch ID and function enable */
+#define SGCR3	0x406	/* switch function control 3 */
+#define  CR3_USEHDX	(1U<<6)	/* use half-duplex 8842 host port */
+#define  CR3_USEFC	(1U<<5) /* use flowcontrol 8842 host port */
 #define IACR	0x4a0	/* indirect access control */
 #define IADR1	0x4a2	/* indirect access data 66:63 */
 #define IADR2	0x4a4	/* indirect access data 47:32 */
@@ -145,6 +148,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1
 #define INT_DMTS	(1U<<30)	/* sending desc. has posted Tx done */
 #define INT_DMRS	(1U<<29)	/* frame was received */
 #define INT_DMRBUS	(1U<<27)	/* Rx descriptor pool is full */
+#define INT_DMxPSS	(3U<<25)	/* 26:25 DMA Tx/Rx have stopped */
 
 #define T0_OWN		(1U<<31)	/* desc is ready to Tx */
 
@@ -825,6 +829,8 @@ kse_init(struct ifnet *ifp)
 	if (sc->sc_chip == 0x8842) {
 		sc->sc_txc |= TXC_FCE;
 		sc->sc_rxc |= RXC_FCE;
+		CSR_WRITE_2(sc, SGCR3,
+		    CSR_READ_2(sc, SGCR3) | CR3_USEFC);
 	}
 
 	/* build multicast hash filter if necessary */

Reply via email to