diff options
author | wpaul <wpaul@FreeBSD.org> | 2000-01-14 00:49:28 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2000-01-14 00:49:28 +0000 |
commit | dd8ecc747f9ba945e64ed62031da95e7638919e2 (patch) | |
tree | 879c05e184c296f03baae34753e3ba056fc76d21 /sys | |
parent | 59fc142474158cbbfbae06872a4e3efaa40e777f (diff) | |
download | FreeBSD-src-dd8ecc747f9ba945e64ed62031da95e7638919e2.zip FreeBSD-src-dd8ecc747f9ba945e64ed62031da95e7638919e2.tar.gz |
Clean up rxeof routines a little.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/usb/if_aue.c | 5 | ||||
-rw-r--r-- | sys/dev/usb/if_kue.c | 21 |
2 files changed, 17 insertions, 9 deletions
diff --git a/sys/dev/usb/if_aue.c b/sys/dev/usb/if_aue.c index e260739..0e7ea70 100644 --- a/sys/dev/usb/if_aue.c +++ b/sys/dev/usb/if_aue.c @@ -985,14 +985,15 @@ static void aue_rxeof(xfer, priv, status) /* Put the packet on the special USB input queue. */ usb_ether_input(m); + return; done: -#ifdef foo + /* Setup new transfer. */ usbd_setup_xfer(xfer, sc->aue_ep[AUE_ENDPT_RX], c, mtod(c->aue_mbuf, char *), AUE_CUTOFF, USBD_SHORT_XFER_OK, USBD_NO_TIMEOUT, aue_rxeof); usbd_transfer(xfer); -#endif + return; } diff --git a/sys/dev/usb/if_kue.c b/sys/dev/usb/if_kue.c index 81fc45d..a42a7ab 100644 --- a/sys/dev/usb/if_kue.c +++ b/sys/dev/usb/if_kue.c @@ -698,13 +698,8 @@ static void kue_rxeof(xfer, priv, status) usbd_get_xfer_status(xfer, NULL, NULL, &total_len, NULL); m = c->kue_mbuf; - if (total_len <= 1) { - usbd_setup_xfer(c->kue_xfer, sc->kue_ep[KUE_ENDPT_RX], - c, mtod(c->kue_mbuf, char *), KUE_BUFSZ, USBD_SHORT_XFER_OK, - USBD_NO_TIMEOUT, kue_rxeof); - usbd_transfer(c->kue_xfer); - return; - } + if (total_len <= 1) + goto done; len = *mtod(m, u_int16_t *); m_adj(m, sizeof(u_int16_t)); @@ -712,6 +707,11 @@ static void kue_rxeof(xfer, priv, status) /* No errors; receive the packet. */ total_len = len; + if (len < sizeof(struct ether_header)) { + ifp->if_ierrors++; + goto done; + } + ifp->if_ipackets++; m->m_pkthdr.rcvif = (struct ifnet *)&kue_qdat; m->m_pkthdr.len = m->m_len = total_len; @@ -719,8 +719,15 @@ static void kue_rxeof(xfer, priv, status) /* Put the packet on the special USB input queue. */ usb_ether_input(m); + return; done: + /* Setup new transfer. */ + usbd_setup_xfer(c->kue_xfer, sc->kue_ep[KUE_ENDPT_RX], + c, mtod(c->kue_mbuf, char *), KUE_BUFSZ, USBD_SHORT_XFER_OK, + USBD_NO_TIMEOUT, kue_rxeof); + usbd_transfer(c->kue_xfer); + return; } |