Yes, Laszlo, we have discussed this topic for a long time, and also we have 
declared that dependent network drivers, libraries and applications have been 
migrated to the new protocol version. But no one have more comments for that 
compatibility change. 
Since UEFI2.5 Spec also declares the EFI_IP4_CONFIG_PROTOCOL has been replaced 
with the new EFI_IP4_CONFIG2_PROTOCOL,  we think it's ok to deprecate the old 
protocol.

Thanks.
Jiaxin

-----Original Message-----
From: Laszlo Ersek [mailto:ler...@redhat.com] 
Sent: Tuesday, November 10, 2015 7:54 PM
To: Leif Lindholm
Cc: Wu, Jiaxin; edk2-devel@lists.01.org
Subject: Re: [edk2] ShellPkg: Network commands (ifconfig/ping) broken

On 11/10/15 11:43, Leif Lindholm wrote:
> On Tue, Nov 10, 2015 at 11:28:10AM +0100, Laszlo Ersek wrote:
>> On 11/10/15 11:20, Conen, Johannes wrote:
>>> Hmm, you're right..... is it briefly mentioned in the "ShellPkg 
>>> Notes.txt" - I must admit, I only took a look at the 
>>> "UDK2015-ReleaseNotes-MyWorkSpace.txt" and expected all major 
>>> changes to mentioned there (and well, they were, like the moving of 
>>> the library files). So this non-backwards-compatibility from UDK2015 
>>> to
>>> UDK2014 regarding network-related stuff is intended?
>>
>> I'll have to let Jiaxin answer this question; I'm not a participant 
>> in UDK feature planning. And, I have no idea how UDK releases account 
>> for compatibility in general.
>>
>> (My *guess* is that UDK2015 generally targets (or moved towards) UEFI 
>> 2.5, and Ip4Config (version 1) is apparently deprecated in UEFI 2.5.)
> 
> The actual wording from the specification is:
> ---
> The EFI_IP4_CONFIG_PROTOCOL has been replaced with the new 
> EFI_IP4_CONFIG2_PROTOCOL.
> . All new designs based on this specification should exclusively use
>   EFI_IP4_CONFIG2_PROTOCOL .
> . The EFI_IP4_CONFIG_PROTOCOL will be removed in the next revision of
>   this specification.
> ---
> 
> Clearly this creates a compatibility breakage at some point.
> 
> Is this something we consider "not a problem", or should the shell 
> implement (providing a reference for how to implement) fallback to 
> EFI_IP4_CONFIG_PROTOCOL if EFI_IP4_CONFIG2_PROTOCOL is not available?

Whether the shell in edk2 should or should not provide fallback code for 
EFI_IP4_CONFIG_PROTOCOL is for Intel to answer :), but I think I can ask one 
more question as to "how".

Namely, if one adds (or keeps) the Ip4Config fallback code to (in) the shell in 
edk2, how does that compat feature get tested, staying within the tree? It 
would require keeping the Ip4Config protocol implementation around just for the 
sake of testing the fallback.

I don't think that's a good idea.

Instead, any dependencies on specific versions of the UEFI spec should be 
spelled out loud and clear. (I believe I've read such requirements presented by 
Windows, on MSDN.) Mapping each UDK release to a UEFI spec version would be a 
bonus.

Thanks
Laszlo

> 
> Regards,
> 
> Leif
> 
>> Thanks
>> Laszlo
>>
>>>
>>> Greetings
>>> Johannes
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Laszlo Ersek [mailto:ler...@redhat.com]
>>> Gesendet: Dienstag, 10. November 2015 11:06
>>> An: Conen, Johannes; Wu, Jiaxin; edk2-devel@lists.01.org
>>> Cc: Leif Lindholm (Linaro address)
>>> Betreff: Re: [edk2] ShellPkg: Network commands (ifconfig/ping) 
>>> broken
>>>
>>> On 11/10/15 10:49, Conen, Johannes wrote:
>>>> Hi there,
>>>>
>>>> I made my tests with the binary shell from ShellBinPkg from 
>>>> UDK2014, from UDK2015, the current master and a few commits in 
>>>> between and rebuilt the shell from ShellPkg for UDK2014, UDK2015, 
>>>> the current master and a few commits in between UDK2014 and UDK2015.
>>>>
>>>> It worked fine with r17868 and didn't work anymore with r17869, so 
>>>> it has to be that commit (I of course rebuilt the shell from ShellPkg).
>>>> If I put both shells on a USB-stick and switch between them on the 
>>>> fly, it works in the one built from r17868 and doesn't work in the 
>>>> one built from r17869. Regarding ShellBinPkg: the last version that 
>>>> worked is r17619 (which is quite logical since the version after 
>>>> that, r18187, is built from ShellPkg r18186, which didn't work for 
>>>> me anymore).
>>>>
>>>> I'm not working on OVMF, but on real hardware (X64) - don't know 
>>>> exactly with which version the UEFI firmware was written, but I 
>>>> assume it's UDK2014. I found nothing in the release notes that 
>>>> would break backwards compatibility to firmware versions built with 
>>>> older EDKII versions in this regard.
>>>
>>> Okay, that seems to explain it. The platform firmware on your physical 
>>> machine provides Ip4Config (version 1) only, but the shell built from 
>>> recent edk2 (and probably the binary shipped in UDK2015) requires 
>>> Ip4Config2.
>>>
>>> Hm... I have not been a UDK user, but now I downloaded "UDK2015.Notes.zip", 
>>> and in "ShellPkg Notes.txt", it says under "NEW FEATURES AND CHANGES", 
>>> point 15:
>>>
>>>   Change "ping" and "ifconfig" code to consume Ip4Config2 protocol.
>>>
>>> So I think this has been (technically) documented in the UDK2015 release. 
>>> Perhaps the lack of compatibility with UDK2014 should have been emphasized.
>>>
>>> (But, I'm just a curious bystander in this discussion anwyay...)
>>>
>>> Thanks
>>> Laszlo
>>>
>>>>
>>>> With best regards,
>>>> Johannes Conen
>>>>
>>>> Siemens AG
>>>> Process Industries and Drives Division Process Automation 
>>>> Manufacturing Karlsruhe PD PA MF-K IPC 2 Oestliche Rheinbrueckenstr.
>>>> 50
>>>> 76187 Karlsruhe, Germany
>>>> mailto:johannes.co...@siemens.com
>>>>
>>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Wu, Jiaxin [mailto:jiaxin...@intel.com]
>>>> Gesendet: Dienstag, 10. November 2015 02:42
>>>> An: Laszlo Ersek; Conen, Johannes; edk2-devel@lists.01.org
>>>> Cc: Leif Lindholm (Linaro address)
>>>> Betreff: RE: [edk2] ShellPkg: Network commands (ifconfig/ping) 
>>>> broken
>>>>
>>>> Hi Laszlo and Conen,
>>>> Thanks for your reply, I have double checked the ShellBinPkg and ShellPkg 
>>>> in UDK2015 release version, Both of them have included my patch for 
>>>> Ip4Config Protocol deprecated work.
>>>> I'm also confused by the test result below, seems only time appeared 
>>>> abnormal.
>>>>
>>>> Conen: Are you using the shell binary released in UDK2015?
>>>>
>>>> Thanks.
>>>> Jiaxin
>>>>
>>>> -----Original Message-----
>>>> From: Laszlo Ersek [mailto:ler...@redhat.com]
>>>> Sent: Tuesday, November 10, 2015 4:30 AM
>>>> To: Conen, Johannes; edk2-devel@lists.01.org
>>>> Cc: Leif Lindholm (Linaro address); Wu, Jiaxin
>>>> Subject: Re: [edk2] ShellPkg: Network commands (ifconfig/ping) 
>>>> broken
>>>>
>>>> On 11/09/15 16:52, Conen, Johannes wrote:
>>>>> Hello everyone,
>>>>>
>>>>> after switching from UDK2014 to UDK2015, I noticed that the 
>>>>> network commands (ifconfig / ping) don't work anymore. ifconfig 
>>>>> just exits with no feedback and ping says "Config no mapping" 
>>>>> (logical, as it is not possible to get an IP address via 
>>>>> ifconfig). In UDK2014 everything worked fine.
>>>>>
>>>>> With the help of unixsmurf (thanks a lot)
>>>>
>>>> Argh. Can we stop using these "funny" nicks on IRC?
>>>>
>>>> "unixsmurf" is Leif.
>>>>
>>>> What do you think, Leif? :)
>>>>
>>>>> I went on bughunting and
>>>>> found out that commit r17869 / git sha 
>>>>> 7c25b7ea5b2c029a9e7a0be57f7c20f31d720c7d broke it. Wild guess: it 
>>>>> has something to do with the new protocol.
>>>>
>>>> That's close, but my take is not that exact commit. Instead, what 
>>>> about
>>>> this:
>>>>
>>>> https://github.com/tianocore/edk2/commit/2aa0eb5df61e
>>>>
>>>> == SVN rev 17917.
>>>>
>>>> (I reviewed that commit.)
>>>>
>>>> But, it works for me:
>>>>
>>>>> Shell> ifconfig -s eth0 dhcp
>>>>> Shell> ifconfig -l eth0
>>>>>
>>>>> -----------------------------------------------------------------
>>>>>
>>>>> name : eth0
>>>>> Media State : Media present
>>>>> policy : dhcp
>>>>> mac addr : 52:54:00:29:80:AE
>>>>>
>>>>> ipv4 address : 192.168.122.182
>>>>>
>>>>> subnet mask : 255.255.255.0
>>>>>
>>>>> default gateway: 192.168.122.1
>>>>>
>>>>> Routes (2 entries):
>>>>> Entry[0]
>>>>> Subnet : 192.168.122.0
>>>>> Netmask: 255.255.255.0
>>>>> Gateway: 0.0.0.0
>>>>> Entry[1]
>>>>> Subnet : 0.0.0.0
>>>>> Netmask: 0.0.0.0
>>>>> Gateway: 192.168.122.1
>>>>>
>>>>> DNS server :
>>>>> 192.168.122.1
>>>>>
>>>>>
>>>>> -----------------------------------------------------------------
>>>>> Shell> ping 8.8.8.8
>>>>> Ping 8.8.8.8 16 data bytes.
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=1 ttl=0 time=30640ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=2 ttl=0 time=31249ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=3 ttl=0 time=33280ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=4 ttl=0 time=38577ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=5 ttl=0 time=28432ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=6 ttl=0 time=31275ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=7 ttl=0 time=26576ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=8 ttl=0 time=33192ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=9 ttl=0 time=31112ms
>>>>> 16 bytes from 8.8.8.8 : icmp_seq=10 ttl=0 time=28237ms
>>>>>
>>>>> 10 packets transmitted, 10 received, 0% packet loss, time 312570ms
>>>>>
>>>>> Rtt(round trip time) min=26576ms max=38577ms avg=31257ms
>>>>
>>>> This on OVMF just built from edk2 at SVN rev18759. (Note that in 
>>>> OVMF the shell is built from source as well.)
>>>>
>>>>> Personally I think this is a critical issue - it practically makes 
>>>>> it impossible to use any network related stuff in the UEFI shell.
>>>>
>>>> I suspect that you are using an old (UDK2014) shell binary on top of a new 
>>>> (UDK2015) network stack, or vice-versa.
>>>>
>>>> If you check the commit message of SVN rev 17917 / git 
>>>> 2aa0eb5df61e, it said that it was safe to remove the Ip4Config 
>>>> protocol *because* SVN rev
>>>> 17869 / git 7c25b7e [that you have found] had already moved ping / 
>>>> ifconfig to the new protocol.
>>>>
>>>> And at the time of SVN rev 17869 / git 7c25b7e, the new protocol existed 
>>>> (see SVN rev 17853 / git 1f6729ffe980).
>>>>
>>>> In chronological order:
>>>> - SVN rev 17853 / git 1f6729ff: implements the Ip4Config2 protocol,
>>>> - SVN rev 17869 / git 7c25b7ea: migrates ping & ifconfig to 
>>>> Ip4Config2,
>>>> - SVN rev 17917 / git 2aa0eb5d: removes Ip4Config (no more users)
>>>>
>>>> So, assuming you build *all* of your firmware from edk2, from source, 
>>>> including the shell, you should end up with working ping & ifconfig at any 
>>>> stage.
>>>>
>>>> I don't know at what stage UDK2015 was packaged. If it happened 
>>>> after SVN rev 17917 / git 2aa0eb5d, then I guess the message of 
>>>> that commit
>>>> applies: "Ip4ConfigDxe driver is deprecated in UEFI 2.5, so we will not 
>>>> support original Ip4Config Protocol" -- please use a conformant shell I 
>>>> guess.
>>>>
>>>> I'm still a bit confused, because ShellBinPkg was also updated in SVN rev 
>>>> 18187 / git 1fe76acc, which was about a month after SVN rev 17917 / git 
>>>> 2aa0eb5d above. So unless Intel released UDK2015 exactly within that one 
>>>> month, I cannot see how you can encounter this problem.
>>>>
>>>> Are you using a shell binary whose source is still based on UDK2014 (or 
>>>> older)?
>>>>
>>>> Thanks,
>>>> Laszlo
>>>>
>>>>
>>>>> With best regards,
>>>>> Johannes Conen
>>>>>
>>>>> Siemens AG
>>>>> Process Industries and Drives Division Process Automation 
>>>>> Manufacturing Karlsruhe PD PA MF-K IPC 2 Oestliche Rheinbrueckenstr.
>>>>> 50
>>>>> 76187 Karlsruhe, Germany
>>>>> mailto:johannes.co...@siemens.com
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
> 

--- Begin Message ---
Version3 continue to update with a proper commit message and the ordering for 
those series patches.

Those patches are used to remove Ip4ConfigDxe module and related guid 
definitions from related packages.

Ip4ConfigDxe driver is deprecated in UEFI 2.5, so we will not support original 
Ip4Config Protocol, which is replace by Ip4Config2 Protocol integrated in 
Ip4Dxe driver(git commit 1f6729ff (SVN r17853)).Therefore we can remove 
Ip4ConfigDxe driver from related packages.

Dependent network drivers, libraries and applications have been migrated to (or 
extended to) the new protocol version.
For example:
git 7c25b7ea (SVN r17869): ping & ifconfig
git 00a6ad1b (SVN r17870): UefiHandleParsingLib
git 6c5c70d6 (SVN r17873): DxeNetLib
git 39561686 (SVN r17874): IpSecDxe
git c581e503 (SVN r17875): EfiSocketLib

Jiaxin Wu (7):
  ArmPlatformPkg: Remove Ip4ConfigDxe from ArmPlatformPkg
  ArmVirtPkg: Remove Ip4ConfigDxe module from ArmVirtPkg
  EmulatorPkg: Remove Ip4ConfigDxe module from EmulatorPkg
  Nt32Pkg: Remove Ip4ConfigDxe module from Nt32Pkg
  OvmfPkg: Remove Ip4ConfigDxe module from OvmfPkg
  Vlv2TbltDevicePkg: Remove Ip4ConfigDxe module from build
  MdeModulePkg: Remove Ip4ConfigDxe and related guid definition

 ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf              |   1 -
 .../ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf        |   1 -
 .../ArmVExpressPkg/ArmVExpress-CTA9x4.fdf          |   1 -
 .../ArmVExpressPkg/ArmVExpress-RTSM-A15.fdf        |   1 -
 .../ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf |   1 -
 ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc  |   1 -
 ArmVirtPkg/ArmVirt.dsc.inc                         |   1 -
 ArmVirtPkg/ArmVirtQemu.fdf                         |   1 -
 EmulatorPkg/EmulatorPkg.dsc                        |   1 -
 EmulatorPkg/EmulatorPkg.fdf                        |   3 +-
 MdeModulePkg/Include/Guid/Ip4ConfigHii.h           |  25 -
 MdeModulePkg/Include/Guid/NicIp4ConfigNvData.h     |  70 --
 MdeModulePkg/MdeModulePkg.dec                      |   6 -
 MdeModulePkg/MdeModulePkg.dsc                      |   1 -
 .../Universal/Network/Ip4ConfigDxe/ComponentName.c | 165 ----
 .../Universal/Network/Ip4ConfigDxe/Ip4Config.c     | 745 -----------------
 .../Universal/Network/Ip4ConfigDxe/Ip4Config.h     | 533 ------------
 .../Network/Ip4ConfigDxe/Ip4ConfigDriver.c         | 505 ------------
 .../Network/Ip4ConfigDxe/Ip4ConfigDxe.inf          |  91 ---
 .../Network/Ip4ConfigDxe/Ip4ConfigDxe.uni          | Bin 2700 -> 0 bytes
 .../Network/Ip4ConfigDxe/Ip4ConfigDxe.vfr          |  89 --
 .../Network/Ip4ConfigDxe/Ip4ConfigDxeExtra.uni     | Bin 1366 -> 0 bytes
 .../Network/Ip4ConfigDxe/Ip4ConfigDxeStrings.uni   | Bin 3000 -> 0 bytes
 .../Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c   | 909 ---------------------
 .../Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.h   |  54 --
 .../Universal/Network/Ip4ConfigDxe/Ip4NvData.h     |  48 --
 .../Network/Ip4ConfigDxe/NicIp4Variable.c          | 319 --------
 .../Network/Ip4ConfigDxe/NicIp4Variable.h          | 104 ---
 Nt32Pkg/Nt32Pkg.dsc                                |   1 -
 Nt32Pkg/Nt32Pkg.fdf                                |   1 -
 OvmfPkg/OvmfPkgIa32.dsc                            |   1 -
 OvmfPkg/OvmfPkgIa32.fdf                            |   1 -
 OvmfPkg/OvmfPkgIa32X64.dsc                         |   1 -
 OvmfPkg/OvmfPkgIa32X64.fdf                         |   1 -
 OvmfPkg/OvmfPkgX64.dsc                             |   1 -
 OvmfPkg/OvmfPkgX64.fdf                             |   1 -
 Vlv2TbltDevicePkg/PlatformPkg.fdf                  |   1 -
 Vlv2TbltDevicePkg/PlatformPkgGcc.fdf               |   1 -
 Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc            |   1 -
 Vlv2TbltDevicePkg/PlatformPkgIA32.dsc              |   1 -
 Vlv2TbltDevicePkg/PlatformPkgX64.dsc               |   1 -
 41 files changed, 1 insertion(+), 3688 deletions(-)
 delete mode 100644 MdeModulePkg/Include/Guid/Ip4ConfigHii.h
 delete mode 100644 MdeModulePkg/Include/Guid/NicIp4ConfigNvData.h
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/ComponentName.c
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.c
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h
 delete mode 100644 
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.inf
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.uni
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.vfr
 delete mode 100644 
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxeExtra.uni
 delete mode 100644 
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxeStrings.uni
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.h
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4NvData.h
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.c
 delete mode 100644 MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.h

--
1.9.5.msysgit.1


--- End Message ---
--- Begin Message ---
Hi All,



EFI_IP4_CONFIG_PROTOCOL has been replaced with a new protocol 
EFI_IP4_CONFIG2_PROTOCOL in UEFI 2.5 specification. We plan to support the new 
protocol and deprecate the old EFI_IP4_CONFIG_PROTOCOL of UEFI network stack. 
Does anyone have concern about this?



Best Regards,

Ye Ting

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-de...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

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

Reply via email to