diff options
author | brooks <brooks@FreeBSD.org> | 2003-10-30 19:45:58 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2003-10-30 19:45:58 +0000 |
commit | 38e31120fcd40193d407e469c46607ecc302ab68 (patch) | |
tree | 7d01fdeb4d415c1bae5c7bd03a9a32e71d3a786d /sys/dev/cs/if_cs.c | |
parent | 24760267308bc1cdadffe3933510627f1a8ebec9 (diff) | |
download | FreeBSD-src-38e31120fcd40193d407e469c46607ecc302ab68.zip FreeBSD-src-38e31120fcd40193d407e469c46607ecc302ab68.tar.gz |
There is no way to enter the attach routine twice with the same softc
without a detach call in between so don't try to deal with that
possiability.
This is a diff-reduction commit for the upcoming if_xname conversion.
Diffstat (limited to 'sys/dev/cs/if_cs.c')
-rw-r--r-- | sys/dev/cs/if_cs.c | 134 |
1 files changed, 66 insertions, 68 deletions
diff --git a/sys/dev/cs/if_cs.c b/sys/dev/cs/if_cs.c index f2892db..f09bb3d 100644 --- a/sys/dev/cs/if_cs.c +++ b/sys/dev/cs/if_cs.c @@ -582,85 +582,83 @@ cs_attach(struct cs_softc *sc, int unit, int flags) cs_stop( sc ); - if (!ifp->if_name) { - ifp->if_softc=sc; - ifp->if_unit=unit; - ifp->if_name="cs"; - ifp->if_output=ether_output; - ifp->if_start=cs_start; - ifp->if_ioctl=cs_ioctl; - ifp->if_watchdog=cs_watchdog; - ifp->if_init=cs_init; - ifp->if_snd.ifq_maxlen= IFQ_MAXLEN; - /* - * MIB DATA - */ - /* - ifp->if_linkmib=&sc->mibdata; - ifp->if_linkmiblen=sizeof sc->mibdata; - */ + ifp->if_softc=sc; + ifp->if_unit=unit; + ifp->if_name="cs"; + ifp->if_output=ether_output; + ifp->if_start=cs_start; + ifp->if_ioctl=cs_ioctl; + ifp->if_watchdog=cs_watchdog; + ifp->if_init=cs_init; + ifp->if_snd.ifq_maxlen= IFQ_MAXLEN; + /* + * MIB DATA + */ + /* + ifp->if_linkmib=&sc->mibdata; + ifp->if_linkmiblen=sizeof sc->mibdata; + */ - ifp->if_flags=(IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST ); + ifp->if_flags=(IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST ); - /* - * this code still in progress (DMA support) - * - - sc->recv_ring=malloc(CS_DMA_BUFFER_SIZE<<1, M_DEVBUF, M_NOWAIT); - if (sc->recv_ring == NULL) { - log(LOG_ERR,CS_NAME - "%d: Couldn't allocate memory for NIC\n", unit); - return(0); - } - if ((sc->recv_ring-(sc->recv_ring & 0x1FFFF)) - < (128*1024-CS_DMA_BUFFER_SIZE)) - sc->recv_ring+=16*1024; + /* + * this code still in progress (DMA support) + * + + sc->recv_ring=malloc(CS_DMA_BUFFER_SIZE<<1, M_DEVBUF, M_NOWAIT); + if (sc->recv_ring == NULL) { + log(LOG_ERR,CS_NAME + "%d: Couldn't allocate memory for NIC\n", unit); + return(0); + } + if ((sc->recv_ring-(sc->recv_ring & 0x1FFFF)) + < (128*1024-CS_DMA_BUFFER_SIZE)) + sc->recv_ring+=16*1024; - */ + */ - sc->buffer=malloc(ETHER_MAX_LEN-ETHER_CRC_LEN,M_DEVBUF,M_NOWAIT); - if (sc->buffer == NULL) { - if_printf(ifp, "Couldn't allocate memory for NIC\n"); - return(0); - } + sc->buffer=malloc(ETHER_MAX_LEN-ETHER_CRC_LEN,M_DEVBUF,M_NOWAIT); + if (sc->buffer == NULL) { + if_printf(ifp, "Couldn't allocate memory for NIC\n"); + return(0); + } - /* - * Initialize the media structures. - */ - ifmedia_init(&sc->media, 0, cs_mediachange, cs_mediastatus); - - if (sc->adapter_cnf & A_CNF_10B_T) { - ifmedia_add(&sc->media, IFM_ETHER|IFM_10_T, 0, NULL); - if (sc->chip_type != CS8900) { - ifmedia_add(&sc->media, - IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL); - ifmedia_add(&sc->media, - IFM_ETHER|IFM_10_T|IFM_HDX, 0, NULL); - } - } + /* + * Initialize the media structures. + */ + ifmedia_init(&sc->media, 0, cs_mediachange, cs_mediastatus); - if (sc->adapter_cnf & A_CNF_10B_2) - ifmedia_add(&sc->media, IFM_ETHER|IFM_10_2, 0, NULL); + if (sc->adapter_cnf & A_CNF_10B_T) { + ifmedia_add(&sc->media, IFM_ETHER|IFM_10_T, 0, NULL); + if (sc->chip_type != CS8900) { + ifmedia_add(&sc->media, + IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL); + ifmedia_add(&sc->media, + IFM_ETHER|IFM_10_T|IFM_HDX, 0, NULL); + } + } - if (sc->adapter_cnf & A_CNF_AUI) - ifmedia_add(&sc->media, IFM_ETHER|IFM_10_5, 0, NULL); + if (sc->adapter_cnf & A_CNF_10B_2) + ifmedia_add(&sc->media, IFM_ETHER|IFM_10_2, 0, NULL); - if (sc->adapter_cnf & A_CNF_MEDIA) - ifmedia_add(&sc->media, IFM_ETHER|IFM_AUTO, 0, NULL); + if (sc->adapter_cnf & A_CNF_AUI) + ifmedia_add(&sc->media, IFM_ETHER|IFM_10_5, 0, NULL); - /* Set default media from EEPROM */ - switch (sc->adapter_cnf & A_CNF_MEDIA_TYPE) { - case A_CNF_MEDIA_AUTO: media = IFM_ETHER|IFM_AUTO; break; - case A_CNF_MEDIA_10B_T: media = IFM_ETHER|IFM_10_T; break; - case A_CNF_MEDIA_10B_2: media = IFM_ETHER|IFM_10_2; break; - case A_CNF_MEDIA_AUI: media = IFM_ETHER|IFM_10_5; break; - default: if_printf(ifp, "adapter has no media\n"); - } - ifmedia_set(&sc->media, media); - cs_mediaset(sc, media); + if (sc->adapter_cnf & A_CNF_MEDIA) + ifmedia_add(&sc->media, IFM_ETHER|IFM_AUTO, 0, NULL); - ether_ifattach(ifp, sc->arpcom.ac_enaddr); + /* Set default media from EEPROM */ + switch (sc->adapter_cnf & A_CNF_MEDIA_TYPE) { + case A_CNF_MEDIA_AUTO: media = IFM_ETHER|IFM_AUTO; break; + case A_CNF_MEDIA_10B_T: media = IFM_ETHER|IFM_10_T; break; + case A_CNF_MEDIA_10B_2: media = IFM_ETHER|IFM_10_2; break; + case A_CNF_MEDIA_AUI: media = IFM_ETHER|IFM_10_5; break; + default: if_printf(ifp, "adapter has no media\n"); } + ifmedia_set(&sc->media, media); + cs_mediaset(sc, media); + + ether_ifattach(ifp, sc->arpcom.ac_enaddr); if (bootverbose) if_printf(ifp, "ethernet address %6D\n", |