[U-Boot-Users] Blocking network in ixp425

Hi,
I'm working with the ixp425 based system. The u-boot is also working fine except I noticed that the network calls like eth_rx is blocking. That creates problem with the software that has to work with the U-boot because whole system is block and timing and stuff won't work.
I know that some systems have non-blocking network functions (like the one where I took the software that I'm working on with ixp425) so is it possible to get them for ixp425 too? Can it be done by configuration or does it need some code changes?
For reason beyond me I have to use base version 1.1.2, but I can take some stuff from newer version if it's required to get the non-blocking network commands to work.
Thanks.
Teemu K.

On Tuesday 05 June 2007, Teemu Keskinarkaus wrote:
I'm working with the ixp425 based system. The u-boot is also working fine except I noticed that the network calls like eth_rx is blocking. That creates problem with the software that has to work with the U-boot because whole system is block and timing and stuff won't work.
I have to admit, that I don't really know what you mean. When U-Boot is doing ethernet communication, it is not doing anything else. Or am I missing something here?
Of course, timeout handling should work while doing ethernet traffic.
I know that some systems have non-blocking network functions (like the one where I took the software that I'm working on with ixp425) so is it possible to get them for ixp425 too? Can it be done by configuration or does it need some code changes?
Not sure what you talk about. But such changes will require code changes.
For reason beyond me I have to use base version 1.1.2, but I can take some stuff from newer version if it's required to get the non-blocking network commands to work.
Please try to use the current (to-of-git) version of U-Boot. What error message do you get?
Best regards, Stefan
===================================================================== 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@denx.de =====================================================================

From: Stefan Roese [mailto:sr@denx.de] On Tuesday 05 June 2007, Teemu Keskinarkaus wrote:
I'm working with the ixp425 based system. The u-boot is also working fine except I noticed that the network calls like eth_rx is
blocking.
That creates problem with the software that has to work with the
U-boot
because whole system is block and timing and stuff won't work.
I have to admit, that I don't really know what you mean. When U-Boot
is
doing ethernet communication, it is not doing anything else. Or am I missing something here?
Of course, timeout handling should work while doing ethernet traffic.
I ment, like I understand the blocking/non-blocking, that function does not exit before it gets something and for example eth_rx case it does not return before it gets message from network.
How do I setup that timeout if that is possible? I looked the ixp425_recv correctly there isn't any timeout. Only sleep between polls to buffer? Maybe that part could be modified the way that it only waits for some time and then exits telling that buffer len is 0. Don't know what that breaks though.
For reason beyond me I have to use base version 1.1.2, but I can
take
some stuff from newer version if it's required to get the
non-blocking
network commands to work.
Please try to use the current (to-of-git) version of U-Boot. What
error
message do you get?
Like I said, reasons beyond me I have to use base version 1.1.2. It's not about what error message I get or not. I know, it does not make sense for me either.
Teemu K.

On Tuesday 05 June 2007, Teemu Keskinarkaus wrote:
I have to admit, that I don't really know what you mean. When U-Boot is doing ethernet communication, it is not doing anything else. Or am I missing something here?
Of course, timeout handling should work while doing ethernet traffic.
I ment, like I understand the blocking/non-blocking, that function does not exit before it gets something and for example eth_rx case it does not return before it gets message from network.
Yes, you could be right here. IIRC the U-Boot ethernet driver should return either with or without a package.
How do I setup that timeout if that is possible? I looked the ixp425_recv correctly there isn't any timeout. Only sleep between polls to buffer? Maybe that part could be modified the way that it only waits for some time and then exits telling that buffer len is 0. Don't know what that breaks though.
It's was quite some time ago, that I last used U-Boot on an IXP4xx CPU. But IIRC, timeouts are working correctly in the current driver. Even though the driver is quite ugly (and the Intel Access Library even more!).
I can't test right now, so perhaps some other IXP4xx user can tell us, if ethernet timeouts are working or not. Thanks.
Like I said, reasons beyond me I have to use base version 1.1.2. It's not about what error message I get or not. I know, it does not make sense for me either.
Yes, this doesn't make sense at all. And please make sure to not violate the GPL. The current approach, with linking the NPE binary into the U-Boot image, violates the GPL. I hope to submit the patch from Martijn this week to finally get rid of this issue.
Best regards, Stefan
===================================================================== 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@denx.de =====================================================================

From: Stefan Roese [mailto:sr@denx.de] It's was quite some time ago, that I last used U-Boot on an IXP4xx
CPU.
But IIRC, timeouts are working correctly in the current driver. Even
though
the driver is quite ugly (and the Intel Access Library even more!).
The U-boot I'm working on is originally compiled for my target by another person. I just asked him about the network code and he said that it is ported from Redboot.
I'm guessing that's not right way to do it? U-boot needs the intel software for the networking? Are there instructions how to make it work? I don't know why the current code is taken from Redboot, but I hope the right driver would work little better with the timeouts. I tested yesterday and timeout didn't occur and I waited 15-20minutes.
Teemu K.

On Wednesday 06 June 2007, Teemu Keskinarkaus wrote:
The U-boot I'm working on is originally compiled for my target by another person. I just asked him about the network code and he said that it is ported from Redboot.
So *are* you using the official U-Boot version? Or is this some development from your company that's not available in the official repository?
I'm guessing that's not right way to do it? U-boot needs the intel software for the networking?
Yes, some code is needed to "talk" to the NPE's. At the time I did the NPE port, the only piece of software available was the Intel Access Library which is quite huge and ugly. Nowadays there are 2 different new Linux NPE ethernet drivers available, written from scratch without the need for this Intel software. The only thing that's still needed it the microcode binary for the NPE's. And this is not released under the GPL.
Are there instructions how to make it work?
Not really. I'll try to come up with a small readme, when the patch for loading the NPE microcode from FLASH is included.
I don't know why the current code is taken from Redboot, but I hope the right driver would work little better with the timeouts. I tested yesterday and timeout didn't occur and I waited 15-20minutes.
Timeouts didn't occur means "tftp" commands is hanging? Or what do you mean? Please send a log.
Best regards, Stefan
===================================================================== 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@denx.de =====================================================================

From: Stefan Roese [mailto:sr@denx.de] On Wednesday 06 June 2007, Teemu Keskinarkaus wrote:
The U-boot I'm working on is originally compiled for my target by another person. I just asked him about the network code and he said
that
it is ported from Redboot.
So *are* you using the official U-Boot version? Or is this some development from your company that's not available in the official repository?
As a base there is U-boot version 1.1.2 and then there has been added support for some proprietary protocols. Plus the networking for ixp425 is taken from Redboot(I don't know why, maybe back then it was easiest way?). And no, the version I'm using is not publicly available.
Are there instructions how to make it work?
Not really. I'll try to come up with a small readme, when the patch
for
loading the NPE microcode from FLASH is included.
Thanks.
I don't know why the current code is taken from Redboot, but I hope
the
right driver would work little better with the timeouts. I tested yesterday and timeout didn't occur and I waited 15-20minutes.
Timeouts didn't occur means "tftp" commands is hanging? Or what do you mean?
I have taken the original proprietary protocol handler code from another U-boot(that's version, not so surprisingly, is 1.1.2) that was working on different platform. It calls eth_rx - function and by design of the code I can see that the eth_rx does not block on that platform like it does on ixp425.
So, eth_rx - call does not timeout on ixp425 platform. There is no log to send other than that I have prints before and after the eth_rx and the later print never shows if for example the network cable is not connected and nothing goes to ixp425. I also tested with tftp. During transfer I disconnected the network cable. Transfer stopped, but no 'T' (for timeout?) appeared or should they?
Teemu K.

On Wednesday 06 June 2007, Teemu Keskinarkaus wrote:
So *are* you using the official U-Boot version? Or is this some development from your company that's not available in the official repository?
As a base there is U-boot version 1.1.2 and then there has been added support for some proprietary protocols. Plus the networking for ixp425 is taken from Redboot(I don't know why, maybe back then it was easiest way?). And no, the version I'm using is not publicly available.
So you are asking for support here, for some code that we don't know and don't have access to?
right driver would work little better with the timeouts. I tested yesterday and timeout didn't occur and I waited 15-20minutes.
Timeouts didn't occur means "tftp" commands is hanging? Or what do you mean?
I have taken the original proprietary protocol handler code from another U-boot(that's version, not so surprisingly, is 1.1.2) that was working on different platform. It calls eth_rx - function and by design of the code I can see that the eth_rx does not block on that platform like it does on ixp425.
So, eth_rx - call does not timeout on ixp425 platform. There is no log to send other than that I have prints before and after the eth_rx and the later print never shows if for example the network cable is not connected and nothing goes to ixp425. I also tested with tftp. During transfer I disconnected the network cable. Transfer stopped, but no 'T' (for timeout?) appeared or should they?
Yes, they should appear.
Again I ask you to give the official version a try.
Best regards, Stefan
===================================================================== 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@denx.de =====================================================================

-----Original Message----- On Wednesday 06 June 2007, Teemu Keskinarkaus wrote:
As a base there is U-boot version 1.1.2 and then there has been
added
support for some proprietary protocols. Plus the networking for
ixp425
is taken from Redboot(I don't know why, maybe back then it was
easiest
way?). And no, the version I'm using is not publicly available.
So you are asking for support here, for some code that we don't know
and
don't have access to?
...
Again I ask you to give the official version a try.
Yes, I just realized that the Redboot network thing in U-boot is not available for every one. I didn't know that the previous coder had used such thing until very recently and I don't know why he have used it instead of using directly the Intel NPE code.
The problem using fresh U-boot is that I don't know how to add that Intel NPE thingie in it and what I need to do to get it working. And I'm not sure what code I actually need from Intel. I have IXP400 Sw package that Linux kernel is using. Does same software work with U-boot? Although, I don't have any idea how to use it with U-boot.
Teemu K.
participants (2)
-
Stefan Roese
-
Teemu Keskinarkaus