On 03/23/18 14:01, Wasim Khan wrote:
> Hi Michael,
> 
> Thank you for your prompt reply. 
> 
> Yes, in one of our implementation we are doing the same in our network driver 
> (without DriverBinding protocol support).
> 
> We were thinking to update our network driver to support DriverBinding 
> Protocol and explore if we can get a boot call for boot options one by one 
> starting from 1st boot option.
> If making the auto-neg asynchronous is the only option, then we don’t see any 
> profit by updating our network driver to support DriverBinding protocol.

The point of a UEFI device driver that follows the UEFI driver model is
that platform BDS may elect *not* to connect the driver to various
devices. This is unlike your DXE driver that probably binds all of the
devices immediately at dispatch.

In order to benefit from the flexibility of the above UEFI drivers, your
platform BDS must actually be *capable* of not calling
ConnectController() on those devices that you don't intend to boot off of.

How about this: simply don't connect *any* NICs -- either via
EfiBootManagerConnectAll() or EfiBootManagerConnectDevicePath() -- in
your PlatformBootManagerLib. When a Boot#### option is being booted, the
core UefiBootManagerLib / BdsDxe driver should connect the device
automatically.

- When the user enters the Setup utility, all devices are automatically
connected with EfiBootManagerConnectAll().

- This way Boot#### options can be created by the user, simply by
pointing to / selecting some devices. (Because all devices have been
connected.)

- At next boot, the user doesn't enter Setup, and your
PlatformBootManagerLib doesn't connect any boot devices explicitly
(NICs, disks, etc); only consoles.

- Boot#### processing will take care of connecting boot devices,
strictly as necessary.

- If the user plugs the ethernet cable into another NIC, they'll have to
enter Setup again, and update their Boot#### options.

Thanks
Laszlo

>> -----Original Message-----
>> From: Michael Brown [mailto:[email protected]]
>> Sent: Friday, March 23, 2018 5:52 PM
>> To: Wasim Khan <[email protected]>; Laszlo Ersek <[email protected]>;
>> Pankaj Bansal <[email protected]>
>> Cc: [email protected]
>> Subject: Re: [edk2] Boot delay due to network devices
>>
>> On 23/03/18 11:58, Wasim Khan wrote:
>>> Ex: if auto-neg timeout is 5 seconds and if we have 10 network interfaces 
>>> (all
>> are legal candidate for booting), and cable is connected to 3rd interface 
>> only
>> then 45 seconds will be wasted (5 seconds each for 9 interfaces) in auto-neg 
>> of
>> interfaces which are not connected via cable.
>>
>> There is no need for drivers to block in the Start() method waiting for 
>> link-up
>> detection.  Link detection can happen entirely asynchronously, thereby 
>> reducing
>> your wasted time from 45 seconds to zero.
>>
>> Michael

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to