Hi all, I'm writing a driver for our (custom-made) USB-serial converter using the usb_serial module. In order to setup the converter I have to send some Control URBs to the converter. Sending one Control URB works fine. But if I want to send more than one Control URB, I have to wait for the completion hanlder to finish, before I can send the next URB. (Please correct me, if I'm wrong) I need the result of the previous Control URB to determine what Control URB to send next.
Now here comes my question: How do I wait? I tried to wait with wait_queue and wake_up, but the kernel hangs. Kernel 2.4.18-3 (Red hat 7.3) Kind regards Thomas Wahrenbruch static void my_complete( struct urb *purb ) { char* p_dummy; int i; struct usb_serial_port *port; p_dummy = purb->transfer_buffer; printk(KERN_DEBUG "Transfer Buffer: "); for (i = 0; i < 8; i++) { printk(KERN_DEBUG "%02X ", (short)( p_dummy[i] & 0x00FF) ); } usb_unlink_urb( purb ); // notify ?! } static int open() { FILL_CONTROL_URB(.....); result = usb_submit_urb( my_urb ); // wait for completion handler !? if (transfer_buffer[x] == z) { FILL_CONTROL_URB(.....); result = usb_submit_urb( my_urb ); } else { .... } return 0; } _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel