<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
Nice work, Yann! Thanks for contributing this patch.<br>
We will apply it to gPXE.<br>
<br>
/ Marty /<br>
<br>
On 3/20/11 8:06 AM, Yann Cézard wrote:
<blockquote type="cite" cite="mid:4D85EDBA.6060707@free.fr">Hi
(g/i)pxe developpers,
<br>
<br>
Playing recently with a new toy with an MCP79 chipset (0x10DE,
0x0AB0) in it and iSCSI, I found that the transfer rate were
anormaly slow (about 15 seconds to load about 15MB of kernel +
initrd, on a Gb network) in the (g/i)pxe phase, transfer rate were
then OK (~50MB/s) after the linux code has taken the control.
<br>
After having test with TFTP and HTTP tranfer, I found that the
problem was the same, so it had to be in the forcedeth driver.
<br>
<br>
Enabling debugging mode show me that the driver didn't stop
calling
<br>
forcedeth_link_status and as a consequence nv_update_linkspeed
when polling (and each time it just found that there is no link
change, so it was just a big waste of time).
<br>
Same problem with gpxe and ipxe.
<br>
<br>
After having a look at the linux forcedeth driver, I found that
the (g/i)pxe forcedeth driver code was missing a
NVREG_MIISTAT_LINKCHANGE register update, which made the poll
method thinking that a link change as occured every time it was
called.
<br>
Updating this register and testing it in forcedeth_link_status
just did the trick !
<br>
<br>
Here are some tests that I have done :
<br>
####################################
<br>
Embedded scripts used to test perfs :
<br>
===========
<br>
#!gpxe
<br>
dhcp net0
<br>
time imgfetch <a href="http://192.168.1.10/some.iso" class="moz-txt-link-freetext">http://192.168.1.10/some.iso</a>
<br>
===========
<br>
or :
<br>
===========
<br>
#!ipxe
<br>
dhcp net0
<br>
time imgfetch <a href="http://192.168.1.10/some.iso" class="moz-txt-link-freetext">http://192.168.1.10/some.iso</a>
<br>
===========
<br>
<br>
The image size (in bytes) is :
<br>
434065408 some.iso
<br>
<br>
In every case :
<br>
- 1st and 2nd run are done "the classic way"
<br>
- 3rd run is done with an unplug/replug of the cable to test
reconnection
<br>
<br>
<-------- GPXE ---------->
<br>
Test1 : gpxe / no fix
<br>
======================
<br>
1st run : 253s / 1.64 MB/s
<br>
2nd run : 252s / 1.64 MB/s
<br>
3rd run : 260s - reconnection OK
<br>
<br>
Test2 : gpxe / fix
<br>
===================
<br>
1st run : 13s / 31.84 MB/s
<br>
2nd run : 14s / 29.57 MB/s
<br>
3rd run : 18s - reconnection OK
<br>
<br>
<-------- IPXE ---------->
<br>
Test3 : ipxe / no fix
<br>
======================
<br>
1st run : 250s / 1.66 MB/s
<br>
2nd run : 251s / 1.65 MB/s
<br>
3rd run : 257s - reconnection OK
<br>
<br>
Test4 : ipxe / fix
<br>
===================
<br>
1st run : 10s / 41.40 MB/s
<br>
2nd run : 10s / 41.40 MB/s
<br>
3rd run : 17s - reconnection OK
<br>
####################################
<br>
<br>
I am not a network driver hacker, nor a C hacker at all, so
perhaps the code is not at the better possible place, but you got
the idea ;)
<br>
Looking at how it is done in the linux kernel driver code, I don't
think that this will break other chipsets support.
<br>
<br>
If you need further tests, just ask.
<br>
<br>
Cheers,
<br>
<br>
Yann
<br>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
<a href="http://p.sf.net/sfu/internap-sfd2d" class="moz-txt-link-freetext">http://p.sf.net/sfu/internap-sfd2d</a></pre>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Etherboot-developers mailing list
<a href="mailto:Etherboot-developers@lists.sourceforge.net" class="moz-txt-link-abbreviated">Etherboot-developers@lists.sourceforge.net</a>
<a href="https://lists.sourceforge.net/lists/listinfo/etherboot-developers" class="moz-txt-link-freetext">https://lists.sourceforge.net/lists/listinfo/etherboot-developers</a>
</pre>
</blockquote>
<br>
</body>
</html>