lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 9 May 2011 12:25:58 +0300
From:	Felipe Balbi <balbi@...com>
To:	Tatyana Brokhman <tlinder@...eaurora.org>
Cc:	greg@...ah.com, linux-usb@...r.kernel.org,
	linux-arm-msm@...r.kernel.org, balbi@...com, ablay@...eaurora.org,
	Maya Erez <merez@...eaurora.org>,
	open list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v9 5/7] usb: Add streams support to the gadget framework

Hi,

On Sun, May 08, 2011 at 02:16:46PM +0300, Tatyana Brokhman wrote:
> This patch defines necessary fields to support streaming for USB3.0.
> It implements a new function (usb_ep_autoconfig_ss) to be used instead of
> the existing usb_ep_autoconfig when working in SS mode and there is a
> need to search for an endpoint according to the number of required
> streams.
> 
> Signed-off-by: Maya Erez <merez@...eaurora.org>
> Signed-off-by: Tatyana Brokhman <tlinder@...eaurora.org>
> 
> ---
>  drivers/usb/gadget/epautoconf.c |  125 +++++++++++++++++++++++++++++++--------
>  include/linux/usb/gadget.h      |   10 +++
>  2 files changed, 110 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
> index e7e373a..920d1fa 100644
> --- a/drivers/usb/gadget/epautoconf.c
> +++ b/drivers/usb/gadget/epautoconf.c
> @@ -63,13 +63,16 @@ static int
>  ep_matches (
>  	struct usb_gadget		*gadget,
>  	struct usb_ep			*ep,
> -	struct usb_endpoint_descriptor	*desc
> +	struct usb_endpoint_descriptor	*desc,
> +	struct usb_ss_ep_comp_descriptor *ep_comp
>  )
>  {
>  	u8		type;
>  	const char	*tmp;
>  	u16		max;
>  
> +	int		num_req_streams = 0;
> +
>  	/* endpoint already claimed? */
>  	if (NULL != ep->driver_data)
>  		return 0;
> @@ -129,6 +132,22 @@ ep_matches (
>  	}
>  
>  	/*
> +	 * Get the number of required streams from the EP companion
> +	 * descriptor and see if the EP matches it
> +	 */
> +	if (usb_endpoint_xfer_bulk(desc)) {
> +		if (ep_comp) {
> +			num_req_streams = ep_comp->bmAttributes & 0x1f;
> +			if (num_req_streams > ep->max_streams)
> +				return 0;

We would like the gadget drivers to all with all controllers, this would
likely be better to ask from controller driver for N streams but work if
we get less ? Something like:

struct usb_gadget_ops {
	...
	request_stream(struct usb_gadget *g, int max_streams);
};

if (usb_endpoint_xfer_bulk(desc)) {
	if (ep_comp) {
		num_req_streams = usb_gadget_request_streams(gadget,
			ep_comp->bmAttributes & 0x1f);

		/* now patch ep_comp descriptor */
		ep_comp->bmAttributes = num_req_streams;
	}
}

this way, different function drivers can request for a different number
of streams and controller driver is required to keep track of total
number of streams, and number of "busy" streams.

Another approach would be to require function drivers to request the
streams during bind by themselves and only give this layer correct
descriptors, which allow you to make those arguments const.

-- 
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ