[U-Boot] [PATCH v2 2/5] ehci-hcd: Boost transfer speed

Marek Vasut marex at denx.de
Fri Jul 27 16:07:01 CEST 2012


Dear Benoît Thébaudeau,

[...]

> @@ -229,8 +230,23 @@ ehci_submit_async(struct usb_device *dev, unsigned
> long pipe, void *buffer, le16_to_cpu(req->value), le16_to_cpu(req->value),
>  		      le16_to_cpu(req->index));
> 
> +	if (req != NULL)			/* SETUP + ACK */
> +		qtd_count += 1 + 1;
> +	if (length > 0 || req == NULL) {	/* buffer */
> +		if ((uint32_t)buffer & 4095)		/* page-unaligned */
> +			qtd_count += DIV_ROUND_UP(((uint32_t)buffer & 4095) +
> +					length, (QT_BUFFER_CNT - 1) * 4096);
> +		else					/* page-aligned */
> +			qtd_count += DIV_ROUND_UP(length, QT_BUFFER_CNT * 4096);
> +	}

Ok, now I almost see it.

> +	qtd = memalign(USB_DMA_MINALIGN, qtd_count * sizeof(struct qTD));
> +	if (qtd == NULL) {
> +		printf("unable to allocate TDs\n");
> +		return -1;
> +	}
> +
>  	memset(qh, 0, sizeof(struct QH));
> -	memset(qtd, 0, 3 * sizeof(*qtd));
> +	memset(qtd, 0, qtd_count * sizeof(*qtd));
> 
>  	toggle = usb_gettoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe));
> 
[...]

I'm cool with the rest, I'll think about the calculation a bit though, since I'm 
not certain about it right away and let you know. Will you be submitting the 
series again or shall I just merge 3/5 and 4/5, apply this one and be done with 
it?

Best regards,
Marek Vasut


More information about the U-Boot mailing list