Changeset 269 for freebsd-mos-driver


Ignore:
Timestamp:
Feb 6, 2011, 10:22:05 AM (14 years ago)
Author:
Rick van der Zwet
Message:
  • Get the right status header values.
  • Some cosmetic hacks
File:
1 edited

Legend:

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

    r268 r269  
    794794        struct ifnet            *ifp = uether_getifp(ue);
    795795
    796         u_int8_t                rxstat = 0;
    797         u_int32_t               actlen;
    798         u_int16_t               pktlen = 0;
    799         struct mbuf             *stat;
     796        uint8_t                 rxstat = 0;
     797        uint32_t                actlen;
     798        uint16_t                pktlen = 0;
    800799        struct usb_page_cache *pc;
    801800
     
    808807        case USB_ST_TRANSFERRED:
    809808                DPRINTF("read_callback actlen : %d\n", actlen);
    810                 if (actlen <= 1)
     809                if (actlen <= 1) {
    811810                        ifp->if_ierrors++;
    812811                        goto tr_setup;
    813 
    814                 usbd_copy_out(pc, actlen - sizeof(stat), &stat,
    815                     sizeof(stat));
     812                }
    816813
    817814                /* evaluate status byte at the end */
    818                 pktlen = actlen - 1;
    819                 rxstat = stat->m_pktdat[pktlen] & MOS_RXSTS_MASK;
     815                usbd_copy_out(pc, actlen - sizeof(rxstat), &rxstat,
     816                    sizeof(rxstat));
    820817
    821818                if (rxstat != MOS_RXSTS_VALID) {
     
    835832
    836833                if ( pktlen < sizeof(struct ether_header) ) {
     834                        DPRINTF("mos: pktlen %i is smaller than ether_header %i\n", pktlen, sizeof(struct ether_header));
    837835                        ifp->if_ierrors++;
    838836                        goto tr_setup;
     
    840838
    841839                uether_rxbuf(ue, pc, 0, actlen);
    842 
    843840  /* FALLTHROUGH */
    844841        case USB_ST_SETUP:
     
    908905                ifp->if_opackets++;
    909906                return;
    910   default: /* Error */
    911                         DPRINTF("%s: usb error on tx: %s\n", "mos", usbd_errstr(error));
    912                         ifp->if_oerrors++;
    913                         if (error != USB_ERR_CANCELLED) {
    914                           /* try to clear stall first */
    915                           usbd_xfer_set_stall(xfer);
    916                           goto tr_setup;
    917                         }
    918       return;
     907        default: /* Error */
     908                DPRINTF("%s: usb error on tx: %s\n", "mos", usbd_errstr(error));
     909                ifp->if_oerrors++;
     910                if (error != USB_ERR_CANCELLED) {
     911                  /* try to clear stall first */
     912                  usbd_xfer_set_stall(xfer);
     913                  goto tr_setup;
     914                }
     915                return;
    919916        }
    920917}
Note: See TracChangeset for help on using the changeset viewer.