> The set of devices connected during BDS is platform policy. It is not
> the "network stack" that calls Snp.Start(), but the platform BDS code
> that calls gBS->ConnectController() on the device, possibly without a
> good reason (e.g. without the device being present in a UEFI boot
> option). The network stack only "reacts" to that connection request.
Indeed, but even if a SNP handle is present as a boot option in a boot manager, 
surely the Snp.Start() should be deferred until the user actually chooses to 
boot from that handle.

A workaround that we have in the legacy implementation doesn't start the 
underlying hardware datapath until the platform tries to send the first packet 
(since PXE boot is always initiated by the client) but that is a horrible hack 
that should not be necessary. The distinction between Snp.Initialize() and 
Snp.Start() is there exactly for that reason, no?

In other words, ConnectController() should not immediately result in 
Snp.Start() being called.

Cheers,
Tom


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to