NE2000 working again
PATCH 1/1 NE2000 working again
Fixed typo in ne2000.h, thinko re n2k_inb() usage, don't try to do anything in eth_stop() if eth_init() was not called. Simplified RX path in order to avoid timeouts on really really fast NE2000 cards (read: qemu with internal tftp), NetLoop() is clever enough to cope with 1 packet per eth_rx().
--- drivers/ne2000.c | 36 +++++++++++++----------------------- drivers/ne2000.h | 2 +- 2 files changed, 14 insertions(+), 24 deletions(-)
drivers/ne2000.c +13 -23
@@ -755,7 +755,7 @@ static void pcnet_reset_8390(void)#endif n2k_outb (E8390_NODMA +E8390_PAGE0 +E8390_STOP ,E8390_CMD ); -n2k_outb (n2k_inb (nic_base +PCNET_RESET ),PCNET_RESET ); +n2k_outb (n2k_inb (PCNET_RESET ),PCNET_RESET );for (i =0 ; i <100 ; i++) {if ((r = (n2k_inb (EN0_ISR ) &ENISR_RESET )) !=0 )
@@ -833,6 +833,7 @@ static int plen[NB];static int nrx =0 ;static int pkey =-1 ; +static int initialized=0 ;void uboot_push_packet_len (int len) {PRINTK ("pushed len = %d, nrx = %d\n" , len, nrx);
@@ -846,7 +847,12 @@ void uboot_push_packet_len(int len) { } plen[nrx] = len;dp83902a_recv (&pbuf[nrx*2000 ], len); +/*Just pass it to the upper layer*/ +NetReceive (&pbuf[nrx*2000 ], plen[nrx]); +/*eth_rx() was gutted, so this is not needed anymore*/ +#if 0 nrx++; +#endif }void uboot_push_tx_done (int key,int val) {
@@ -903,37 +909,21 @@ int eth_init(bd_t *bd) {if (dp83902a_init () == false)return -1 ;dp83902a_start (dev_addr); + initialized=1 ;return 0 ; }void eth_halt () {PRINTK ("### eth_halt\n" ); - -dp83902a_stop (); +if (initialized) +dp83902a_stop (); + initialized=0 ; }int eth_rx () { -int j, tmo; - -PRINTK ("### eth_rx\n" ); - - tmo =get_timer (0 ) +TOUT *CFG_HZ ; -while (1 ) { -dp83902a_poll (); -if (nrx >0 ) { -for (j=0 ; j<nrx; j++) { -NetReceive (&pbuf[j*2000 ], plen[j]); - } - nrx =0 ; -return 1 ; - } -if (get_timer (0 ) >= tmo) { -printf ("timeout during rx\n" ); -return 0 ; - } - } -return 0 ; +dp83902a_poll (); +return 1 ; }int eth_send (volatile void *packet,int length) {
drivers/ne2000.h +1 -1
@@ -42,7 +42,7 @@ are GPL, so this is, of course, GPL. this file might be covered by the GNU General Public License. Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. - at http://sources.redhat.com/ecos/ecos-license/ */ + at http://sources.redhat.com/ecos/ecos-license/ ------------------------------------------- ####ECOSGPLCOPYRIGHTEND#### ####BSDCOPYRIGHTBEGIN####
Signature · 1 line
1.5.2.2
Wolfgang Denk
AppliedPATCH 1/1 NE2000 working again
Quoted 7 lines · In message <[email protected]> you wrote:
Fixed typo in
ne2000.h, thinko ren2k_inb()usage, don't try to do anything ineth_stop()ifeth_init()was not called. Simplified RX path in order to avoid timeouts on really really fast NE2000 cards (read: qemu with internal tftp),NetLoop()is clever enough to cope with 1 packet pereth_rx().Signed-off-by Vlad Lungu <[email protected]>
Applied. Thanks.
But now it would be only consequent to remove all references to the "nrx" variable as well. Looking forward to your follow-up patch (sorry, I can't test this atm).
Best regards,
Wolfgang Denk
Signature · 4 lines
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 Two wrongs don't make a right, but three rights make a left.
PATCH 1/1 NE2000 working again
Quoted 8 lines · Wolfgang Denk
Quoted 6 lines · In message <[email protected]> you wrote:
Fixed typo in
ne2000.h, thinko ren2k_inb()usage, don't try to do anything ineth_stop()ifeth_init()was not called. Simplified RX path in order to avoid timeouts on really really fast NE2000 cards (read: qemu with internal tftp),NetLoop()is clever enough to cope with 1 packet pereth_rx().
Quoted 9 lines
Quoted 2 lines
Signed-off-by Vlad Lungu <[email protected]>Applied. Thanks.
But now it would be only consequent to remove all references to the "nrx" variable as well. Looking forward to your follow-up patch (sorry, I can't test this atm).
There are a lot more things to remove or change : NB, pbuf, plen just to name a few.
AFAIK, there's no board in the current tree that uses it, not
counting my patch for Qemu -M mips.
How about I look into this after 1.3.0 is released?
Vlad
PATCH 1/1 NE2000 working again
Dear Vlad,
Quoted 9 lines · in message <[email protected]> you wrote:
Quoted 7 lines
Applied. Thanks.
But now it would be only consequent to remove all references to the "nrx" variable as well. Looking forward to your follow-up patch (sorry, I can't test this atm).
There are a lot more things to remove or change : NB, pbuf, plen just to name a few.
Ah, I see.
Quoted 3 lines
AFAIK, there's no board in the current tree that uses it, not
counting my patch for Qemu -M mips.
How about I look into this after 1.3.0 is released?
Agreed. Thanks in advance.
Best regards,
Wolfgang Denk
Signature · 6 lines
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 Those who hate and fight must stop themselves -- otherwise it is not stopped. -- Spock, "Day of the Dove", stardate unknown