From b6f5f9385daf2d4b5a6272c5085c7e253f381aa9 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 23 Mar 1999 22:39:13 +0000 Subject: Patch from Eric Norum to improve parsing of network interface names. This change does not introduce any compatibility problems. --- c/src/lib/libbsp/m68k/gen68360/network/network.c | 29 +++++++++++++++--------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'c/src/lib/libbsp/m68k/gen68360/network/network.c') diff --git a/c/src/lib/libbsp/m68k/gen68360/network/network.c b/c/src/lib/libbsp/m68k/gen68360/network/network.c index bc10e220b4..b2887dad6d 100644 --- a/c/src/lib/libbsp/m68k/gen68360/network/network.c +++ b/c/src/lib/libbsp/m68k/gen68360/network/network.c @@ -852,19 +852,26 @@ rtems_scc1_driver_attach (struct rtems_bsdnet_ifconfig *config) struct scc_softc *sc; struct ifnet *ifp; int mtu; - int i; + int unitNumber; + char *unitName; /* - * Find a free driver + * Parse driver name */ - for (i = 0 ; i < NSCCDRIVER ; i++) { - sc = &scc_softc[i]; - ifp = &sc->arpcom.ac_if; - if (ifp->if_softc == NULL) - break; + if ((unitNumber = rtems_bsdnet_parse_driver_name (config, &unitName)) < 0) + return 0; + + /* + * Is driver free? + */ + if ((unitNumber <= 0) || (unitNumber > NSCCDRIVER)) { + printf ("Bad SCC unit number.\n"); + return 0; } - if (i >= NSCCDRIVER) { - printf ("Too many SCC drivers.\n"); + sc = &scc_softc[unitNumber - 1]; + ifp = &sc->arpcom.ac_if; + if (ifp->if_softc != NULL) { + printf ("Driver already in use.\n"); return 0; } @@ -930,8 +937,8 @@ rtems_scc1_driver_attach (struct rtems_bsdnet_ifconfig *config) * Set up network interface values */ ifp->if_softc = sc; - ifp->if_unit = i + 1; - ifp->if_name = "scc"; + ifp->if_unit = unitNumber; + ifp->if_name = unitName; ifp->if_mtu = mtu; ifp->if_init = scc_init; ifp->if_ioctl = scc_ioctl; -- cgit v1.2.3