All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c
@ 2010-08-14  8:19 Stefano Babic
  2010-08-14 12:23 ` Sergei Shtylyov
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Stefano Babic @ 2010-08-14  8:19 UTC (permalink / raw)
  To: u-boot

The buffer for the status request must be word aligned
because it is accessed with 32 bit pointer in the
eth_status_complete function.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 drivers/usb/gadget/ether.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 313f15f..0b4ed18 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -684,7 +684,7 @@ static struct usb_gadget_strings	stringtab = {
 
 /*============================================================================*/
 static u8 control_req[USB_BUFSIZ];
-static u8 status_req[STATUS_BYTECOUNT];
+static u8 status_req[STATUS_BYTECOUNT] __attribute__ ((aligned(32)));
 
 
 
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-14  8:19 [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c Stefano Babic
@ 2010-08-14 12:23 ` Sergei Shtylyov
  2010-08-14 15:44   ` Remy Bohmer
  2010-08-15 12:16   ` Stefano Babic
  2010-08-14 15:22 ` Remy Bohmer
  2010-08-15 12:18 ` [U-Boot] [PATCH V3 " Stefano Babic
  2 siblings, 2 replies; 9+ messages in thread
From: Sergei Shtylyov @ 2010-08-14 12:23 UTC (permalink / raw)
  To: u-boot

Hello.

Stefano Babic wrote:

> The buffer for the status request must be word aligned
> because it is accessed with 32 bit pointer in the
> eth_status_complete function.

> Signed-off-by: Stefano Babic <sbabic@denx.de>
[...]
> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
> index 313f15f..0b4ed18 100644
> --- a/drivers/usb/gadget/ether.c
> +++ b/drivers/usb/gadget/ether.c
> @@ -684,7 +684,7 @@ static struct usb_gadget_strings	stringtab = {
>  
>  /*============================================================================*/
>  static u8 control_req[USB_BUFSIZ];
> -static u8 status_req[STATUS_BYTECOUNT];
> +static u8 status_req[STATUS_BYTECOUNT] __attribute__ ((aligned(32)));

    You're aligning to 32 *bytes* -- is that what you meant by "32 bit pointer"?

WBR, Sergei

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-14  8:19 [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c Stefano Babic
  2010-08-14 12:23 ` Sergei Shtylyov
@ 2010-08-14 15:22 ` Remy Bohmer
  2010-08-15 12:18 ` [U-Boot] [PATCH V3 " Stefano Babic
  2 siblings, 0 replies; 9+ messages in thread
From: Remy Bohmer @ 2010-08-14 15:22 UTC (permalink / raw)
  To: u-boot

Hi,

2010/8/14 Stefano Babic <sbabic@denx.de>:
> The buffer for the status request must be word aligned
> because it is accessed with 32 bit pointer in the
> eth_status_complete function.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
> ?drivers/usb/gadget/ether.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)

Applied to u-boot-usb/cdc

Thanks.

Remy

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-14 12:23 ` Sergei Shtylyov
@ 2010-08-14 15:44   ` Remy Bohmer
  2010-08-15 12:16   ` Stefano Babic
  1 sibling, 0 replies; 9+ messages in thread
From: Remy Bohmer @ 2010-08-14 15:44 UTC (permalink / raw)
  To: u-boot

Hi,

2010/8/14 Sergei Shtylyov <sshtylyov@mvista.com>:
> Hello.
>
> Stefano Babic wrote:
>
>> The buffer for the status request must be word aligned
>> because it is accessed with 32 bit pointer in the
>> eth_status_complete function.
>
>> Signed-off-by: Stefano Babic <sbabic@denx.de>
>
> [...]
>>
>> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
>> index 313f15f..0b4ed18 100644
>> --- a/drivers/usb/gadget/ether.c
>> +++ b/drivers/usb/gadget/ether.c
>> @@ -684,7 +684,7 @@ static struct usb_gadget_strings ? ?stringtab = {
>>
>> ?/*============================================================================*/
>> ?static u8 control_req[USB_BUFSIZ];
>> -static u8 status_req[STATUS_BYTECOUNT];
>> +static u8 status_req[STATUS_BYTECOUNT] __attribute__ ((aligned(32)));
>
> ? You're aligning to 32 *bytes* -- is that what you meant by "32 bit
> pointer"?

Whoops... Good remark... Overlooked it myself...
Unapplied it...

Kind regards,

Remy

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-14 12:23 ` Sergei Shtylyov
  2010-08-14 15:44   ` Remy Bohmer
@ 2010-08-15 12:16   ` Stefano Babic
  1 sibling, 0 replies; 9+ messages in thread
From: Stefano Babic @ 2010-08-15 12:16 UTC (permalink / raw)
  To: u-boot

Sergei Shtylyov wrote:
> Hello.
> 
> Stefano Babic wrote:
> 
>> The buffer for the status request must be word aligned
>> because it is accessed with 32 bit pointer in the
>> eth_status_complete function.
> 
>> Signed-off-by: Stefano Babic <sbabic@denx.de>
> [...]
>> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
>> index 313f15f..0b4ed18 100644
>> --- a/drivers/usb/gadget/ether.c
>> +++ b/drivers/usb/gadget/ether.c
>> @@ -684,7 +684,7 @@ static struct usb_gadget_strings    stringtab = {
>>  
>>  /*============================================================================*/
>>
>>  static u8 control_req[USB_BUFSIZ];
>> -static u8 status_req[STATUS_BYTECOUNT];
>> +static u8 status_req[STATUS_BYTECOUNT] __attribute__ ((aligned(32)));
> 
>    You're aligning to 32 *bytes* -- is that what you meant by "32 bit
> pointer"?

Oooopsss ! Thanks, I fix it

Best regards,
Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V3 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-14  8:19 [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c Stefano Babic
  2010-08-14 12:23 ` Sergei Shtylyov
  2010-08-14 15:22 ` Remy Bohmer
@ 2010-08-15 12:18 ` Stefano Babic
  2010-08-15 12:19   ` [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send Stefano Babic
  2010-08-15 16:18   ` [U-Boot] [PATCH V3 1/2] USB-CDC: correct wrong alignment in ether.c Remy Bohmer
  2 siblings, 2 replies; 9+ messages in thread
From: Stefano Babic @ 2010-08-15 12:18 UTC (permalink / raw)
  To: u-boot

The buffer for the status request must be word aligned
because it is accessed with 32 bit pointer in the
eth_status_complete function.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 drivers/usb/gadget/ether.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index c601d4a..9fc6a36 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -677,7 +677,7 @@ static struct usb_gadget_strings	stringtab = {
 
 /*============================================================================*/
 static u8 control_req[USB_BUFSIZ];
-static u8 status_req[STATUS_BYTECOUNT];
+static u8 status_req[STATUS_BYTECOUNT] __attribute__ ((aligned(4)));
 
 
 
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send
  2010-08-15 12:18 ` [U-Boot] [PATCH V3 " Stefano Babic
@ 2010-08-15 12:19   ` Stefano Babic
  2010-08-15 16:17     ` Remy Bohmer
  2010-08-15 16:18   ` [U-Boot] [PATCH V3 1/2] USB-CDC: correct wrong alignment in ether.c Remy Bohmer
  1 sibling, 1 reply; 9+ messages in thread
From: Stefano Babic @ 2010-08-15 12:19 UTC (permalink / raw)
  To: u-boot

The patch removes an endless loop  in the usb_eth_send
if the tx_complete is not called before going
in the loop. The driver interrupt routine is called
allowing the driver to check if the TX is completed.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 drivers/usb/gadget/ether.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 9fc6a36..2965299 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -1801,6 +1801,8 @@ static int usb_eth_send(struct eth_device* netdev, volatile void* packet, int le
 	int			retval;
 	struct usb_request	*req = NULL;
 	struct eth_dev		*dev = &l_ethdev;
+ 	unsigned long ts;
+ 	unsigned long timeout = USB_CONNECT_TIMEOUT;
 
 	debug("%s:...\n", __func__);
 
@@ -1826,6 +1828,8 @@ static int usb_eth_send(struct eth_device* netdev, volatile void* packet, int le
 			? ((dev->tx_qlen % qmult) != 0) : 0;
 #endif
 	dev->tx_qlen=1;
+ 	ts = get_timer(0);
+ 	packet_sent = 0;
 
 	retval = usb_ep_queue (dev->in_ep, req, GFP_ATOMIC);
 
@@ -1833,7 +1837,11 @@ static int usb_eth_send(struct eth_device* netdev, volatile void* packet, int le
 		debug("%s: packet queued\n", __func__);
 	while(!packet_sent)
 	{
-		packet_sent=0;
+ 		if (get_timer(ts) > timeout) {
+ 			printf("timeout sending packets to usb ethernet\n");
+ 			return -1;
+ 		}
+ 		usb_gadget_handle_interrupts();
 	}
 
 	return 0;
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send
  2010-08-15 12:19   ` [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send Stefano Babic
@ 2010-08-15 16:17     ` Remy Bohmer
  0 siblings, 0 replies; 9+ messages in thread
From: Remy Bohmer @ 2010-08-15 16:17 UTC (permalink / raw)
  To: u-boot

Hi,

2010/8/15 Stefano Babic <sbabic@denx.de>:
> The patch removes an endless loop ?in the usb_eth_send
> if the tx_complete is not called before going
> in the loop. The driver interrupt routine is called
> allowing the driver to check if the TX is completed.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
> ?drivers/usb/gadget/ether.c | ? 10 +++++++++-
> ?1 files changed, 9 insertions(+), 1 deletions(-)

Applied to u-boot-usb/cdc
Thanks.

Remy

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH V3 1/2] USB-CDC: correct wrong alignment in ether.c
  2010-08-15 12:18 ` [U-Boot] [PATCH V3 " Stefano Babic
  2010-08-15 12:19   ` [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send Stefano Babic
@ 2010-08-15 16:18   ` Remy Bohmer
  1 sibling, 0 replies; 9+ messages in thread
From: Remy Bohmer @ 2010-08-15 16:18 UTC (permalink / raw)
  To: u-boot

Hi,

2010/8/15 Stefano Babic <sbabic@denx.de>:
> The buffer for the status request must be word aligned
> because it is accessed with 32 bit pointer in the
> eth_status_complete function.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
> ?drivers/usb/gadget/ether.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)

Applied to u-boot-usb/cdc
Thanks.

Remy

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-08-15 16:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-14  8:19 [U-Boot] [PATCH V2 1/2] USB-CDC: correct wrong alignment in ether.c Stefano Babic
2010-08-14 12:23 ` Sergei Shtylyov
2010-08-14 15:44   ` Remy Bohmer
2010-08-15 12:16   ` Stefano Babic
2010-08-14 15:22 ` Remy Bohmer
2010-08-15 12:18 ` [U-Boot] [PATCH V3 " Stefano Babic
2010-08-15 12:19   ` [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send Stefano Babic
2010-08-15 16:17     ` Remy Bohmer
2010-08-15 16:18   ` [U-Boot] [PATCH V3 1/2] USB-CDC: correct wrong alignment in ether.c Remy Bohmer

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.