Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/usb Small restructuring: break out opening of pipes ...
details: https://anonhg.NetBSD.org/src/rev/e8390fc122a2
branches: trunk
changeset: 481393:e8390fc122a2
user: augustss <augustss%NetBSD.org@localhost>
date: Fri Jan 28 00:51:25 2000 +0000
description:
Small restructuring: break out opening of pipes into its own function.
diffstat:
sys/dev/usb/if_aue.c | 49 ++++++++++++++++++++++++++++++-------------------
1 files changed, 30 insertions(+), 19 deletions(-)
diffs (107 lines):
diff -r 3383b0b1184b -r e8390fc122a2 sys/dev/usb/if_aue.c
--- a/sys/dev/usb/if_aue.c Fri Jan 28 00:45:55 2000 +0000
+++ b/sys/dev/usb/if_aue.c Fri Jan 28 00:51:25 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_aue.c,v 1.15 2000/01/28 00:29:53 augustss Exp $ */
+/* $NetBSD: if_aue.c,v 1.16 2000/01/28 00:51:25 augustss Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
* Bill Paul <wpaul%ee.columbia.edu@localhost>. All rights reserved.
@@ -192,6 +192,7 @@
#ifdef __FreeBSD__
static void aue_shutdown __P((device_ptr_t));
#endif
+static int aue_openpipes __P((struct aue_softc *));
static int aue_ifmedia_upd __P((struct ifnet *));
static void aue_ifmedia_sts __P((struct ifnet *, struct ifmediareq *));
@@ -1417,8 +1418,6 @@
struct aue_softc *sc = xsc;
struct ifnet *ifp = GET_IFP(sc);
struct mii_data *mii = GET_MII(sc);
- struct aue_chain *c;
- usbd_status err;
int i, s;
u_char *eaddr;
@@ -1473,22 +1472,43 @@
mii_mediachg(mii);
if (sc->aue_ep[AUE_ENDPT_RX] == NULL) {
+ if (aue_openpipes(sc)) {
+ splx(s);
+ return;
+ }
+ }
+
+ ifp->if_flags |= IFF_RUNNING;
+ ifp->if_flags &= ~IFF_OACTIVE;
+
+ splx(s);
+
+ usb_untimeout(aue_tick, sc, sc->aue_stat_ch);
+ usb_timeout(aue_tick, sc, hz, sc->aue_stat_ch);
+}
+
+static int
+aue_openpipes(sc)
+ struct aue_softc *sc;
+{
+ struct aue_chain *c;
+ usbd_status err;
+ int i;
+
/* Open RX and TX pipes. */
err = usbd_open_pipe(sc->aue_iface, sc->aue_ed[AUE_ENDPT_RX],
USBD_EXCLUSIVE_USE, &sc->aue_ep[AUE_ENDPT_RX]);
if (err) {
printf("%s: open rx pipe failed: %s\n",
USBDEVNAME(sc->aue_dev), usbd_errstr(err));
- splx(s);
- return;
+ return (EIO);
}
usbd_open_pipe(sc->aue_iface, sc->aue_ed[AUE_ENDPT_TX],
USBD_EXCLUSIVE_USE, &sc->aue_ep[AUE_ENDPT_TX]);
if (err) {
printf("%s: open tx pipe failed: %s\n",
USBDEVNAME(sc->aue_dev), usbd_errstr(err));
- splx(s);
- return;
+ return (EIO);
}
err = usbd_open_pipe_intr(sc->aue_iface, sc->aue_ed[AUE_ENDPT_INTR],
USBD_EXCLUSIVE_USE, &sc->aue_ep[AUE_ENDPT_INTR], sc,
@@ -1497,8 +1517,7 @@
if (err) {
printf("%s: open intr pipe failed: %s\n",
USBDEVNAME(sc->aue_dev), usbd_errstr(err));
- splx(s);
- return;
+ return (EIO);
}
/* Start up the receive pipe. */
@@ -1508,20 +1527,12 @@
c, c->aue_buf, AUE_BUFSZ,
USBD_SHORT_XFER_OK | USBD_NO_COPY, USBD_NO_TIMEOUT,
aue_rxeof);
- usbd_transfer(c->aue_xfer);
+ (void)usbd_transfer(c->aue_xfer); /* XXX */
DPRINTFN(5,("%s: %s: start read\n", USBDEVNAME(sc->aue_dev),
__FUNCTION__));
}
- }
-
- ifp->if_flags |= IFF_RUNNING;
- ifp->if_flags &= ~IFF_OACTIVE;
-
- splx(s);
-
- usb_untimeout(aue_tick, sc, sc->aue_stat_ch);
- usb_timeout(aue_tick, sc, hz, sc->aue_stat_ch);
+ return (0);
}
/*
Home |
Main Index |
Thread Index |
Old Index