Hi, >> How to set "bh->state" to BUF_STATE_EMPTY after the buffer is processed? > > It gets set to BUF_STATE_EMPTY in several different places, depending > on the purpose the buffer was used for. See bulk_in_complete (your UDC > driver should call this routine for every request over a bulk-IN > endpoint, when it is safe for the gadget driver to overwrite the data > in the transfer buffer and re-use the request). See also > get_next_command, the line just after the call to received_cbw. Thanks, i added in UDC driver to call bulk_in_complete for every request over a bulk in ep, now the gadget driver is able to process the SCSI Inquiry command. When it comes to SCSI Read Format Capacities command, the gadget driver gives attention condition error in check_command() in the code snippet below, and the command is not processed by do_read_format_capacities(). if (curlun && curlun->unit_attention_data != SS_NO_SENSE && fsg->cmnd[0] != INQUIRY && fsg->cmnd[0] != REQUEST_SENSE) { curlun->sense_data = curlun->unit_attention_data; curlun->unit_attention_data = SS_NO_SENSE; return -EINVAL; } Besides the code snippet, the only place that sets unit_attention data to SS_NO_SENSE is in handle_exception(). How is UDC driver able to overcome this problem? victor -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html