CVS commit: [netbsd-6] src/sys/dev/marvell

2013-01-07 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Mon Jan  7 16:45:30 UTC 2013

Modified Files:
src/sys/dev/marvell [netbsd-6]: if_mvgbe.c

Log Message:
Pull up following revision(s) (requested by msaitoh in ticket #775):
sys/dev/marvell/if_mvgbe.c: revision 1.34
Fix a bug that a multicast filter entry is incorrectly overrode
on some cases.


To generate a diff of this commit:
cvs rdiff -u -r1.16.2.2 -r1.16.2.3 src/sys/dev/marvell/if_mvgbe.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/marvell/if_mvgbe.c
diff -u src/sys/dev/marvell/if_mvgbe.c:1.16.2.2 src/sys/dev/marvell/if_mvgbe.c:1.16.2.3
--- src/sys/dev/marvell/if_mvgbe.c:1.16.2.2	Sat Jan  5 23:32:27 2013
+++ src/sys/dev/marvell/if_mvgbe.c	Mon Jan  7 16:45:30 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvgbe.c,v 1.16.2.2 2013/01/05 23:32:27 riz Exp $	*/
+/*	$NetBSD: if_mvgbe.c,v 1.16.2.3 2013/01/07 16:45:30 riz Exp $	*/
 /*
  * Copyright (c) 2007, 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -25,7 +25,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16.2.2 2013/01/05 23:32:27 riz Exp $);
+__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16.2.3 2013/01/07 16:45:30 riz Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -1966,11 +1966,11 @@ mvgbe_filter_setup(struct mvgbe_softc *s
 		/* chip handles some IPv4 multicast specially */
 		if (memcmp(enm-enm_addrlo, special, 5) == 0) {
 			i = enm-enm_addrlo[5];
-			dfsmt[i2] =
+			dfsmt[i2] |=
 			MVGBE_DF(i3, MVGBE_DF_QUEUE(0) | MVGBE_DF_PASS);
 		} else {
 			i = mvgbe_crc8(enm-enm_addrlo, ETHER_ADDR_LEN);
-			dfomt[i2] =
+			dfomt[i2] |=
 			MVGBE_DF(i3, MVGBE_DF_QUEUE(0) | MVGBE_DF_PASS);
 		}
 



CVS commit: [netbsd-6] src/sys/dev/marvell

2013-01-05 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Sat Jan  5 23:32:28 UTC 2013

Modified Files:
src/sys/dev/marvell [netbsd-6]: if_mvgbe.c

Log Message:
Pull up following revision(s) (requested by msaitoh in ticket #766):
sys/dev/marvell/if_mvgbe.c: revision 1.33
Check wheter an MII PHY is really connected or not.
This change privents panic if MII PHY port is not used.


To generate a diff of this commit:
cvs rdiff -u -r1.16.2.1 -r1.16.2.2 src/sys/dev/marvell/if_mvgbe.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/marvell/if_mvgbe.c
diff -u src/sys/dev/marvell/if_mvgbe.c:1.16.2.1 src/sys/dev/marvell/if_mvgbe.c:1.16.2.2
--- src/sys/dev/marvell/if_mvgbe.c:1.16.2.1	Tue Nov 20 22:26:03 2012
+++ src/sys/dev/marvell/if_mvgbe.c	Sat Jan  5 23:32:27 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvgbe.c,v 1.16.2.1 2012/11/20 22:26:03 riz Exp $	*/
+/*	$NetBSD: if_mvgbe.c,v 1.16.2.2 2013/01/05 23:32:27 riz Exp $	*/
 /*
  * Copyright (c) 2007, 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -25,7 +25,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16.2.1 2012/11/20 22:26:03 riz Exp $);
+__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16.2.2 2013/01/05 23:32:27 riz Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -398,7 +398,9 @@ mvgbec_attach(device_t parent, device_t 
 			if (child) {
 port = device_private(child);
 mii  = LIST_FIRST(port-sc_mii.mii_phys);
-phyaddr |= MVGBE_PHYADDR_PHYAD(j, mii-mii_phy);
+if (mii != NULL)
+	phyaddr |= MVGBE_PHYADDR_PHYAD(j,
+	mii-mii_phy);
 			}
 		}
 		break;



CVS commit: [netbsd-6] src/sys/dev/marvell

2012-11-24 Thread Julian Coleman
Module Name:src
Committed By:   jdc
Date:   Sat Nov 24 18:10:10 UTC 2012

Modified Files:
src/sys/dev/marvell [netbsd-6]: mvgbereg.h

Log Message:
Apply patch from msaitoh to fix pullup-6 #671.


To generate a diff of this commit:
cvs rdiff -u -r1.3.10.1 -r1.3.10.2 src/sys/dev/marvell/mvgbereg.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/marvell/mvgbereg.h
diff -u src/sys/dev/marvell/mvgbereg.h:1.3.10.1 src/sys/dev/marvell/mvgbereg.h:1.3.10.2
--- src/sys/dev/marvell/mvgbereg.h:1.3.10.1	Tue Nov 20 22:26:03 2012
+++ src/sys/dev/marvell/mvgbereg.h	Sat Nov 24 18:10:10 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: mvgbereg.h,v 1.3.10.1 2012/11/20 22:26:03 riz Exp $	*/
+/*	$NetBSD: mvgbereg.h,v 1.3.10.2 2012/11/24 18:10:10 jdc Exp $	*/
 /*
  * Copyright (c) 2007 KIYOHARA Takashi
  * All rights reserved.
@@ -34,9 +34,6 @@
 
 #define MVGBE_PHY_TIMEOUT	1	/* msec */
 
-#define MVGBE_RX_CSUM_MIN_BYTE	72
-
-
 /*
  * Ethernet Unit Registers
  */



CVS commit: [netbsd-6] src/sys/dev/marvell

2012-11-20 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Tue Nov 20 22:26:03 UTC 2012

Modified Files:
src/sys/dev/marvell [netbsd-6]: if_mvgbe.c mvgbereg.h

Log Message:
Apply patch (requested by msaitoh in ticket #671):

sys/dev/marvell/if_mvgbe.c  1.19-1.23, 1.26-1.31
sys/dev/marvell/mvgbereg.h  1.4-1.5, 1.7

Add missing bus_dmamap_sync() for the RX buffer.
Fix device timeout problem.
Fix broken hardware checksumming.
Fix a bug that kernel panics when the system get a packet while calling
mvgbe_stop (via ifconfig down).
Add missing mii_tick() call.
Change style a bit.
Don't use M_HASFCS flag.
When an interrput is link change, notify link change to mii layer using
mii_pollstat().
Fix a bug that the alignment of jumbo buffer(MVGBE_JLEN) is miscalculated.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.16.2.1 src/sys/dev/marvell/if_mvgbe.c
cvs rdiff -u -r1.3 -r1.3.10.1 src/sys/dev/marvell/mvgbereg.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/marvell/if_mvgbe.c
diff -u src/sys/dev/marvell/if_mvgbe.c:1.16 src/sys/dev/marvell/if_mvgbe.c:1.16.2.1
--- src/sys/dev/marvell/if_mvgbe.c:1.16	Thu Feb  2 19:43:04 2012
+++ src/sys/dev/marvell/if_mvgbe.c	Tue Nov 20 22:26:03 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvgbe.c,v 1.16 2012/02/02 19:43:04 tls Exp $	*/
+/*	$NetBSD: if_mvgbe.c,v 1.16.2.1 2012/11/20 22:26:03 riz Exp $	*/
 /*
  * Copyright (c) 2007, 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -25,13 +25,15 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16 2012/02/02 19:43:04 tls Exp $);
+__KERNEL_RCSID(0, $NetBSD: if_mvgbe.c,v 1.16.2.1 2012/11/20 22:26:03 riz Exp $);
 
 #include sys/param.h
 #include sys/bus.h
+#include sys/callout.h
 #include sys/device.h
 #include sys/endian.h
 #include sys/errno.h
+#include sys/kernel.h
 #include sys/kmem.h
 #include sys/mutex.h
 #include sys/sockio.h
@@ -89,7 +91,9 @@ CTASSERT(MVGBE_RX_RING_CNT  1  MVGBE_
 	(MVGBE_RX_RING_CNT + 1) % MVGBE_RX_RING_CNT);
 
 #define MVGBE_JSLOTS		384	/*  */
-#define MVGBE_JLEN		((MVGBE_MRU + MVGBE_RXBUF_ALIGN)~MVGBE_RXBUF_MASK)
+#define MVGBE_JLEN \
+((MVGBE_MRU + MVGBE_HWHEADER_SIZE + MVGBE_RXBUF_ALIGN - 1)  \
+~MVGBE_RXBUF_MASK)
 #define MVGBE_NTXSEG		30
 #define MVGBE_JPAGESZ		PAGE_SIZE
 #define MVGBE_RESID \
@@ -195,17 +199,20 @@ struct mvgbe_softc {
 
 	bus_space_tag_t sc_iot;
 	bus_space_handle_t sc_ioh;
-	bus_space_handle_t sc_dafh;		/* dest address filter handle */
+	bus_space_handle_t sc_dafh;	/* dest address filter handle */
 	bus_dma_tag_t sc_dmat;
 
 	struct ethercom sc_ethercom;
 	struct mii_data sc_mii;
 	u_int8_t sc_enaddr[ETHER_ADDR_LEN];	/* station addr */
 
+	callout_t sc_tick_ch;		/* tick callout */
+
 	struct mvgbe_chain_data sc_cdata;
 	struct mvgbe_ring_data *sc_rdata;
 	bus_dmamap_t sc_ring_map;
 	int sc_if_flags;
+	int sc_wdogsoft;
 
 	LIST_HEAD(__mvgbe_jfreehead, mvgbe_jpool_entry) sc_jfree_listhead;
 	LIST_HEAD(__mvgbe_jinusehead, mvgbe_jpool_entry) sc_jinuse_listhead;
@@ -235,6 +242,7 @@ static void mvgbec_wininit(struct mvgbec
 static int mvgbe_match(device_t, struct cfdata *, void *);
 static void mvgbe_attach(device_t, device_t, void *);
 
+static void mvgbe_tick(void *);
 static int mvgbe_intr(void *);
 
 static void mvgbe_start(struct ifnet *);
@@ -336,7 +344,7 @@ mvgbec_match(device_t parent, cfdata_t m
 static void
 mvgbec_attach(device_t parent, device_t self, void *aux)
 {
-	struct mvgbec_softc *sc = device_private(self);
+	struct mvgbec_softc *csc = device_private(self);
 	struct marvell_attach_args *mva = aux, gbea;
 	struct mvgbe_softc *port;
 	struct mii_softc *mii;
@@ -347,10 +355,10 @@ mvgbec_attach(device_t parent, device_t 
 	aprint_naive(\n);
 	aprint_normal(: Marvell Gigabit Ethernet Controller\n);
 
-	sc-sc_dev = self;
-	sc-sc_iot = mva-mva_iot;
+	csc-sc_dev = self;
+	csc-sc_iot = mva-mva_iot;
 	if (bus_space_subregion(mva-mva_iot, mva-mva_ioh, mva-mva_offset,
-	mva-mva_size, sc-sc_ioh)) {
+	mva-mva_size, csc-sc_ioh)) {
 		aprint_error_dev(self, Cannot map registers\n);
 		return;
 	}
@@ -359,15 +367,15 @@ mvgbec_attach(device_t parent, device_t 
 		mvgbec0 = self;
 		
 	phyaddr = 0;
-	MVGBE_WRITE(sc, MVGBE_PHYADDR, phyaddr);
+	MVGBE_WRITE(csc, MVGBE_PHYADDR, phyaddr);
 
-	mutex_init(sc-sc_mtx, MUTEX_DEFAULT, IPL_NET);
+	mutex_init(csc-sc_mtx, MUTEX_DEFAULT, IPL_NET);
 
 	/* Disable and clear Gigabit Ethernet Unit interrupts */
-	MVGBE_WRITE(sc, MVGBE_EUIM, 0);
-	MVGBE_WRITE(sc, MVGBE_EUIC, 0);
+	MVGBE_WRITE(csc, MVGBE_EUIM, 0);
+	MVGBE_WRITE(csc, MVGBE_EUIC, 0);
 
-	mvgbec_wininit(sc);
+	mvgbec_wininit(csc);
 
 	memset(gbea, 0, sizeof(gbea));
 	for (i = 0; i  __arraycount(mvgbe_ports); i++) {
@@ -375,17 +383,17 @@ mvgbec_attach(device_t parent, device_t 
 		mvgbe_ports[i].unit != mva-mva_unit)
 			continue;
 
-		sc-sc_flags = mvgbe_ports[i].flags;
+		csc-sc_flags =