summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>2000-01-14 00:49:28 +0000
committerBill Paul <wpaul@FreeBSD.org>2000-01-14 00:49:28 +0000
commitf1a80ccf63d542b3b8601cdf0e19478f34f7237e (patch)
treef68d5fed52ef03b1ff1cbf5ae4fd31219e27c679
parent0f210c922b80eef92f841effdded7996a621a9da (diff)
Notes
-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 e2607396f966..0e7ea70279f8 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 81fc45def1c6..a42a7abc0af0 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;
}