Changeset 173 for freebsd-mos-driver


Ignore:
Timestamp:
Sep 2, 2010, 3:01:30 PM (14 years ago)
Author:
Rick van der Zwet
Message:

Locking and calls sorted properly

Location:
freebsd-mos-driver
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • freebsd-mos-driver/if_mos.c

    r172 r173  
    517517        val |= (MOS_CTL_TX_ENB | MOS_CTL_RX_ENB);
    518518        err = mos_reg_write_1(sc, MOS_CTL, val);
    519         MOS_UNLOCK(sc);
    520519
    521520        if (err)
     
    711710
    712711
    713         DPRINTFN(11,"%s:", "mos");
     712        DPRINTF("%s:", "mos");
    714713
    715714        if (sc->mos_flags & MCS7730) {
    716                 DPRINTFN(11," MCS7730");
     715                DPRINTF(" MCS7730");
    717716        } else if (sc->mos_flags & MCS7830) {
    718                 DPRINTFN(11," MCS7830");
     717                DPRINTF(" MCS7830");
    719718        }
    720719
     
    788787        struct usb_page_cache *pc;
    789788
    790         DPRINTFN(10, "%s: %s: enter\n", "mos",__func__);
     789        DPRINTF("%s: %s: enter\n", "mos",__func__);
    791790
    792791        usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL);
     
    844843        usbd_transfer_submit(xfer);
    845844        uether_rxflush(ue);
    846         DPRINTFN(10,"%s: %s: start rx\n", "mos", __func__);
     845        DPRINTF("%s: %s: start rx\n", "mos", __func__);
    847846
    848847        return;
     
    871870        if (status != USB_ST_SETUP) {
    872871                if (status == USB_ST_TRANSFERRED) {
    873                         DPRINTFN(11, "transfer of %d bytes complete\n", actlen);
     872                        DPRINTF("transfer of %d bytes complete\n", actlen);
    874873                        ifp->if_opackets++;
    875874                } else {
    876                         DPRINTFN(11, "%s: usb error on tx: %s\n", "mos", usbd_errstr(status));
     875                        DPRINTF("%s: usb error on tx: %s\n", "mos", usbd_errstr(status));
    877876                        ifp->if_oerrors++;
    878877                        if (error == USB_ERR_CANCELLED) {
     
    898897        usbd_transfer_submit(xfer);
    899898
    900         if (IFQ_IS_EMPTY(&ifp->if_snd) == 0)
    901                 mos_start(&sc->sc_ue);
    902 
    903899        ifp->if_opackets++;
    904900        return;
     
    909905{
    910906        struct mos_softc *sc = uether_getsc(ue);
    911         struct ifnet *ifp = uether_getifp(ue);
    912907        struct mii_data *mii = GET_MII(sc);
    913908
    914         if (sc == NULL)
    915                 return;
    916 
    917909        MOS_LOCK_ASSERT(sc, MA_OWNED);
    918         DPRINTFN(0xff,"%s: %s: enter\n", "mos", __func__);
     910        DPRINTF("%s: %s: enter\n", "mos", __func__);
    919911
    920912        mii_tick(mii);
     
    924916                         "mos", __func__);
    925917                sc->mos_link++;
    926                 if (IFQ_IS_EMPTY(&ifp->if_snd) == 0)
    927                         mos_start(&sc->sc_ue);
     918                mos_start(ue);
    928919        }
    929920}
     
    964955{
    965956        struct mos_softc *sc = uether_getsc(ue);
    966         struct ifnet *ifp = uether_getifp(ue);
    967         struct mbuf             *m_head = NULL;
    968 
    969         sc = ifp->if_softc;
    970 
    971         if (!sc->mos_link)
    972                 return;
    973 
    974         //if (ifp->if_flags & IFF_OACTIVE)
    975         //      return;
    976 
    977         IFQ_POLL(&ifp->if_snd, m_head);
    978         if (m_head == NULL)
    979                 return;
    980 
    981         //if (mos_encap(sc, m_head, 0)) {
    982         //      ifp->if_flags |= IFF_OACTIVE;
    983         //      return;
    984         //}
    985         IFQ_DEQUEUE(&ifp->if_snd, m_head);
    986957
    987958        /*
    988          * If there's a BPF listener, bounce a copy of this frame
    989          * to him.
     959         * start the USB transfers, if not already started:
    990960         */
    991         BPF_MTAP(ifp, m_head);
    992 
    993         /*
    994          * Set a timeout in case the chip goes out to lunch.
    995          */
    996         //ifp->if_timer = 5;
    997 
    998         return;
     961        usbd_transfer_start(sc->sc_xfer[MOS_ENDPT_TX]);
     962        usbd_transfer_start(sc->sc_xfer[MOS_ENDPT_RX]);
     963        usbd_transfer_start(sc->sc_xfer[MOS_ENDPT_INTR]);
    999964}
    1000965
     
    10421007        mos_setmulti(ue);
    10431008
    1044         mii_mediachg(GET_MII(sc));
     1009        usbd_xfer_set_stall(sc->sc_xfer[MOS_ENDPT_TX]);
    10451010
    10461011        ifp->if_flags |= IFF_DRV_RUNNING;
     
    10621027
    10631028        //XXX: Porting, how? mos_txeof(c->mos_xfer, c, stat);
    1064 
    1065         if (!IFQ_IS_EMPTY(&ifp->if_snd))
    1066                 mos_start(&sc->sc_ue);
    10671029}
    10681030
  • freebsd-mos-driver/if_mosreg.h

    r171 r173  
    179179
    180180struct mos_softc {
     181        struct usb_ether        sc_ue;
    181182//      struct device           mos_dev;
    182183//#define GET_MII(sc) (&(sc)->mos_mii)
     
    212213
    213214
    214         struct usb_ether        sc_ue;
    215215        struct mtx              sc_mtx;
    216216        struct usb_xfer *sc_xfer[MOS_ENDPT_MAX];
Note: See TracChangeset for help on using the changeset viewer.