Module Name: src Committed By: tsutsui Date: Sun May 17 02:08:35 UTC 2009
Modified Files: src/sys/dev/pci: if_stge.c Log Message: Split device_t/softc. Tested on D-Link DL-4000. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/dev/pci/if_stge.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_stge.c diff -u src/sys/dev/pci/if_stge.c:1.46 src/sys/dev/pci/if_stge.c:1.47 --- src/sys/dev/pci/if_stge.c:1.46 Wed May 6 09:25:16 2009 +++ src/sys/dev/pci/if_stge.c Sun May 17 02:08:35 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_stge.c,v 1.46 2009/05/06 09:25:16 cegger Exp $ */ +/* $NetBSD: if_stge.c,v 1.47 2009/05/17 02:08:35 tsutsui Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.46 2009/05/06 09:25:16 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.47 2009/05/17 02:08:35 tsutsui Exp $"); #include "bpfilter.h" @@ -132,7 +132,7 @@ * Software state per device. */ struct stge_softc { - struct device sc_dev; /* generic device information */ + device_t sc_dev; /* generic device information */ bus_space_tag_t sc_st; /* bus space tag */ bus_space_handle_t sc_sh; /* bus space handle */ bus_dma_tag_t sc_dmat; /* bus DMA tag */ @@ -291,7 +291,7 @@ int stge_copy_small = 0; -CFATTACH_DECL(stge, sizeof(struct stge_softc), +CFATTACH_DECL_NEW(stge, sizeof(struct stge_softc), stge_match, stge_attach, NULL, NULL); static uint32_t stge_mii_bitbang_read(device_t); @@ -400,7 +400,7 @@ sc->sc_rev = PCI_REVISION(pa->pa_class); - printf(": %s, rev. %d\n", sp->stge_name, sc->sc_rev); + aprint_normal(": %s, rev. %d\n", sp->stge_name, sc->sc_rev); /* * Map the device. @@ -419,7 +419,7 @@ sc->sc_st = iot; sc->sc_sh = ioh; } else { - aprint_error_dev(&sc->sc_dev, "unable to map device registers\n"); + aprint_error_dev(self, "unable to map device registers\n"); return; } @@ -433,7 +433,7 @@ /* power up chip */ if ((error = pci_activate(pa->pa_pc, pa->pa_tag, self, NULL)) && error != EOPNOTSUPP) { - aprint_error_dev(&sc->sc_dev, "cannot activate %d\n", + aprint_error_dev(self, "cannot activate %d\n", error); return; } @@ -441,19 +441,19 @@ * Map and establish our interrupt. */ if (pci_intr_map(pa, &ih)) { - aprint_error_dev(&sc->sc_dev, "unable to map interrupt\n"); + aprint_error_dev(self, "unable to map interrupt\n"); return; } intrstr = pci_intr_string(pc, ih); sc->sc_ih = pci_intr_establish(pc, ih, IPL_NET, stge_intr, sc); if (sc->sc_ih == NULL) { - aprint_error_dev(&sc->sc_dev, "unable to establish interrupt"); + aprint_error_dev(self, "unable to establish interrupt"); if (intrstr != NULL) - printf(" at %s", intrstr); - printf("\n"); + aprint_error(" at %s", intrstr); + aprint_error("\n"); return; } - printf("%s: interrupting at %s\n", device_xname(&sc->sc_dev), intrstr); + aprint_normal_dev(self, "interrupting at %s\n", intrstr); /* * Allocate the control data structures, and create and load the @@ -462,7 +462,8 @@ if ((error = bus_dmamem_alloc(sc->sc_dmat, sizeof(struct stge_control_data), PAGE_SIZE, 0, &seg, 1, &rseg, 0)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to allocate control data, error = %d\n", + aprint_error_dev(self, + "unable to allocate control data, error = %d\n", error); goto fail_0; } @@ -470,7 +471,8 @@ if ((error = bus_dmamem_map(sc->sc_dmat, &seg, rseg, sizeof(struct stge_control_data), (void **)&sc->sc_control_data, BUS_DMA_COHERENT)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to map control data, error = %d\n", + aprint_error_dev(self, + "unable to map control data, error = %d\n", error); goto fail_1; } @@ -478,15 +480,17 @@ if ((error = bus_dmamap_create(sc->sc_dmat, sizeof(struct stge_control_data), 1, sizeof(struct stge_control_data), 0, 0, &sc->sc_cddmamap)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to create control data DMA map, " - "error = %d\n", error); + aprint_error_dev(self, + "unable to create control data DMA map, error = %d\n", + error); goto fail_2; } if ((error = bus_dmamap_load(sc->sc_dmat, sc->sc_cddmamap, sc->sc_control_data, sizeof(struct stge_control_data), NULL, 0)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to load control data DMA map, error = %d\n", + aprint_error_dev(self, + "unable to load control data DMA map, error = %d\n", error); goto fail_3; } @@ -501,8 +505,9 @@ if ((error = bus_dmamap_create(sc->sc_dmat, ETHER_MAX_LEN_JUMBO, STGE_NTXFRAGS, MCLBYTES, 0, 0, &sc->sc_txsoft[i].ds_dmamap)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to create tx DMA map %d, " - "error = %d\n", i, error); + aprint_error_dev(self, + "unable to create tx DMA map %d, error = %d\n", + i, error); goto fail_4; } } @@ -513,8 +518,9 @@ for (i = 0; i < STGE_NRXDESC; i++) { if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES, 1, MCLBYTES, 0, 0, &sc->sc_rxsoft[i].ds_dmamap)) != 0) { - aprint_error_dev(&sc->sc_dev, "unable to create rx DMA map %d, " - "error = %d\n", i, error); + aprint_error_dev(self, + "unable to create rx DMA map %d, error = %d\n", + i, error); goto fail_5; } sc->sc_rxsoft[i].ds_mbuf = NULL; @@ -567,7 +573,7 @@ sc->sc_stge1023 = 1; } - printf("%s: Ethernet address %s\n", device_xname(&sc->sc_dev), + aprint_normal_dev(self, "Ethernet address %s\n", ether_sprintf(enaddr)); /* @@ -586,7 +592,7 @@ sc->sc_ethercom.ec_mii = &sc->sc_mii; ifmedia_init(&sc->sc_mii.mii_media, IFM_IMASK, ether_mediachange, ether_mediastatus); - mii_attach(&sc->sc_dev, &sc->sc_mii, 0xffffffff, MII_PHY_ANY, + mii_attach(self, &sc->sc_mii, 0xffffffff, MII_PHY_ANY, MII_OFFSET_ANY, MIIF_DOPAUSE); if (LIST_FIRST(&sc->sc_mii.mii_phys) == NULL) { ifmedia_add(&sc->sc_mii.mii_media, IFM_ETHER|IFM_NONE, 0, NULL); @@ -595,7 +601,7 @@ ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_AUTO); ifp = &sc->sc_ethercom.ec_if; - strlcpy(ifp->if_xname, device_xname(&sc->sc_dev), IFNAMSIZ); + strlcpy(ifp->if_xname, device_xname(self), IFNAMSIZ); ifp->if_softc = sc; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = stge_ioctl; @@ -650,41 +656,41 @@ * Attach event counters. */ evcnt_attach_dynamic(&sc->sc_ev_txstall, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txstall"); + NULL, device_xname(self), "txstall"); evcnt_attach_dynamic(&sc->sc_ev_txdmaintr, EVCNT_TYPE_INTR, - NULL, device_xname(&sc->sc_dev), "txdmaintr"); + NULL, device_xname(self), "txdmaintr"); evcnt_attach_dynamic(&sc->sc_ev_txindintr, EVCNT_TYPE_INTR, - NULL, device_xname(&sc->sc_dev), "txindintr"); + NULL, device_xname(self), "txindintr"); evcnt_attach_dynamic(&sc->sc_ev_rxintr, EVCNT_TYPE_INTR, - NULL, device_xname(&sc->sc_dev), "rxintr"); + NULL, device_xname(self), "rxintr"); evcnt_attach_dynamic(&sc->sc_ev_txseg1, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txseg1"); + NULL, device_xname(self), "txseg1"); evcnt_attach_dynamic(&sc->sc_ev_txseg2, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txseg2"); + NULL, device_xname(self), "txseg2"); evcnt_attach_dynamic(&sc->sc_ev_txseg3, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txseg3"); + NULL, device_xname(self), "txseg3"); evcnt_attach_dynamic(&sc->sc_ev_txseg4, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txseg4"); + NULL, device_xname(self), "txseg4"); evcnt_attach_dynamic(&sc->sc_ev_txseg5, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txseg5"); + NULL, device_xname(self), "txseg5"); evcnt_attach_dynamic(&sc->sc_ev_txsegmore, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txsegmore"); + NULL, device_xname(self), "txsegmore"); evcnt_attach_dynamic(&sc->sc_ev_txcopy, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txcopy"); + NULL, device_xname(self), "txcopy"); evcnt_attach_dynamic(&sc->sc_ev_rxipsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "rxipsum"); + NULL, device_xname(self), "rxipsum"); evcnt_attach_dynamic(&sc->sc_ev_rxtcpsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "rxtcpsum"); + NULL, device_xname(self), "rxtcpsum"); evcnt_attach_dynamic(&sc->sc_ev_rxudpsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "rxudpsum"); + NULL, device_xname(self), "rxudpsum"); evcnt_attach_dynamic(&sc->sc_ev_txipsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txipsum"); + NULL, device_xname(self), "txipsum"); evcnt_attach_dynamic(&sc->sc_ev_txtcpsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txtcpsum"); + NULL, device_xname(self), "txtcpsum"); evcnt_attach_dynamic(&sc->sc_ev_txudpsum, EVCNT_TYPE_MISC, - NULL, device_xname(&sc->sc_dev), "txudpsum"); + NULL, device_xname(self), "txudpsum"); #endif /* STGE_EVENT_COUNTERS */ /* @@ -692,8 +698,8 @@ */ sc->sc_sdhook = shutdownhook_establish(stge_shutdown, sc); if (sc->sc_sdhook == NULL) - printf("%s: WARNING: unable to establish shutdown hook\n", - device_xname(&sc->sc_dev)); + aprint_error_dev(self, + "WARNING: unable to establish shutdown hook\n"); return; /* @@ -750,7 +756,7 @@ } if (i == STGE_TIMEOUT) - printf("%s: DMA wait timed out\n", device_xname(&sc->sc_dev)); + printf("%s: DMA wait timed out\n", device_xname(sc->sc_dev)); } /* @@ -832,7 +838,7 @@ if (error == EFBIG) { printf("%s: Tx packet consumes too many " "DMA segments, dropping...\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); IFQ_DEQUEUE(&ifp->if_snd, m0); m_freem(m0); continue; @@ -988,7 +994,7 @@ */ stge_txintr(sc); if (sc->sc_txpending != 0) { - printf("%s: device timeout\n", device_xname(&sc->sc_dev)); + printf("%s: device timeout\n", device_xname(sc->sc_dev)); ifp->if_oerrors++; (void) stge_init(ifp); @@ -1059,7 +1065,7 @@ /* Host interface errors. */ if (isr & IS_HostError) { printf("%s: Host interface error\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); wantinit = 1; continue; } @@ -1070,7 +1076,7 @@ stge_rxintr(sc); if (isr & IS_RFDListEnd) { printf("%s: receive ring overflow\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); /* * XXX Should try to recover from this * XXX more gracefully. @@ -1106,12 +1112,12 @@ sc->sc_txthresh = 0x0fff; printf("%s: transmit underrun, new " "threshold: %d bytes\n", - device_xname(&sc->sc_dev), + device_xname(sc->sc_dev), sc->sc_txthresh << 5); } if (txstat & TS_MaxCollisions) printf("%s: excessive collisions\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); } wantinit = 1; } @@ -1455,7 +1461,8 @@ } if (i == STGE_TIMEOUT) - printf("%s: reset failed to complete\n", device_xname(&sc->sc_dev)); + printf("%s: reset failed to complete\n", + device_xname(sc->sc_dev)); delay(1000); } @@ -1507,7 +1514,7 @@ if ((error = stge_add_rxbuf(sc, i)) != 0) { printf("%s: unable to allocate or map rx " "buffer %d, error = %d\n", - device_xname(&sc->sc_dev), i, error); + device_xname(sc->sc_dev), i, error); /* * XXX Should attempt to run with fewer receive * XXX buffers instead of just failing. @@ -1656,7 +1663,7 @@ out: if (error) - printf("%s: interface not running\n", device_xname(&sc->sc_dev)); + printf("%s: interface not running\n", device_xname(sc->sc_dev)); return (error); } @@ -1769,13 +1776,13 @@ if (stge_eeprom_wait(sc)) printf("%s: EEPROM failed to come ready\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); bus_space_write_2(sc->sc_st, sc->sc_sh, STGE_EepromCtrl, EC_EepromAddress(offset) | EC_EepromOpcode(EC_OP_RR)); if (stge_eeprom_wait(sc)) printf("%s: EEPROM read timed out\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); *data = bus_space_read_2(sc->sc_st, sc->sc_sh, STGE_EepromData); } @@ -1813,7 +1820,7 @@ m->m_ext.ext_buf, m->m_ext.ext_size, NULL, BUS_DMA_NOWAIT); if (error) { printf("%s: can't load rx DMA map %d, error = %d\n", - device_xname(&sc->sc_dev), idx, error); + device_xname(sc->sc_dev), idx, error); panic("stge_add_rxbuf"); /* XXX */ }