Skip to content

Commit cf8bf7c

Browse files
committed
Merge tag 'usb-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes from Greg KH: "Here are 4 USB fixes for your current tree. Two of them are reverts to hopefully resolve the nasty XHCI regressions we have been having on some types of devices. The other two are quirks for some Logitech video devices" * tag 'usb-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." usb: Make DELAY_INIT quirk wait 100ms between Get Configuration requests usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e
2 parents a491ce7 + 469d417 commit cf8bf7c

File tree

4 files changed

+11
-19
lines changed

4 files changed

+11
-19
lines changed

drivers/net/usb/ax88179_178a.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,20 +1029,12 @@ static int ax88179_bind(struct usbnet *dev, struct usb_interface *intf)
10291029
dev->mii.phy_id = 0x03;
10301030
dev->mii.supports_gmii = 1;
10311031

1032-
if (usb_device_no_sg_constraint(dev->udev))
1033-
dev->can_dma_sg = 1;
1034-
10351032
dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
10361033
NETIF_F_RXCSUM;
10371034

10381035
dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
10391036
NETIF_F_RXCSUM;
10401037

1041-
if (dev->can_dma_sg) {
1042-
dev->net->features |= NETIF_F_SG | NETIF_F_TSO;
1043-
dev->net->hw_features |= NETIF_F_SG | NETIF_F_TSO;
1044-
}
1045-
10461038
/* Enable checksum offload */
10471039
*tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
10481040
AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;

drivers/usb/core/config.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,10 @@ int usb_get_configuration(struct usb_device *dev)
717717
result = -ENOMEM;
718718
goto err;
719719
}
720+
721+
if (dev->quirks & USB_QUIRK_DELAY_INIT)
722+
msleep(100);
723+
720724
result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno,
721725
bigbuffer, length);
722726
if (result < 0) {

drivers/usb/core/quirks.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ static const struct usb_device_id usb_quirk_list[] = {
4747
/* Microsoft LifeCam-VX700 v2.0 */
4848
{ USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME },
4949

50+
/* Logitech HD Pro Webcams C920 and C930e */
51+
{ USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT },
52+
{ USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT },
53+
5054
/* Logitech Quickcam Fusion */
5155
{ USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME },
5256

drivers/usb/host/xhci.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4733,6 +4733,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
47334733
/* Accept arbitrarily long scatter-gather lists */
47344734
hcd->self.sg_tablesize = ~0;
47354735

4736+
/* support to build packet from discontinuous buffers */
4737+
hcd->self.no_sg_constraint = 1;
4738+
47364739
/* XHCI controllers don't stop the ep queue on short packets :| */
47374740
hcd->self.no_stop_on_short = 1;
47384741

@@ -4757,14 +4760,6 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
47574760
/* xHCI private pointer was set in xhci_pci_probe for the second
47584761
* registered roothub.
47594762
*/
4760-
xhci = hcd_to_xhci(hcd);
4761-
/*
4762-
* Support arbitrarily aligned sg-list entries on hosts without
4763-
* TD fragment rules (which are currently unsupported).
4764-
*/
4765-
if (xhci->hci_version < 0x100)
4766-
hcd->self.no_sg_constraint = 1;
4767-
47684763
return 0;
47694764
}
47704765

@@ -4793,9 +4788,6 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
47934788
if (xhci->hci_version > 0x96)
47944789
xhci->quirks |= XHCI_SPURIOUS_SUCCESS;
47954790

4796-
if (xhci->hci_version < 0x100)
4797-
hcd->self.no_sg_constraint = 1;
4798-
47994791
/* Make sure the HC is halted. */
48004792
retval = xhci_halt(xhci);
48014793
if (retval)

0 commit comments

Comments
 (0)