Yeah, that makes sense I suppose. The end result is however that the network 
device is 'opened' as soon as ConnectController() is called rather than when 
someone wants to do networking. This seems wrong and directly leads to a DoS of 
a platform in case of heavy network load (unless we implement budgeting in the 
network driver, which is a really not what it should be doing).

How do you suggest we solve this problem?

Cheers,
Tom

On 25/01/2019 08:44, Wu, Jiaxin wrote:
> Hi Tom,
>
> One thing I want to highlight is that our design of network stack is not only 
> for the PXE/HTTP boot trigged in BootManager, but also to make sure it's 
> workable once there is any MNP instance configured by upper drivers 
> (ARP/IPv4/IPv6). 
>
> Take ARP/IP as an example, once ARP/IP are started, we need a heartbeat to 
> process any ARP requests, which is required by ARP functionality. In such a 
> case, SNP must be started to make ARP/IP drivers works well. 
>
> Thanks,
> Jiaxin
>
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
>> Tomas Pilar (tpilar)
>> Sent: Friday, January 25, 2019 1:43 AM
>> To: Laszlo Ersek <ler...@redhat.com>; edk2-devel@lists.01.org
>> Subject: Re: [edk2] Network Stack Budgeting
>>
>>
>>
>> On 24/01/2019 16:49, Laszlo Ersek wrote:
>>> On 01/24/19 14:25, Tomas Pilar (tpilar) wrote:
>>>> Hmm,
>>>>
>>>> Mnp->Configure() will eventually call MnpStartSnp().
>>>>
>>>> A grep for Mnp->Configure shows that:
>>>> * ArpDxe performs this on DriverBinding.Start()
>>>> * Ip6Dxe performs this on DriverBinding.Start()
>>>>
>>>> Ipv4 and DnsDhcp do this as a part of their Configure() they expose in the
>> API.
>>> Yes, that makes sense. All of the above drivers are UEFI drivers that
>>> follow the UEFI driver model, AIUI. As long as the controller is not
>>> connected from BDS, no BindingStart() function should be called in these.
>> Ah, but I would expect the BDS to call ConnectController() on the NIC, but I
>> would not expect the network stack to be started unless the device is
>> actually chosen for PXE booting. In other words, the above protocols should
>> follow the example of EFI_DNS4_PROTOCOL that binds against the device
>> during BDS but .Configure() is not automatically called by
>> DriverBinding.Start().
>>
>> .Configure() should be called by the BootManager if networking is actually to
>> be done. That in turn will configure Mnp and start Snp.
>>
>> Cheers,
>> Tom
>>
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel

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

Reply via email to