aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/usb/net/if_ure.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/net/if_ure.c')
-rw-r--r--sys/dev/usb/net/if_ure.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c
index e9112f403ef5..c3f7b622d687 100644
--- a/sys/dev/usb/net/if_ure.c
+++ b/sys/dev/usb/net/if_ure.c
@@ -96,10 +96,12 @@ static const STRUCT_USB_HOST_ID ure_devs[] = {
USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i), \
USB_IFACE_CLASS(UICLASS_VENDOR), \
USB_IFACE_SUBCLASS(UISUBCLASS_VENDOR) }
+ URE_DEV(ELECOM, EDCQUA3C, 0),
URE_DEV(LENOVO, RTL8153, URE_FLAG_8153),
URE_DEV(LENOVO, TBT3LANGEN2, 0),
URE_DEV(LENOVO, ONELINK, 0),
URE_DEV(LENOVO, RTL8153_04, URE_FLAG_8153),
+ URE_DEV(LENOVO, ONELINKPLUS, URE_FLAG_8153),
URE_DEV(LENOVO, USBCLAN, 0),
URE_DEV(LENOVO, USBCLANGEN2, 0),
URE_DEV(LENOVO, USBCLANHYBRID, 0),
@@ -478,7 +480,7 @@ done:
}
/*
- * Probe for a RTL8152/RTL8153 chip.
+ * Probe for a RTL8152/RTL8153/RTL8156 chip.
*/
static int
ure_probe(device_t dev)
@@ -705,7 +707,13 @@ ure_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
/* set the necessary flags for rx checksum */
ure_rxcsum(caps, &pkt, m);
- uether_rxmbuf(ue, m, len - ETHER_CRC_LEN);
+ /*
+ * len has been known to be bogus at times,
+ * which leads to problems when passed to
+ * uether_rxmbuf(). Better understanding why we
+ * can get there make for good future work.
+ */
+ uether_rxmbuf(ue, m, 0);
}
off += roundup(len, URE_RXPKT_ALIGN);