All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger Quadros <roger.quadros@nokia.com>
To: ext Alan Stern <stern@rowland.harvard.edu>
Cc: <gregkh@suse.de>, <sshtylyov@mvista.com>,
	<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 2/3] usb: gadget: file_storage: Make CD-ROM emulation work with Mac OS-X
Date: Tue, 22 Mar 2011 16:39:12 +0200	[thread overview]
Message-ID: <4D88B490.9060606@nokia.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1103221022340.2292-100000@iolanthe.rowland.org>

On 03/22/2011 04:26 PM, ext Alan Stern wrote:
> On Tue, 22 Mar 2011, Roger Quadros wrote:
>
>> I have a question here.
>>
>> The host can request us to send less or more than the actual TOC size, since it
>> has no clue how big it is.
>> e.g. Linux host requests us to send only 12 bytes even though our formatted TOC
>> length is 20. In this case should we return fsg->data_size_from_cmnd instead of
>> actual TOC length?
>
> No.  Always return the actual TOC length.

OK.

>
>> e.g. Mac requests us to send 65534 bytes but our RAW TOC length is 37.
>> The file storage driver seems to be zero padding our data response. So we
>> respond with 65534 bytes, 37 of TOC and remaining zero padded.
>>
>> Can we do something like this to avoid unnecessary zero padded transfers?
>>
>>           ret = fsg_get_toc(curlun, msf, format, buf);
>>           if (ret<  0) {
>>                   curlun->sense_data = SS_INVALID_FIELD_IN_CDB;
>>                   return -EINVAL;
>>           } else if (ret>  fsg->data_size_from_cmnd) {
>>                   ret = fsg->data_size_from_cmnd;
>>           } else {
>>                   fsg->residue = ret;
>>           }
>>           return ret;
>
> Not needed (and not correct).  The code at the end of do_scsi_command()
> already does this:
>
> 		reply = min((u32) reply, fsg->data_size_from_cmnd);
> 		...
> 		fsg->residue -= reply;
>

Oh yes, this explains why to return the actual TOC length in do_read_toc().

However, if host asked for data more than the TOC length then residue will be 
greater than zero and this will result in zero padded transfers.

Not a big issue but should we be fixing it?

one way could be to set fsg->residue to actual TOC length. in do_read_toc().

-- 
regards,
-roger

  reply	other threads:[~2011-03-22 14:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-21 10:59 [PATCH v2 0/3] usb: gadget: storage: Make CD-ROM emulation work with Mac OS-X Roger Quadros
2011-03-21 10:59 ` [PATCH v2 1/3] usb: gadget: storage: Add fsg_get_toc helper Roger Quadros
2011-03-21 10:59   ` [PATCH v2 2/3] usb: gadget: file_storage: Make CD-ROM emulation work with Mac OS-X Roger Quadros
2011-03-21 10:59     ` [PATCH v2 3/3] usb: gadget: f_mass_storage: " Roger Quadros
2011-03-22 14:17     ` [PATCH v2 2/3] usb: gadget: file_storage: " Roger Quadros
2011-03-22 14:26       ` Alan Stern
2011-03-22 14:39         ` Roger Quadros [this message]
2011-03-22 15:13           ` Alan Stern
2011-03-23  8:20             ` Roger Quadros
2011-03-23 15:17               ` Alan Stern
2011-03-23 16:14                 ` Michal Nazarewicz
2011-03-21 14:20   ` [PATCH v2 1/3] usb: gadget: storage: Add fsg_get_toc helper Alan Stern
2011-03-21 15:29     ` Roger Quadros

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D88B490.9060606@nokia.com \
    --to=roger.quadros@nokia.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=sshtylyov@mvista.com \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.