Hi Laszlo, Thank you for your help. It worked finally worked.
Best regards, Marcin 2016-10-17 19:00 GMT+02:00 Laszlo Ersek <ler...@redhat.com>: > On 10/17/16 18:05, Marcin Wojtas wrote: >> Hi, >> >> Short introduction to the problem I'm facing with EDK2: I implemented >> 'ifconfig' command extension allowing to change interface's MAC >> address or reset it to the default value. For that I needed to add a >> couple of helper functions in DxeNetLib, which parse input string and >> one that calls Snp->StationAddress callback from the NIC driver. >> >> The problem is that the drivers associated to interface device >> comprise a copy of SnpMode, not original pointer. It causes an obvious >> mismatch, because only the latter got updated with new >> Snp->Mode->CurrentAddress. I found out that using 'reconnect' command >> after MAC address change from uefi shell helps and the network can >> operate properly. >> >> Hence I have a question - is there a way to force reconnecting all >> children drivers from the network controller driver level? I.e. it >> would be great if it was possible not to be forced to call 'ifconfig' >> command and then 'reconnect', but call some function(s) e.g. from >> Snp->StationAddress callback. > > I would try this: > - From the shell command (which is running in the shell application), > open the SNP interface in exclusive mode. This should either fail (if > there's already an exclusive open on the interface), or succeed and > force other drivers to disconnect, recursively. > - Call Snp->StationAddress to change the MAC. > - Close the protocol interface. > - Call gBS->ConnectController() to (re)connect all the drivers, > recursively, to the handle with the SNP on it. > > Thanks > Laszlo > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel