Module Name:    src
Committed By:   christos
Date:           Thu Dec 24 18:27:32 UTC 2009

Modified Files:
        src/sys/dev/pci: if_msk.c if_mskvar.h

Log Message:
- split the sk_dev
- don't program the interrupt mitigation to 0, only to set it to 1000 later.
- don't be verbose when setting the interrupt mitigation during reset, it
  messes up the attach line and does not convey useful information.


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/pci/if_msk.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/pci/if_mskvar.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_msk.c
diff -u src/sys/dev/pci/if_msk.c:1.29 src/sys/dev/pci/if_msk.c:1.30
--- src/sys/dev/pci/if_msk.c:1.29	Sun Dec 13 19:52:04 2009
+++ src/sys/dev/pci/if_msk.c	Thu Dec 24 13:27:31 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: if_msk.c,v 1.29 2009/12/14 00:52:04 matt Exp $ */
+/* $NetBSD: if_msk.c,v 1.30 2009/12/24 18:27:31 christos Exp $ */
 /*	$OpenBSD: if_msk.c,v 1.42 2007/01/17 02:43:02 krw Exp $	*/
 
 /*
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.29 2009/12/14 00:52:04 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.30 2009/12/24 18:27:31 christos Exp $");
 
 #include "bpfilter.h"
 #include "rnd.h"
@@ -100,11 +100,11 @@
 #include <dev/pci/if_mskvar.h>
 
 int mskc_probe(device_t, cfdata_t, void *);
-void mskc_attach(device_t, device_t self, void *aux);
+void mskc_attach(device_t, device_t, void *);
 static bool mskc_suspend(device_t PMF_FN_PROTO);
 static bool mskc_resume(device_t PMF_FN_PROTO);
 int msk_probe(device_t, cfdata_t, void *);
-void msk_attach(device_t, device_t self, void *aux);
+void msk_attach(device_t, device_t, void *);
 int mskcprint(void *, const char *);
 int msk_intr(void *);
 void msk_intr_yukon(struct sk_if_softc *);
@@ -126,7 +126,7 @@
 int msk_init_rx_ring(struct sk_if_softc *);
 int msk_init_tx_ring(struct sk_if_softc *);
 
-void msk_update_int_mod(struct sk_softc *);
+void msk_update_int_mod(struct sk_softc *, int);
 
 int msk_miibus_readreg(device_t, int, int);
 void msk_miibus_writereg(device_t, int, int, int);
@@ -244,7 +244,7 @@
 	}
 
 	if (i == SK_TIMEOUT) {
-		aprint_error_dev(&sc_if->sk_dev, "phy failed to come ready\n");
+		aprint_error_dev(sc_if->sk_dev, "phy failed to come ready\n");
 		return (0);
 	}
         
@@ -279,7 +279,7 @@
 	}
 
 	if (i == SK_TIMEOUT)
-		aprint_error_dev(&sc_if->sk_dev, "phy write timed out\n");
+		aprint_error_dev(sc_if->sk_dev, "phy write timed out\n");
 }
 
 void
@@ -414,8 +414,7 @@
 	struct msk_ring_data	*rd = sc_if->sk_rdata;
 	int			i, nexti;
 
-	memset((char *)rd->sk_rx_ring, 0,
-	    sizeof(struct msk_rx_desc) * MSK_RX_RING_CNT);
+	memset(rd->sk_rx_ring, 0, sizeof(struct msk_rx_desc) * MSK_RX_RING_CNT);
 
 	for (i = 0; i < MSK_RX_RING_CNT; i++) {
 		cd->sk_rx_chain[i].sk_le = &rd->sk_rx_ring[i];
@@ -429,7 +428,7 @@
 	for (i = 0; i < MSK_RX_RING_CNT; i++) {
 		if (msk_newbuf(sc_if, i, NULL,
 		    sc_if->sk_cdata.sk_rx_jumbo_map) == ENOBUFS) {
-			aprint_error_dev(&sc_if->sk_dev, "failed alloc of %dth mbuf\n", i);
+			aprint_error_dev(sc_if->sk_dev, "failed alloc of %dth mbuf\n", i);
 			return (ENOBUFS);
 		}
 	}
@@ -450,7 +449,7 @@
 	struct sk_txmap_entry	*entry;
 	int			i, nexti;
 
-	memset((char *)sc_if->sk_rdata->sk_tx_ring, 0,
+	memset(sc_if->sk_rdata->sk_tx_ring, 0,
 	    sizeof(struct msk_tx_desc) * MSK_TX_RING_CNT);
 
 	SIMPLEQ_INIT(&sc_if->sk_txmap_head);
@@ -722,7 +721,7 @@
 }
 
 void
-msk_update_int_mod(struct sk_softc *sc)
+msk_update_int_mod(struct sk_softc *sc, int verbose)
 {
 	u_int32_t imtimer_ticks;
 
@@ -749,8 +748,9 @@
 	default:
 		imtimer_ticks = SK_IMTIMER_TICKS_YUKON;
 	}
-	aprint_verbose_dev(&sc->sk_dev, "interrupt moderation is %d us\n",
-	    sc->sk_int_mod);
+	if (verbose)
+		aprint_verbose_dev(sc->sk_dev,
+		    "interrupt moderation is %d us\n", sc->sk_int_mod);
         sk_win_write_4(sc, SK_IMTIMERINIT, SK_IM_USECS(sc->sk_int_mod));
         sk_win_write_4(sc, SK_IMMR, SK_ISR_TX1_S_EOF|SK_ISR_TX2_S_EOF|
 	    SK_ISR_RX1_EOF|SK_ISR_RX2_EOF);
@@ -902,7 +902,7 @@
 	}
 
 	/* Reset status ring. */
-	memset((char *)sc->sk_status_ring, 0,
+	memset(sc->sk_status_ring, 0,
 	    MSK_STATUS_RING_CNT * sizeof(struct msk_status_desc));
 	bus_dmamap_sync(sc->sc_dmatag, sc->sk_status_map, 0,
 	    sc->sk_status_map->dm_mapsize, BUS_DMASYNC_PREREAD);
@@ -940,7 +940,7 @@
 	sk_win_write_1(sc, SK_Y2_TX_ITIMERCTL, SK_IMCTL_START);
 	sk_win_write_1(sc, SK_Y2_ISR_ITIMERCTL, SK_IMCTL_START);
 
-	msk_update_int_mod(sc);
+	msk_update_int_mod(sc, 0);
 }
 
 int
@@ -987,6 +987,7 @@
 	int i, rseg;
 	u_int32_t chunk, val;
 
+	sc_if->sk_dev = self;
 	sc_if->sk_port = sa->skc_port;
 	sc_if->sk_softc = sc;
 	sc->sk_if[sa->skc_port] = sc_if;
@@ -1081,7 +1082,7 @@
 	ifp->if_baudrate = 1000000000;
 	IFQ_SET_MAXLEN(&ifp->if_snd, MSK_TX_RING_CNT - 1);
 	IFQ_SET_READY(&ifp->if_snd);
-	strlcpy(ifp->if_xname, device_xname(&sc_if->sk_dev), IFNAMSIZ);
+	strlcpy(ifp->if_xname, device_xname(sc_if->sk_dev), IFNAMSIZ);
 
 	/*
 	 * Do miibus setup.
@@ -1101,7 +1102,7 @@
 	mii_attach(self, &sc_if->sk_mii, 0xffffffff, MII_PHY_ANY,
 	    MII_OFFSET_ANY, MIIF_DOPAUSE|MIIF_FORCEANEG);
 	if (LIST_FIRST(&sc_if->sk_mii.mii_phys) == NULL) {
-		aprint_error_dev(&sc_if->sk_dev, "no PHY found!\n");
+		aprint_error_dev(sc_if->sk_dev, "no PHY found!\n");
 		ifmedia_add(&sc_if->sk_mii.mii_media, IFM_ETHER|IFM_MANUAL,
 			    0, NULL);
 		ifmedia_set(&sc_if->sk_mii.mii_media, IFM_ETHER|IFM_MANUAL);
@@ -1124,7 +1125,7 @@
 		aprint_error_dev(self, "couldn't establish power handler\n");
 
 #if NRND > 0
-	rnd_attach_source(&sc->rnd_source, device_xname(&sc->sk_dev),
+	rnd_attach_source(&sc->rnd_source, device_xname(sc->sk_dev),
 		RND_TYPE_NET, 0);
 #endif
 
@@ -1179,6 +1180,7 @@
 
 	DPRINTFN(2, ("begin mskc_attach\n"));
 
+	sc->sk_dev = self;
 	/*
 	 * Handle power management nonsense.
 	 */
@@ -1195,8 +1197,8 @@
 			irq = pci_conf_read(pc, pa->pa_tag, SK_PCI_INTLINE);
 
 			/* Reset the power state. */
-			aprint_normal_dev(&sc->sk_dev, "chip is in D%d power mode "
-			    "-- setting to D0\n",
+			aprint_normal_dev(sc->sk_dev, "chip is in D%d power "
+			    "mode -- setting to D0\n",
 			    command & SK_PSTATE_MASK);
 			command &= 0xFFFFFFFC;
 			pci_conf_write(pc, pa->pa_tag,
@@ -1284,6 +1286,10 @@
 	}
 	sc->sk_status_ring = (struct msk_status_desc *)kva;
 
+
+	sc->sk_int_mod = SK_IM_DEFAULT;
+	sc->sk_int_mod_pending = 0;
+
 	/* Reset the adapter. */
 	msk_reset(sc);
 
@@ -1410,13 +1416,13 @@
 	skca.skc_port = SK_PORT_A;
 	skca.skc_type = sc->sk_type;
 	skca.skc_rev = sc->sk_rev;
-	(void)config_found(&sc->sk_dev, &skca, mskcprint);
+	(void)config_found(sc->sk_dev, &skca, mskcprint);
 
 	if (sc->sk_macs > 1) {
 		skca.skc_port = SK_PORT_B;
 		skca.skc_type = sc->sk_type;
 		skca.skc_rev = sc->sk_rev;
-		(void)config_found(&sc->sk_dev, &skca, mskcprint);
+		(void)config_found(sc->sk_dev, &skca, mskcprint);
 	}
 
 	/* Turn on the 'driver is loaded' LED. */
@@ -1424,15 +1430,12 @@
 
 	/* skc sysctl setup */
 
-	sc->sk_int_mod = SK_IM_DEFAULT;
-	sc->sk_int_mod_pending = 0;
-
 	if ((rc = sysctl_createv(&sc->sk_clog, 0, NULL, &node,
-	    0, CTLTYPE_NODE, device_xname(&sc->sk_dev),
+	    0, CTLTYPE_NODE, device_xname(sc->sk_dev),
 	    SYSCTL_DESCR("mskc per-controller controls"),
 	    NULL, 0, NULL, 0, CTL_HW, msk_root_num, CTL_CREATE,
 	    CTL_EOL)) != 0) {
-		aprint_normal_dev(&sc->sk_dev, "couldn't create sysctl node\n");
+		aprint_normal_dev(sc->sk_dev, "couldn't create sysctl node\n");
 		goto fail_6;
 	}
 
@@ -1446,7 +1449,7 @@
 	    msk_sysctl_handler, 0, sc,
 	    0, CTL_HW, msk_root_num, sk_nodenum, CTL_CREATE,
 	    CTL_EOL)) != 0) {
-		aprint_normal_dev(&sc->sk_dev, "couldn't create int_mod sysctl node\n");
+		aprint_normal_dev(sc->sk_dev, "couldn't create int_mod sysctl node\n");
 		goto fail_6;
 	}
 
@@ -1639,7 +1642,7 @@
 	if (sc_if->sk_cdata.sk_tx_cons != idx) {
 		msk_txeof(sc_if, idx);
 		if (sc_if->sk_cdata.sk_tx_cnt != 0) {
-			aprint_error_dev(&sc_if->sk_dev, "watchdog timeout\n");
+			aprint_error_dev(sc_if->sk_dev, "watchdog timeout\n");
 
 			ifp->if_oerrors++;
 
@@ -1963,7 +1966,7 @@
 #endif
 
 	if (sc->sk_int_mod_pending)
-		msk_update_int_mod(sc);
+		msk_update_int_mod(sc, 1);
 
 	return claimed;
 }
@@ -2162,7 +2165,7 @@
 
 	/* Init descriptors */
 	if (msk_init_rx_ring(sc_if) == ENOBUFS) {
-		aprint_error_dev(&sc_if->sk_dev, "initialization failed: no "
+		aprint_error_dev(sc_if->sk_dev, "initialization failed: no "
 		    "memory for rx buffers\n");
 		msk_stop(ifp,0);
 		splx(s);
@@ -2170,7 +2173,7 @@
 	}
 
 	if (msk_init_tx_ring(sc_if) == ENOBUFS) {
-		aprint_error_dev(&sc_if->sk_dev, "initialization failed: no "
+		aprint_error_dev(sc_if->sk_dev, "initialization failed: no "
 		    "memory for tx buffers\n");
 		msk_stop(ifp,0);
 		splx(s);
@@ -2196,8 +2199,8 @@
 	if (imr != SK_IM_USECS(sc->sk_int_mod)) {
 		sk_win_write_4(sc, SK_IMTIMERINIT,
 		    SK_IM_USECS(sc->sk_int_mod));
-		aprint_verbose_dev(&sc->sk_dev, "interrupt moderation is %d us\n",
-		    sc->sk_int_mod);
+		aprint_verbose_dev(sc->sk_dev,
+		    "yinterrupt moderation is %d us\n", sc->sk_int_mod);
 	}
 
 	/* Initialize prefetch engine. */
@@ -2316,10 +2319,10 @@
 #endif
 }
 
-CFATTACH_DECL(mskc, sizeof(struct sk_softc), mskc_probe, mskc_attach,
+CFATTACH_DECL_NEW(mskc, sizeof(struct sk_softc), mskc_probe, mskc_attach,
 	NULL, NULL);
 
-CFATTACH_DECL(msk, sizeof(struct sk_if_softc), msk_probe, msk_attach,
+CFATTACH_DECL_NEW(msk, sizeof(struct sk_if_softc), msk_probe, msk_attach,
 	NULL, NULL);
 
 #ifdef MSK_DEBUG

Index: src/sys/dev/pci/if_mskvar.h
diff -u src/sys/dev/pci/if_mskvar.h:1.7 src/sys/dev/pci/if_mskvar.h:1.8
--- src/sys/dev/pci/if_mskvar.h:1.7	Fri Jun 20 12:45:13 2008
+++ src/sys/dev/pci/if_mskvar.h	Thu Dec 24 13:27:32 2009
@@ -1,5 +1,5 @@
 /*	$OpenBSD: if_mskvar.h,v 1.3 2006/12/28 16:34:42 kettenis Exp $	*/
-/*	$NetBSD: if_mskvar.h,v 1.7 2008/06/20 16:45:13 cube Exp $	*/
+/*	$NetBSD: if_mskvar.h,v 1.8 2009/12/24 18:27:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -188,7 +188,7 @@
 
 /* Softc for the Yukon-II controller. */
 struct sk_softc {
-	struct device		sk_dev;		/* generic device */
+	struct device		*sk_dev;	/* generic device */
 	bus_space_handle_t	sk_bhandle;	/* bus space handle */
 	bus_space_tag_t		sk_btag;	/* bus space tag */
 	void			*sk_intrhand;	/* irq handler handle */
@@ -216,7 +216,7 @@
 
 /* Softc for each logical interface */
 struct sk_if_softc {
-	struct device		sk_dev;		/* generic device */
+	struct device		*sk_dev;	/* generic device */
 	struct ethercom		sk_ethercom;	/* interface info */
 	struct mii_data		sk_mii;
 	u_int8_t		sk_enaddr[ETHER_ADDR_LEN]; /* station addr */

Reply via email to