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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to