public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: tlinder@codeaurora.org
To: "David Brownell" <david-b@pacbell.net>
Cc: linux-usb@vger.kernel.org, "tlinder" <tlinder@codeaurora.org>,
	"David Brownell" <dbrownell@users.sourceforge.net>,
	"Greg Kroah-Hartman" <gregkh@suse.de>,
	"Michal Nazarewicz" <m.nazarewicz@samsung.com>,
	"Randy Dunlap" <randy.dunlap@oracle.com>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	"Robert Lukassen" <robert.lukassen@tomtom.com>,
	"Sarah Sharp" <sarah.a.sharp@linux.intel.com>,
	"Matthew Wilcox" <willy@linux.intel.com>,
	"Fabien Chouteau" <fabien.chouteau@barco.com>,
	"Tejun Heo" <tj@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC/PATCH 2/2] usb:gadget: Add SuperSpeed support to the  Gadget Framework
Date: Mon, 4 Oct 2010 06:57:09 -0700 (PDT)	[thread overview]
Message-ID: <4b3ddcee66c62d34bd9cb8fb3bf0c447.squirrel@www.codeaurora.org> (raw)
In-Reply-To: <568203.56459.qm@web180308.mail.gq1.yahoo.com>

>
>
> --- On Sun, 10/3/10, tlinder <tlinder@codeaurora.org> wrote:
>
>> In order not to force all the FDs to supply
>
> What do File Descriptors have to do with this?
>
> If you don't mean FD == File Descriptor, then
> please spell out what you do mean, instead of
> trying to repurpose a widely used abbreviation.

By FD we meant Function Drivers. We'll update the patch description.

>
>
> SuperSpeed
>> descriptors when
>> operating in SuperSpeed mode the following approach was
>> taken:
>> If we're operating in SuperSpeed mode and the FD didn't
>> supply SuperSpeed
>> descriptors, the composite layer will automatically create
>> SuperSpeed
>> descriptors with default values.
>
> That bothers me in two ways.  First, I want to
> see a solution that maintains today's policy where
> the composite framework is optional for all gadget
> drivers.

This policy is maintained. Gadget drivers are not required to use the
composite framework in order to work in SuperSpeed mode. If a certain
driver wishes to do so, without using the composite framework, it should
add definitions of SuperSpeed descriptors and support of new SuperSpeed
features. If a driver wishes to work in High/Low speeds then no changes
are needed.
Please note that this change is backward compatible.
In order to test a non composite gadget driver we used the File storage.
We managed to load the file_storage gadget driver (while the SuperSpeed
gadget flag is enabled) and the File Storage successfully registered as a
high speed driver and enumerated with a super speed host.
We also tested a composite gadget driver (mass storage) that defines the
descriptors and doesn't use the automatic and it worked successfully.
All the other gadget drivers were also tested using the automatic
composite framework and managed to enumerate.


>
> Second, that kind of automagic bothers me.
>
> What could be wrong with expecting gadget
> drivers to provide all the descriptors they need,
> instead of introducing automagic?

In the current implementation a gadget driver can still provide his own
SuperSpeed descriptors as it provides HighSpeed descriptors and not use
the automation.
Implementing the automatic creation of the SuperSpeed descriptors approach
has several benefits:
1. All existing gadget drivers (that use the composite framework) are
operational in SuperSpeed mode without any modifications to their code
2. Code duplication, of the additional SuperSpeed descriptors in each
existing gadget driver, is spared: A gadget driver that doesn't wish to
exploit the SuperSpeed capabilities (such as streaming for example) but
wishes to operate in a SuperSpeed mode is not required to provide
additional SuperSpeed descriptors with default values (meaning, that none
of the SuperSpeed capabilities are supported by it). Such will be created
for it automatically.
2. Single snippet of code tested for all existing gadget drivers


>
>
>> Support for new SuperSpeed BOS descriptor was
>
> Wireless USB BOS descriptors exist too, yes?  Does
> this approach cover them, or just SuperSpeed?  (We
> may someday want to support Wireless USB on the
> peripheral/gadget side too...

In the current implementation the composite framework supports
GetDescriptor(BOS) request only if the gadget driver supports SuperSpeed.
In order to extend this functionality for wireless USB one should add
another condition (is_wireless_USB()) to the existing if().

>
>
>
>> +++++++++++++++++++++++++++++++++++++---
>>  include/linux/usb/ch9.h
>
> I like to see patches related to USB-IF formats
> and protocols be separate from functional changes
> in the USB stack or its drivers. which may rely
> on those formats/protocols; less entanglement.

We will divide this patch into two patches.

>        
>> +
>
>> +config USB_GADGET_SUPERSPEED
>> +    boolean "Gadget opperating in Super
>> Speed"
>> +    depends on USB_GADGET
>> +    depends on USB_GADGET_DUALSPEED
>> +    default n
>> +    help
>> +      Enabling this feature enables
>> Super Speed support in the Gadget
>> +      driver. It means that gadget
>> drivers should include extra (SuperSpeed)
>> +      descriptors.
>
> That is:  the automagic isn't needed.  The
> concepts in this patch seem to be a bit on
> the self-contradictory side...

You are correct. We should change the comment as follows;
"...It means that gadget drivers should provide extra (SuperSpeed)
descriptors to the host."

>
> ep_comp_desc = {
>> +        .bDescriptorType =
>> USB_DT_SS_ENDPOINT_COMP,
>> +        .bLength = 0x06,
>> +        .bMaxBurst = 0,
>> /*the default is we don't support bursting*/
>
> I've not followed the SuperSpeed stuff as closely
> as I might, but ... doesn't bursting require some
> hardware support?  So that not all UDC + driver
> stacks can support it?   (That'd be a case, if so,
> for more sanity checks ... and the gadget driver to
> explicitly say if it handles bursting.

You're right. Bursting and streaming functionality support is defined by
the UDC and not the gadget framework.
Due to the above, the create_ss_descriptors() is used for providing
default SuperSpeed descriptors, meaning that streaming and bursting is not
supported.


>
>
>
>



  reply	other threads:[~2010-10-04 13:57 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-03  8:02 [RFC/PATCH 2/2] usb:gadget: Add SuperSpeed support to the Gadget Framework tlinder
2010-10-03 16:41 ` Alan Stern
2010-10-03 19:36 ` David Brownell
2010-10-05  7:15   ` tlinder
2010-11-11  6:24     ` [RFC/PATCH 2/2 RESENd] " Tanya Brokhman
2010-10-03 20:25 ` [RFC/PATCH 2/2] " David Brownell
2010-10-04 13:57   ` tlinder [this message]
2010-11-11  6:11     ` [RFC/PATCH 2/2 RESEND] " tlinder
2010-10-06 15:16   ` [RFC/PATCH 2/2] " David Vrabel
2010-10-04  7:26 ` Sarah Sharp
2010-10-05 11:53   ` tlinder
2010-10-05 18:11     ` Sarah Sharp
2010-10-06  9:16       ` tlinder
2010-10-11  3:06         ` David Brownell
2010-10-12  9:17           ` Brokhman Tatyana
2010-11-11  6:27             ` [RFC/PATCH 2/2 RESEND] " Tanya Brokhman
2010-10-04 14:21 ` [RFC/PATCH 2/2] " Maulik Mankad
2010-10-06 19:30 ` tlinder

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=4b3ddcee66c62d34bd9cb8fb3bf0c447.squirrel@www.codeaurora.org \
    --to=tlinder@codeaurora.org \
    --cc=david-b@pacbell.net \
    --cc=dbrownell@users.sourceforge.net \
    --cc=fabien.chouteau@barco.com \
    --cc=gregkh@suse.de \
    --cc=kyungmin.park@samsung.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.nazarewicz@samsung.com \
    --cc=randy.dunlap@oracle.com \
    --cc=robert.lukassen@tomtom.com \
    --cc=sarah.a.sharp@linux.intel.com \
    --cc=tj@kernel.org \
    --cc=willy@linux.intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox