Skip to contentSkip to conversation

cxacru: Use a bulk URB to access the command endpoint

PATCH In review Simon Arlott 1 participant 2 messages Aug 30, 2010 – Aug 31, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cxacru: Use a bulk URB to access the command endpoint

The command endpoint is a bulk endpoint, but interrupt transfers are used to access it when checking status, load firmware or alter the configuration.

This causes an error if CONFIG_USB_DEBUG is enabled after commit f661c6f8c67bd55e93348f160d590ff9edf08904, which checks for this mismatch.

---
 drivers/usb/atm/cxacru.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
drivers/usb/atm/cxacru.c +7 -7
index 593fc5e..3b45f57 100644
@@ -49,7 +49,7 @@
 
 static const char cxacru_driver_name[] = "cxacru";
 
-#define CXACRU_EP_CMD		0x01	/* Bulk/interrupt in/out */
+#define CXACRU_EP_CMD		0x01	/* Bulk in/out */
 #define CXACRU_EP_DATA		0x02	/* Bulk in/out */
 
 #define CMD_PACKET_SIZE		64	/* Should be maxpacket(ep)? */
@@ -1171,15 +1171,15 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
 		goto fail;
 	}
 
-	usb_fill_int_urb(instance->rcv_urb,
-			usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD),
+	usb_fill_bulk_urb(instance->rcv_urb,
+			usb_dev, usb_rcvbulkpipe(usb_dev, CXACRU_EP_CMD),
 			instance->rcv_buf, PAGE_SIZE,
-			cxacru_blocking_completion, &instance->rcv_done, 1);
+			cxacru_blocking_completion, &instance->rcv_done);
 
-	usb_fill_int_urb(instance->snd_urb,
-			usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD),
+	usb_fill_bulk_urb(instance->snd_urb,
+			usb_dev, usb_sndbulkpipe(usb_dev, CXACRU_EP_CMD),
 			instance->snd_buf, PAGE_SIZE,
-			cxacru_blocking_completion, &instance->snd_done, 4);
+			cxacru_blocking_completion, &instance->snd_done);
 
 	mutex_init(&instance->cm_serialize);
 
Signature · 3 lines
1.7.0.4
-- 
Simon Arlott
#1 lore raw

Please drop this patch, I'll make a version that detects which type of endpoint it is and uses an interrupt or bulk URB as appropriate. Some devices which may/may not be compatible appear to have interrupt command endpoints as referenced in the original comment.

Quoted 48 lines · Simon Arlott

The command endpoint is a bulk endpoint, but interrupt transfers are used to access it when checking status, load firmware or alter the configuration.

This causes an error if CONFIG_USB_DEBUG is enabled after commit f661c6f8c67bd55e93348f160d590ff9edf08904, which checks for this mismatch.

---
 drivers/usb/atm/cxacru.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
drivers/usb/atm/cxacru.c +7 -7
index 593fc5e..3b45f57 100644
@@ -49,7 +49,7 @@
 
 static const char cxacru_driver_name[] = "cxacru";
 
-#define CXACRU_EP_CMD		0x01	/* Bulk/interrupt in/out */
+#define CXACRU_EP_CMD		0x01	/* Bulk in/out */
 #define CXACRU_EP_DATA		0x02	/* Bulk in/out */
 
 #define CMD_PACKET_SIZE		64	/* Should be maxpacket(ep)? */
@@ -1171,15 +1171,15 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
 		goto fail;
 	}
 
-	usb_fill_int_urb(instance->rcv_urb,
-			usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD),
+	usb_fill_bulk_urb(instance->rcv_urb,
+			usb_dev, usb_rcvbulkpipe(usb_dev, CXACRU_EP_CMD),
 			instance->rcv_buf, PAGE_SIZE,
-			cxacru_blocking_completion, &instance->rcv_done, 1);
+			cxacru_blocking_completion, &instance->rcv_done);
 
-	usb_fill_int_urb(instance->snd_urb,
-			usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD),
+	usb_fill_bulk_urb(instance->snd_urb,
+			usb_dev, usb_sndbulkpipe(usb_dev, CXACRU_EP_CMD),
 			instance->snd_buf, PAGE_SIZE,
-			cxacru_blocking_completion, &instance->snd_done, 4);
+			cxacru_blocking_completion, &instance->snd_done);
 
 	mutex_init(&instance->cm_serialize);
 
Signature · 1 line
Simon Arlott