> On Nov 11, 2015, at 8:03 PM, El-Haj-Mahmoud, Samer 
> <samer.el-haj-mahm...@hpe.com> wrote:
> 
> I remember we specifically discussed this in the UEFI Forum and decided to 
> drop the If4ConfigProtocol compatability from the spec.
> 
> If edk2 would like to keep it, it can be done, but will complicate things. I 
> would recommend a build option to disable /remove the legacy support as new 
> platforms don't care about this in their shell (if the shell is embedded or 
> targets specific platforms).
> 

Samer,

I don't think this is a spec conformance issue. It is easy for a ROM to pick a 
given version of UEFI to conform to. The problem is an application as Johannes 
has pointed out can run on different ROMs that implement different versions of 
UEFI. 

>From an implementation standpoint it should be possible for the Application to 
>check the UEFI revision and "do the correct thing". So I think the objection 
>is the shell was written to strictly conform to the latest UEFI specification, 
>when it could have been made backward compatible with a range of UEFI 
>specification versions. 

Thanks,

Andrew Fish

> 
> Thanks
> Samer
> 
> 
> 
> Sent from my Android phone using Symantec TouchDown (www.symantec.com)
> 
> -----Original Message-----
> From: Ye, Ting [ting...@intel.com]
> Received: Wednesday, 11 Nov 2015, 7:41PM
> To: Conen, Johannes [johannes.co...@siemens.com]; Laszlo Ersek 
> [ler...@redhat.com]; Wu, Jiaxin [jiaxin...@intel.com]; 
> edk2-devel@lists.01.org [edk2-de...@ml01.01.org]; Carsey, Jaben 
> [jaben.car...@intel.com]
> CC: Leif Lindholm (Linaro address) [leif.lindh...@linaro.org]
> Subject: Re: [edk2] ShellPkg: Network commands (ifconfig/ping) broken
> 
> One solution to support UEFI 2.4 network modules with UEFI 2.5 ifconfig is to 
> add the code back to use HII services to perform setting. The definition of 
> NIC_IP4_CONFIG_INFO and a private GUID gEfiNicIp4ConfigVariableGuid should be 
> added into ShellPkg as UEFI 2.5 no longer keep the definition in 
> MdeModulePkg. This will bring complexity to ShellPkg.
> 
> Also, more older network modules even uses a private protocol NicIp4Config 
> protocol (defined in EdkCompatibilityPkg) to fix the issue in 
> EFI_IP4_CONFIG_PROTOCOL. When Shell commands upgrade to Shell 2.0, the 
> ifconfig removes the support of this protocol. Does the UEFI 2.5 ifconfig 
> need support this protocol also to co-work with older platform?
> 
> Jaben, what's your opinion about this?
> 
> Best Regards,
> Ye Ting
> 
> 
> -----Original Message-----
> From: Conen, Johannes [mailto:johannes.co...@siemens.com]
> Sent: Wednesday, November 11, 2015 8:22 PM
> To: Ye, Ting; Laszlo Ersek; Wu, Jiaxin; edk2-devel@lists.01.org
> Cc: Leif Lindholm (Linaro address)
> Subject: AW: [edk2] ShellPkg: Network commands (ifconfig/ping) broken
> 
> Hi everyone,
> 
> I started with UEFI development only recently, in September, with UDK2014. 
> When UDK2015 was released and there was no explicit notice of it being 
> incompatible with UDK2014 platforms, I expected to be able to switch to it 
> without any problems - I didn't expect forward compatibility, but backward 
> compatibility like in most other development environments (e.g. if I write an 
> application with the C95 standard, my application will still work with C99, 
> but not the other way round). If I understood you correctly, neither the one 
> nor the another is given atm - the UDK2014 shell won't work with UEFI 2.50 
> platforms as the EFI_IP4_CONFIG_PROTOCOL is not present and the UDK2015 shell 
> won't work with UEFI 2.40 platforms as the EFI_IP4_CONFIG2_PROTOCOL is not 
> present.
> 
> I don't think you can expect every UEFI developer to be on the EDK2 mailing 
> list - I wasn't until a few days ago, the discussions about deprecating the 
> protocol were in April and July according to the mail attachments from Jiaxin 
> and with the amount of e-mails being sent over this mailing list on a daily 
> basis, I doubt everyone will take notice of everything. For me as someone who 
> is not involved into the development of EDKII itself, 90% of those e-mails 
> are completely irrelevant to me and get deleted immediately.
> 
> Now, I don't write UEFI firmwares, but UEFI applications - for testing our 
> computers before they leave the production factory. Something being 
> incompatible with previous versions (getting deprecated doesn't necessarily 
> mean it doesn't work anymore, only it shouldn't be used anymore) is a pretty 
> important notice to me as I need to rewrite all applications that are 
> affected by this as soon as our firmware developers switch to 
> UDK2015/UEFI2.50 - or maintain two versions of my applications while some 
> computers are still being shipped with UEFI 2.40 and others with UEFI 2.50. 
> AFAIK (please correct me if I'm wrong there), until now, every application 
> developed with an earlier version of EDK/EDKII could be used on platforms 
> developed with later versions, too - e.g. I was able to use the applications 
> shipped with the original EDK (like the ramdisk driver or the ftp client) on 
> my UEFI 2.40 platform. That changing is a pretty big deal and should clearly 
> be communicated within the release notes.
> 
> In this specific case, I wanted to customize the shell to include our 
> diagnostic programs so we can boot the shell over PXE, run our diagnostics 
> and send the results back to a server (therefore the need for ifconfig), thus 
> eliminating the need for an EFI USB stick. Now, depending on which UEFI 
> platform the PC has, we need to boot either the UEFI 2.40 compatible shell or 
> the UEFI 2.50 compatible shell - which makes things a bit more complicated.
> 
> Greetings
> Johannes
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: Ye, Ting [mailto:ting...@intel.com]
> Gesendet: Mittwoch, 11. November 2015 04:36
> An: Conen, Johannes; Laszlo Ersek; Wu, Jiaxin; edk2-devel@lists.01.org
> Cc: Leif Lindholm (Linaro address)
> Betreff: RE: [edk2] ShellPkg: Network commands (ifconfig/ping) broken
> 
> Hi Johannes,
> 
> I would like to add some background info here:
> 
> The original EFI_IP4_CONIFG_PROTOCOL has design issue that it cannot function 
> well for a driver or an application (e.g. ifconfig) to configure static 
> address. To solve this issue, ifconfig in UDK2014 defines a structure 
> NIC_IP4_CONFIG_INFO and a private GUID gEfiNicIp4ConfigVariableGuid in 
> NicIp4ConfigNvData.h under MdeModulePkg in order to deploy configuration 
> through HII service. This is absolutely not a clean design.
> 
> In order to solve this issue, and also introduce new capabilities like 
> configure DNS server address to IP4Config; a new protocol 
> EFI_IP4_CONFIG2_PROTOCOL is introduced to UEFI 2.5 specification. The UEFI 
> forum also discussed whether need keep EFI_IP4_CONFIG_PROTOCOL for backwards 
> compatibility in a long period. Since the forum doesn't receive any objection 
> during the period, and the team members prefer a clean design, the UEFI spec 
> deprecates the EFI_IP4_CONFIG_PROTOCOL finally.
> 
> When Intel working on UDK2015 implementation, we also reported to EDKII 
> mailing list that we would like to deprecate the support of 
> EFI_IP4_CONFIG_PROTOCOL (see Jiaxin's mail). Also we don't receive any 
> objections and comments on this. To make a clean implementation, the UDK2015 
> removes Ip4ConfigDxe driver and adds the support of EFI_IP4_CONFIG2_PROTOCOL 
> to Ip4Dxe driver. Also, to make ifconfig under ShellPkg clean, the 
> application only supports EFI_IP4_CONFIG2_PROTOCOL.
> 
> Thus, current supported usage is to use UDK2014 shell commands with UDK 2014 
> network modules and use UDK2015 shell command with UDK2015 network modules.
> 
> Now I would like to understand your usage. -- Do you intend to use new shell 
> commands with UDK2014 network modules?
> 
> 
> Best Regards,
> Ye Ting
> 
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Conen, 
> Johannes
> Sent: Tuesday, November 10, 2015 6:21 PM
> To: Laszlo Ersek; Wu, Jiaxin; edk2-devel@lists.01.org
> Cc: Leif Lindholm (Linaro address)
> Subject: Re: [edk2] ShellPkg: Network commands (ifconfig/ping) broken
> 
> 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?
> 
> 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
> _______________________________________________
> 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

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

Reply via email to