diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-03-24 22:29:32 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-03-24 22:29:32 +0000 |
commit | 367cc5ef05450e98ddcfd0fbb311690b132483d4 (patch) | |
tree | 4adc3bb2745f4e6eaf4539cf621f8376463f5fa0 /c/src/lib | |
parent | Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>. (diff) | |
download | rtems-367cc5ef05450e98ddcfd0fbb311690b132483d4.tar.bz2 |
Patch from Eric Norum <eric@skatter.usask.ca> to use new network
interface naming convention.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libchip/network/sonic.c | 36 | ||||
-rw-r--r-- | c/src/libchip/network/sonic.c | 36 |
2 files changed, 40 insertions, 32 deletions
diff --git a/c/src/lib/libchip/network/sonic.c b/c/src/lib/libchip/network/sonic.c index 7fe2200ab1..66c12d570c 100644 --- a/c/src/lib/libchip/network/sonic.c +++ b/c/src/lib/libchip/network/sonic.c @@ -1502,23 +1502,27 @@ rtems_sonic_driver_attach ( struct sonic_softc *sc; struct ifnet *ifp; int mtu; - int i; + int unitNumber; + char *unitName; /* - * Find an unused entry + * Parse driver name */ - i = 0; - sc = sonic_softc; - for (;;) { - if (sc == &sonic_softc[NSONIC]) { - printf ("No more SONIC devices.\n"); - return 0; - } - ifp = &sc->arpcom.ac_if; - if (ifp->if_softc == NULL) - break; - sc++; - i++; + if ((unitNumber = rtems_bsdnet_parse_driver_name (config, &unitName)) < 0) + return 0; + + /* + * Is driver free? + */ + if ((unitNumber <= 0) || (unitNumber > NSONIC)) { + printf ("Bad SONIC unit number.\n"); + return 0; + } + sc = &sonic_softc[unitNumber - 1]; + ifp = &sc->arpcom.ac_if; + if (ifp->if_softc != NULL) { + printf ("Driver already in use.\n"); + return 0; } /* @@ -1562,8 +1566,8 @@ rtems_sonic_driver_attach ( * Set up network interface values */ ifp->if_softc = sc; - ifp->if_unit = i + 1; - ifp->if_name = "sonic"; + ifp->if_unit = unitNumber; + ifp->if_name = unitName; ifp->if_mtu = mtu; ifp->if_init = sonic_init; ifp->if_ioctl = sonic_ioctl; diff --git a/c/src/libchip/network/sonic.c b/c/src/libchip/network/sonic.c index 7fe2200ab1..66c12d570c 100644 --- a/c/src/libchip/network/sonic.c +++ b/c/src/libchip/network/sonic.c @@ -1502,23 +1502,27 @@ rtems_sonic_driver_attach ( struct sonic_softc *sc; struct ifnet *ifp; int mtu; - int i; + int unitNumber; + char *unitName; /* - * Find an unused entry + * Parse driver name */ - i = 0; - sc = sonic_softc; - for (;;) { - if (sc == &sonic_softc[NSONIC]) { - printf ("No more SONIC devices.\n"); - return 0; - } - ifp = &sc->arpcom.ac_if; - if (ifp->if_softc == NULL) - break; - sc++; - i++; + if ((unitNumber = rtems_bsdnet_parse_driver_name (config, &unitName)) < 0) + return 0; + + /* + * Is driver free? + */ + if ((unitNumber <= 0) || (unitNumber > NSONIC)) { + printf ("Bad SONIC unit number.\n"); + return 0; + } + sc = &sonic_softc[unitNumber - 1]; + ifp = &sc->arpcom.ac_if; + if (ifp->if_softc != NULL) { + printf ("Driver already in use.\n"); + return 0; } /* @@ -1562,8 +1566,8 @@ rtems_sonic_driver_attach ( * Set up network interface values */ ifp->if_softc = sc; - ifp->if_unit = i + 1; - ifp->if_name = "sonic"; + ifp->if_unit = unitNumber; + ifp->if_name = unitName; ifp->if_mtu = mtu; ifp->if_init = sonic_init; ifp->if_ioctl = sonic_ioctl; |