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