All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] {Spam?} NetRxPackets
@ 2011-01-18  0:15 Marcel
  2011-01-18 21:08 ` [U-Boot] NetRxPackets Marcel
  0 siblings, 1 reply; 9+ messages in thread
From: Marcel @ 2011-01-18  0:15 UTC (permalink / raw)
  To: u-boot

Hi,

ether.c contains the following code :

 req->buf = (u8 *) NetRxPackets[0];
        req->length = size;
        req->complete = rx_complete;

        retval = usb_ep_queue(dev->out_ep, req, gfp_flags);


My USB controller code that I'm writing responds that req->buf is NULL. So the 
OUT packets don't get processed.
I know OUT data arrives in my controller code as I can read it, so my OUT 
endpoint is working. Also my status endpoint is working correctly and my guess 
is there's nothing wrong with my controller code. 

Anyone have an idea how NetRxPackets is allocated ?

Best regards,
Marcel

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

* [U-Boot] NetRxPackets
  2011-01-18  0:15 [U-Boot] {Spam?} NetRxPackets Marcel
@ 2011-01-18 21:08 ` Marcel
  2011-01-18 21:28   ` Wolfgang Denk
  0 siblings, 1 reply; 9+ messages in thread
From: Marcel @ 2011-01-18 21:08 UTC (permalink / raw)
  To: u-boot

On Tuesday, January 18, 2011 01:15:25 am Marcel wrote:
> Hi,
> 
> ether.c contains the following code :
> 
>  req->buf = (u8 *) NetRxPackets[0];
>         req->length = size;
>         req->complete = rx_complete;
> 
>         retval = usb_ep_queue(dev->out_ep, req, gfp_flags);
> 
> 
> My USB controller code that I'm writing responds that req->buf is NULL. So
> the OUT packets don't get processed.
> I know OUT data arrives in my controller code as I can read it, so my OUT
> endpoint is working. Also my status endpoint is working correctly and my
> guess is there's nothing wrong with my controller code.
> 
> Anyone have an idea how NetRxPackets is allocated ?

Nobody ?

req->buf = (u8 *) NetRxPackets[0];

This is returning an non existing buffer for some reason and I know not much 
about the ethernet layer to fix this. 
My guess is I miss some define (eth related) somewhere but I'm also about to 
give up on ether.c and just port a more simple driver to u-boot for testing 
USB device controller drivers.  

Any ideas why this could happen or how I can find out why that is ?

Best regards,
Marcel

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

* [U-Boot] NetRxPackets
  2011-01-18 21:08 ` [U-Boot] NetRxPackets Marcel
@ 2011-01-18 21:28   ` Wolfgang Denk
  2011-01-18 22:37     ` Marcel
  0 siblings, 1 reply; 9+ messages in thread
From: Wolfgang Denk @ 2011-01-18 21:28 UTC (permalink / raw)
  To: u-boot

Dear Marcel,

In message <201101182208.33651.korgull@home.nl> you wrote:
>
> > Anyone have an idea how NetRxPackets is allocated ?
> 
> Nobody ?

Well,you're supposed to do some basic code reading yourself.

> req->buf = (u8 *) NetRxPackets[0];
> 
> This is returning an non existing buffer for some reason and I know not much 
> about the ethernet layer to fix this. 

But you know how to use the search function in your favorite editor,
and tools like for example ctags or grep?

Hint: have a look at "net/net.c".

And note: as NetRxPackets[] is a static array I can't see how
NetRxPackets[0] should be a "non existing buffer".

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In C we had to code our own bugs, in C++ we can inherit them.

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

* [U-Boot] NetRxPackets
  2011-01-18 21:28   ` Wolfgang Denk
@ 2011-01-18 22:37     ` Marcel
  2011-01-18 22:53       ` Wolfgang Denk
  2011-01-18 22:54       ` Reinhard Meyer
  0 siblings, 2 replies; 9+ messages in thread
From: Marcel @ 2011-01-18 22:37 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

> > Nobody ?
> 
> Well,you're supposed to do some basic code reading yourself.

Of course. It's always the idea to post a question after reading for some 
time. It either means I don't understand the code, the code really doesn't 
work or I did miss the most important part in the documents. I guess the 
answer will follow once the issue is solved.
To be specific, I work with the u-boot-usb at91-cdc branch code. I'm not sure 
if that is all working code at this moment but sounded like the best starting 
point for my USB code.
 
> > req->buf = (u8 *) NetRxPackets[0];
> > 
> > This is returning an non existing buffer for some reason and I know not
> > much about the ethernet layer to fix this.
> 
> But you know how to use the search function in your favorite editor,
> and tools like for example ctags or grep?
> 
> Hint: have a look at "net/net.c".

I found that, but it doesn't make sense to me. I'll read it again and 
hopefully it makes sense to me than. Anyway, my knowledge of the ethernet part 
in u-boot is limited and I do not focus on ethernet. I will not use ether.c in 
the end anyway and I was just hoping it would work as a basis to test my new 
controller code. 

> And note: as NetRxPackets[] is a static array I can't see how
> NetRxPackets[0] should be a "non existing buffer".

Well, I guess the point where that's done doesn't show up nicely with grep.
I probably missed it and will start to read the ethernet code. I know little 
of the ethernet code so I feel that as of tomorrow I will skip ether.c and 
move on to implementing another driver for testing my controller code.

My feeling is that I miss something very simple, but I can be looking for it 
for days. Perhaps I missed some define or whatever, but I'm almost certain that 
I missed something extremely simple that causes NetRxPackets to be empty 
somehow.

regards,
Marcel

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

* [U-Boot] NetRxPackets
  2011-01-18 22:37     ` Marcel
@ 2011-01-18 22:53       ` Wolfgang Denk
  2011-01-18 23:41         ` Marcel
  2011-01-18 22:54       ` Reinhard Meyer
  1 sibling, 1 reply; 9+ messages in thread
From: Wolfgang Denk @ 2011-01-18 22:53 UTC (permalink / raw)
  To: u-boot

Dear Marcel,

In message <201101182337.32274.korgull@home.nl> you wrote:
> 
> > Hint: have a look at "net/net.c".
> 
> I found that, but it doesn't make sense to me. I'll read it again and 
> hopefully it makes sense to me than. Anyway, my knowledge of the ethernet part 
> in u-boot is limited and I do not focus on ethernet. I will not use ether.c in 
> the end anyway and I was just hoping it would work as a basis to test my new 
> controller code. 
> 
> > And note: as NetRxPackets[] is a static array I can't see how
> > NetRxPackets[0] should be a "non existing buffer".
> 
> Well, I guess the point where that's done doesn't show up nicely with grep.

Come on.  You will find a static array declaration when you know the
exact name of the file and the variable, right?



Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Status quo. Latin for "the mess we're in."

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

* [U-Boot] NetRxPackets
  2011-01-18 22:37     ` Marcel
  2011-01-18 22:53       ` Wolfgang Denk
@ 2011-01-18 22:54       ` Reinhard Meyer
  2011-01-18 23:27         ` Marcel
  1 sibling, 1 reply; 9+ messages in thread
From: Reinhard Meyer @ 2011-01-18 22:54 UTC (permalink / raw)
  To: u-boot

Dear Marcel,
>> Well,you're supposed to do some basic code reading yourself.
>
> Of course. It's always the idea to post a question after reading for some
> time. It either means I don't understand the code, the code really doesn't
> work or I did miss the most important part in the documents. I guess the
> answer will follow once the issue is solved.
> To be specific, I work with the u-boot-usb at91-cdc branch code. I'm not sure
> if that is all working code at this moment but sounded like the best starting
> point for my USB code.

Not sure that branch is anything up to date....

>
>>> req->buf = (u8 *) NetRxPackets[0];

*maybe* "req" itself is not allocated?

Best Regards,
Reinhard

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

* [U-Boot] NetRxPackets
  2011-01-18 22:54       ` Reinhard Meyer
@ 2011-01-18 23:27         ` Marcel
  2011-01-19  8:14           ` Vitaly Kuzmichev
  0 siblings, 1 reply; 9+ messages in thread
From: Marcel @ 2011-01-18 23:27 UTC (permalink / raw)
  To: u-boot

On Tuesday, January 18, 2011 11:54:22 pm Reinhard Meyer wrote:
> Dear Marcel,
> 
> >> Well,you're supposed to do some basic code reading yourself.
> > 
> > Of course. It's always the idea to post a question after reading for some
> > time. It either means I don't understand the code, the code really
> > doesn't work or I did miss the most important part in the documents. I
> > guess the answer will follow once the issue is solved.
> > To be specific, I work with the u-boot-usb at91-cdc branch code. I'm not
> > sure if that is all working code at this moment but sounded like the
> > best starting point for my USB code.
> 
> Not sure that branch is anything up to date....

hmmm.  What branch is best to work on for this code ?
 
> >>> req->buf = (u8 *) NetRxPackets[0];
> 
> *maybe* "req" itself is not allocated?

Good question. My code that rejects the buffer is this :

static int
usba_ep_queue(struct usb_ep *_ep, 
              struct usb_request *_req, 
              gfp_t gfp_flags)
{
        struct usba_request *req = container_of(_req, struct usba_request, 
req);
        struct usba_ep *ep = container_of(_ep, struct usba_ep, ep);
        struct usba_udc *udc = ep->udc;
        int ret;
        
        debug("%s: queue req %p, len %u\n",
                        ep->ep.name, req, _req->length);
              
        if (!_req || !_req->complete
                        || !_req->buf || !list_empty(&req->queue)) {
          
                DBG("invalid request\n");
                if(!_req) debug("NO REQUEST\n");
                if(!_req->complete) debug("NO REQUEST COMPLETE\n");
                if(!_req->buf) debug("NO REQUEST BUF\n");
                if(!list_empty(&req->queue)) debug("NO LIST EMPTY\n");
                return -EINVAL;
        }

It just keeps failing with "NO REQUEST BUF". I feel like I'm staring at a typo 
for days and just don't see it.

regards,
Marcel

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

* [U-Boot] NetRxPackets
  2011-01-18 22:53       ` Wolfgang Denk
@ 2011-01-18 23:41         ` Marcel
  0 siblings, 0 replies; 9+ messages in thread
From: Marcel @ 2011-01-18 23:41 UTC (permalink / raw)
  To: u-boot

On Tuesday, January 18, 2011 11:53:38 pm Wolfgang Denk wrote:
> Dear Marcel,
> 
> In message <201101182337.32274.korgull@home.nl> you wrote:
> > > Hint: have a look at "net/net.c".
> > 
> > I found that, but it doesn't make sense to me. I'll read it again and
> > hopefully it makes sense to me than. Anyway, my knowledge of the ethernet
> > part in u-boot is limited and I do not focus on ethernet. I will not use
> > ether.c in the end anyway and I was just hoping it would work as a basis
> > to test my new controller code.
> > 
> > > And note: as NetRxPackets[] is a static array I can't see how
> > > NetRxPackets[0] should be a "non existing buffer".
> > 
> > Well, I guess the point where that's done doesn't show up nicely with
> > grep.
> 
> Come on.  You will find a static array declaration when you know the
> exact name of the file and the variable, right?

Well finding it is not the issue. I can't find a reason why it wouldn't work.

Regards,
Marcel

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

* [U-Boot] NetRxPackets
  2011-01-18 23:27         ` Marcel
@ 2011-01-19  8:14           ` Vitaly Kuzmichev
  0 siblings, 0 replies; 9+ messages in thread
From: Vitaly Kuzmichev @ 2011-01-19  8:14 UTC (permalink / raw)
  To: u-boot

Hi Marcel,

Marcel wrote:
>> Not sure that branch is anything up to date....
>
> hmmm.  What branch is best to work on for this code ?

If someone sends USB-CDC patches they usually are applied into master
branch of u-boot-usb.git repository:
http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot/u-boot-usb.git;a=summary

AFAIK, master branch of u-boot main repository is also working well, but
I haven't checked whether all recent patches are pulled into main
repository.
If you are using another version of u-boot (one of the previous
releases) the driver in your version may be broken.

According to the log from "Usage of DMA" thread I think your gadget
stack is up to date.

>>>>> req->buf = (u8 *) NetRxPackets[0];
>>
>> *maybe* "req" itself is not allocated?
> 
> Good question. My code that rejects the buffer is this :
> 
> [...]
>         if (!_req || !_req->complete
>                         || !_req->buf || !list_empty(&req->queue)) {
>           
>                 DBG("invalid request\n");
>                 if(!_req) debug("NO REQUEST\n");
>                 if(!_req->complete) debug("NO REQUEST COMPLETE\n");
>                 if(!_req->buf) debug("NO REQUEST BUF\n");
>                 if(!list_empty(&req->queue)) debug("NO LIST EMPTY\n");
>                 return -EINVAL;
>         }
> 
> It just keeps failing with "NO REQUEST BUF". I feel like I'm staring at a typo 
> for days and just don't see it.

I suppose that usage of kzalloc in usba_ep_alloc_request (if you haven't
changed it) may be not well. at91_udc driver (for example) uses static
pool for requests allocation.

Anyway it's strange. I have a suspicion that buf was set to NULL
somewhere inside atmel_usba_udc.


____
With best regards,
Vitaly.

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

end of thread, other threads:[~2011-01-19  8:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-18  0:15 [U-Boot] {Spam?} NetRxPackets Marcel
2011-01-18 21:08 ` [U-Boot] NetRxPackets Marcel
2011-01-18 21:28   ` Wolfgang Denk
2011-01-18 22:37     ` Marcel
2011-01-18 22:53       ` Wolfgang Denk
2011-01-18 23:41         ` Marcel
2011-01-18 22:54       ` Reinhard Meyer
2011-01-18 23:27         ` Marcel
2011-01-19  8:14           ` Vitaly Kuzmichev

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.