cxacru: Use a bulk URB to access the command endpoint
Subsystems (3)
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
@@ -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
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_DEBUGis enabled after commitf661c6f8c67bd55e93348f160d590ff9edf08904, which checks for this mismatch.Signed-off-by Simon Arlott <[email protected]>--- drivers/usb/atm/cxacru.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-)drivers/usb/atm/cxacru.c +7
-7@@ -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