summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2000-01-14 00:49:28 +0000
committerwpaul <wpaul@FreeBSD.org>2000-01-14 00:49:28 +0000
commitdd8ecc747f9ba945e64ed62031da95e7638919e2 (patch)
tree879c05e184c296f03baae34753e3ba056fc76d21 /sys
parent59fc142474158cbbfbae06872a4e3efaa40e777f (diff)
downloadFreeBSD-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.c5
-rw-r--r--sys/dev/usb/if_kue.c21
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;
}
OpenPOWER on IntegriCloud