While debugging some Etherboot (http://www.slug.org.au/etherboot/) tulip
code, I noticed that when using LNE100TX and MX98715 cards, there seemed
to be a very long delay (10 seconds) when getting their DHCP/BOOTP
information from the server, while the FA310TX (LC82C168) cards got the
same information in a small fraction of a second.
I tracked the source of the delay down to this code sequence in
ntulip_reset:
/* Start Tx */
outl(inl(ioaddr + CSR6) | 0x00002000, ioaddr + CSR6);
/* immediate transmit demand */
outl(0, ioaddr + CSR1);
to = currticks() + TICKS_PER_SEC;
while ((txd.status & 0x80000000) && (currticks() < to))
/* wait */ ;
Essentially, we turn on the transmitter, force an immediate transmission
demand to process the setup packet, and then wait for the packet status
to clear or for 1 second to elapse.
What I noticed with MX98715 and LNE100TX (LC82C115) cards was that they
didn't transmit the first BOOTP request. This is true of the Linux
driver as well -- The cards seem to take far longer than other cards to
get BOOTP/DHCP information from the server, because even though the
driver thinks it is transmitting the first packet, it never actually gets
out of the card, so after 10 seconds (in the case of Etherboot) the
packet is retransmitted, and responded to instantly.
I found that by changing the above code to add an arbitrary 1 second
delay after starting the transmitter, the first BOOTP request was not
dropped, and it saved 9 seconds in the network booting sequence.
/* Start Tx */
outl(inl(ioaddr + CSR6) | 0x00002000, ioaddr + CSR6);
/* immediate transmit demand */
outl(0, ioaddr + CSR1);
/* 1 second delay inserted to allow some cards to process the setup
packet */
to = currticks() + TICKS_PER_SEC;
while (currticks() < to)
/* wait */ ;
to = currticks() + TICKS_PER_SEC;
while ((txd.status & 0x80000000) && (currticks() < to))
/* wait */ ;
QUESTIONS:
Is anyone else seeing this delay with LNE100TX, MX98715 or other
tulip-based cards (brand names like LinkSys, Lite-ON, SOHOWare)?
If you are currently using the ntulip.c driver for Etherboot, could you
download the ntulip-0.75b6 from http://www.thinguin.org/ to see if you
get faster boot times with this beta version?
Thanks and 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.