On 29/03/16 20:41, Todd Stansell wrote:
iPXE> show net0/bustype:hexraw
net0/bustype:hexraw =
908b5424048b04248902896204895a0889720c897a10896a1431c0c38b5424048b44240885c07501408b62048b5a088b720c8b7a108b6a1459ff32c3b8d23b01
Nice catch. It turns out that there is a path whereby
dev->desc.bus_type will not be set to any value (and so will be left as
zero): this can happen if undibus_probe() detects the underlying UNDI as
being neither PCI nor ISAPnP. It will still continue to allow the
device to be used, since dev->desc is not required for actually using
the NIC. However, netdev_fetch_bustype() believes that drivers will
always initialise dev->desc.bus_type (which seems like a reasonable
assumption, since it's generally set by the bus driver before the NIC
driver ever gets called). This eventually leads to
netdev_fetch_bustype() treating NULL as a string pointer.
Should now be fixed in:
http://git.ipxe.org/ipxe.git/commitdiff/70509e6
If you retry with current master, you should now get a "No such file or
directory" from "show net0/bustype".
Adding tcpip debug logs, I see some of these:
Unrecognized TCP/IP protocol 51
I believe that's an IPSEC packet.
Is there some way to help determine if the problem is within iPXE somewhere or
the BIOS or the NIC itself? It feels like all of these problems are the
failed handoff of the bus info above, so it can't load proper network drivers,
etc.
The bus info failure is interesting. It suggests that pxeprefix.S was
unable to retrieve the device information. You should see an error
message somewhere in the "PXE->EB" block of text (before the iPXE
startup banner is printed).
As to loading proper network drivers: you're currently using
undionly.kpxe. By definition, this uses the underlying UNDI driver
(provided by Intel), not an iPXE native driver for that card. For a
native driver, you would use e.g. ipxe.pxe instead.
8086:1572 appears to be handled in Linux by the i40e driver. We don't
yet have a native driver for that card. However, Intel has historically
been exceptionally good at preserving backwards compatibility between
their NICs: we are able to use essentially the same datapath code for
everything from the original e1000 up to the 82599 10Gig virtual
function driver. There's a good chance that i40e cards can be natively
supported in iPXE with minimal effort.
You could even push your luck and try adding a PCI_ROM() line for
8086:1572 to drivers/net/intelx.c. :)
Michael
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel