[U-Boot-Users] [patch 1/1] try to fix problem on the trizeps board DM9000 error: status check fail: 0x6d

According to the Application Notes of the DM9000, only the 2 bits 0:1 of the status byte need to be checked to identify a valid packet in the fifo
But, The several different Application Notes do not all speak the same language on these bits. They do not disagree, but only 1 Application Note noted explicitly that only these 2 bits need to be checked. Even the datasheets do not mention anything about these 2 bits.
Because the old code, and the kernel check the whole byte, I left this piece untouched.
However, I tested all board/DM9000[A|E|EP] devices with this 2 bit check, so it should work.
Notice, that the 2nd iteration through this receive loop (when a 2nd packet is in the fifo) is much shorter now, compared to the older U-boot driver code, so that we can maybe run into a hardware condition now that was never seen before, or maybe was seen very unfrequently.
Signed-off-by: Remy Bohmer linux@bohmer.net
--- drivers/net/dm9000x.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Index: u-boot-git-03062008/drivers/net/dm9000x.c =================================================================== --- u-boot-git-03062008.orig/drivers/net/dm9000x.c 2008-06-03 19:52:06.000000000 +0200 +++ u-boot-git-03062008/drivers/net/dm9000x.c 2008-06-03 19:54:44.000000000 +0200 @@ -624,8 +624,9 @@ eth_rx(void) for (;;) { DM9000_ior(DM9000_MRCMDX); /* Dummy read */
- /* Get most updated data */ - rxbyte = DM9000_inb(DM9000_DATA); + /* Get most updated data, + only look at bits 0:1, See application notes DM9000 */ + rxbyte = DM9000_inb(DM9000_DATA) & 0x03;
/* Status check: this byte must be 0 or 1 */ if (rxbyte > DM9000_PKT_RDY) {

Remy,
On Tue, Jun 3, 2008 at 11:14 AM, Remy Bohmer remy@bohmer.net wrote:
According to the Application Notes of the DM9000, only the 2 bits 0:1 of the status byte need to be checked to identify a valid packet in the fifo
But, The several different Application Notes do not all speak the same language on these bits. They do not disagree, but only 1 Application Note noted explicitly that only these 2 bits need to be checked. Even the datasheets do not mention anything about these 2 bits.
Because the old code, and the kernel check the whole byte, I left this piece untouched.
However, I tested all board/DM9000[A|E|EP] devices with this 2 bit check, so it should work.
Notice, that the 2nd iteration through this receive loop (when a 2nd packet is in the fifo) is much shorter now, compared to the older U-boot driver code, so that we can maybe run into a hardware condition now that was never seen before, or maybe was seen very unfrequently.
Signed-off-by: Remy Bohmer linux@bohmer.net
I can't get this to apply. Please re-base after applying your 6-patch set and the one that changes the order of rx status processing (or against the current net tree would be even better).
regards, Ben

Hello Ben,
I can't get this to apply. Please re-base after applying your 6-patch set and the one that changes the order of rx status processing (or against the current net tree would be even better).
I just pulled the net repo and I see the problem: You forgot to apply patch number 5 of my series of 6... The one that modifies the eth_rx routine. (The patch of which it was all about ;-))
When patch 5 is applied, the 'fix problem on the trizeps board DM9000 error: status check fail: 0x6d' patch will also apply.
Kind Regards,
Remy
2008/6/4 Ben Warren biggerbadderben@gmail.com:
Remy,
On Tue, Jun 3, 2008 at 11:14 AM, Remy Bohmer remy@bohmer.net wrote:
According to the Application Notes of the DM9000, only the 2 bits 0:1 of the status byte need to be checked to identify a valid packet in the fifo
But, The several different Application Notes do not all speak the same language on these bits. They do not disagree, but only 1 Application Note noted explicitly that only these 2 bits need to be checked. Even the datasheets do not mention anything about these 2 bits.
Because the old code, and the kernel check the whole byte, I left this piece untouched.
However, I tested all board/DM9000[A|E|EP] devices with this 2 bit check, so it should work.
Notice, that the 2nd iteration through this receive loop (when a 2nd packet is in the fifo) is much shorter now, compared to the older U-boot driver code, so that we can maybe run into a hardware condition now that was never seen before, or maybe was seen very unfrequently.
Signed-off-by: Remy Bohmer linux@bohmer.net
I can't get this to apply. Please re-base after applying your 6-patch set and the one that changes the order of rx status processing (or against the current net tree would be even better).
regards, Ben
Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

Remy Bohmer wrote:
Hello Ben,
I can't get this to apply. Please re-base after applying your 6-patch set and the one that changes the order of rx status processing (or against the current net tree would be even better).
I just pulled the net repo and I see the problem: You forgot to apply patch number 5 of my series of 6... The one that modifies the eth_rx routine. (The patch of which it was all about ;-))
Chalk it up to git ineptitude on my part. If you look here:
http://git.denx.de/?p=u-boot/u-boot-net.git;a=summary
You'll see that Patch #5 is in the changelog, but if you look at the commitdiff you'll see that I really just added a new file called ".dotest/patch" when I fixed the whitespace issue manually. D'oh!
I'll try to fix things up tonight.
regards, Ben

Remy,
On Wed, Jun 4, 2008 at 12:06 PM, Ben Warren biggerbadderben@gmail.com wrote:
Remy Bohmer wrote:
Hello Ben,
I can't get this to apply. Please re-base after applying your 6-patch set and the one that changes the order of rx status processing (or against the current net tree would be even better).
I just pulled the net repo and I see the problem: You forgot to apply patch number 5 of my series of 6... The one that modifies the eth_rx routine. (The patch of which it was all about ;-))
Chalk it up to git ineptitude on my part. If you look here:
http://git.denx.de/?p=u-boot/u-boot-net.git;a=summary
You'll see that Patch #5 is in the changelog, but if you look at the commitdiff you'll see that I really just added a new file called ".dotest/patch" when I fixed the whitespace issue manually. D'oh!
The net repo is now correct, I believe, but this patch still doesn't apply. I think it's because I had to manually edit patch #5, and this patch is touching the same code. Please rebase and resubmit.
regards, Ben

Hello Ben,
The net repo is now correct, I believe, but this patch still doesn't apply. I think it's because I had to manually edit patch #5, and this patch is touching the same code. Please rebase and resubmit.
No, sorry, it is not completely correct, some parts are missing... (e.g. the final fix for the trizeps board lacks) Within an hour I will post a new patch fixing the last merge issues against the net repo.
Kind Regards,
Remy

Hello,
(e.g. the final fix for the trizeps board lacks)
Sorry, my fault, It is in there, I compared to the wrong tree here...
Still, Within an hour I will post a new patch fixing the last merge issues against the net repo.
Kind Regards,
Remy
participants (3)
-
Ben Warren
-
Remy Bohmer
-
Remy Bohmer