Browse Source

Reinstate the maxPacketSize determined by the end descriptor but allow the driver to override it.

Con Kolivas 12 years ago
parent
commit
abdf7510c9
2 changed files with 8 additions and 6 deletions
  1. 7 6
      usbutils.c
  2. 1 0
      usbutils.h

+ 7 - 6
usbutils.c

@@ -2182,16 +2182,17 @@ usb_bulk_transfer(struct libusb_device_handle *dev_handle,
 		  int *transferred, unsigned int timeout,
 		  struct cgpu_info *cgpu)
 {
+	uint16_t MaxPacketSize;
 	int err, tries = 0;
 
 	/* Limit length of transfer to the largest this descriptor supports
 	 * and leave the higher level functions to transfer more if needed. */
-#if 0
-	if (length > cgpu->usbdev->found->wMaxPacketSize)
-		length = cgpu->usbdev->found->wMaxPacketSize;
-#endif
-	if (length > 512)
-		length = 512;
+	if (cgpu->usbdev->PrefPacketSize)
+		MaxPacketSize = cgpu->usbdev->PrefPacketSize;
+	else
+		MaxPacketSize = cgpu->usbdev->found->wMaxPacketSize;
+	if (length > MaxPacketSize)
+		length = MaxPacketSize;
 
 	cg_rlock(&cgusb_fd_lock);
 	err = libusb_bulk_transfer(dev_handle, endpoint, data, length,

+ 1 - 0
usbutils.h

@@ -176,6 +176,7 @@ struct cg_usb_device {
 	char *buffer;
 	uint32_t bufsiz;
 	uint32_t bufamt;
+	uint16_t PrefPacketSize;
 };
 
 #define USB_NOSTAT 0