Netboot Mailing List (by thread)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: eepro100 vs. ntulip speed




On 2/20/2000 8:05 AM Bob Edwards Robert.Edwards@anu.edu.au wrote:
>Anyone got any idea as to why the eepro100 driver is so much faster at
>the TFTP than the ntulip driver?

Good Question :-) My initial guess would be "Intel must use faster 
hamsters!"  but...

Let's look at some (possibly) more likely suspects:

>I have checked with tcpdump in both situations. In the case of the
>eepro100's, the 516byte TFTP frames are sent out about once every
>350usec (there are about 10,600 such frames). In the case of the
>ntulip 21143's, the frames are sent out every 3900usec.

Hmmm, I wonder if this call to udelay after transmitting a packet could 
have anything to do with it:

  /* Start Tx */
  outl(inl(ioaddr + CSR6) |  0x00002000, ioaddr + CSR6);
  udelay(300);

Now why would we sit around for 300useconds (or more) after (presumably) 
acking some packet from the host? :-)  Sounds to me like there needs to 
be an investigation! I mean we *are* in control of TX, after all!  The 
driver is now just going to sit around waiting for the next packet, 
right?  It's not going to re-transmit on top of it.  What idiot put that 
in there? :-) :-)

As a matter of fact, we should probably kick the controller and tell it 
to transmit *immediately* after enabling the transmitter, and just for 
good measure, do the same right after we reset the chip. :-)

Try this patch to ntulip.c:

$ diff -u ../src/ntulip.c.orig ntulip.c
--- ../src/ntulip.c.orig        Sun Feb 20 11:38:56 2000
+++ ntulip.c    Sun Feb 20 13:34:20 2000
@@ -445,6 +445,8 @@
   outl(csr6,              ioaddr + CSR6);
   outl(csr6 | 0x00002000, ioaddr + CSR6);
   outl(csr6 | 0x00002002, ioaddr + CSR6);
+  /* Trigger an immediate poll demand. */
+  outl(0, ioaddr + CSR2);
 }



@@ -484,7 +486,8 @@

   /* Start Tx */
   outl(inl(ioaddr + CSR6) |  0x00002000, ioaddr + CSR6);
-  udelay(300);
+  /* Trigger an immediate transmit demand. */
+  outl(0, ioaddr + CSR1);
 }


 /*********************************************************************/

---- end patch ---

Do let us know how this works. :-)

Regards,

Marty

---
   Name: Martin D. Connor
US Mail: Entity Cyber, Inc.; P.O. Box 391827; Cambridge, MA 02139; USA
  Voice: (617) 491-6935, Fax: (617) 491-7046 
  Email: mdc@thinguin.org
    Web: http://www.thinguin.org/


===========================================================================
This Mail was sent to netboot mailing list by:
Marty Connor <mdc@thinguin.org>
To get help about this list, send a mail with 'help' as the only string in
it's body to majordomo@baghira.han.de. If you have problems with this list,
send a mail to netboot-owner@baghira.han.de.



For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.