comments below

On 12/18/14 08:11, Gary Ching-Pang Lin wrote:
> Include the IPv6 drivers to enable the PXE6 support.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Gary Lin <g...@suse.com>
> ---
>  OvmfPkg/OvmfPkgIa32.dsc    | 12 +++++++++++-
>  OvmfPkg/OvmfPkgIa32.fdf    | 11 ++++++++++-
>  OvmfPkg/OvmfPkgIa32X64.dsc | 12 +++++++++++-
>  OvmfPkg/OvmfPkgIa32X64.fdf | 11 ++++++++++-
>  OvmfPkg/OvmfPkgX64.dsc     | 12 +++++++++++-
>  OvmfPkg/OvmfPkgX64.fdf     | 11 ++++++++++-
>  6 files changed, 63 insertions(+), 6 deletions(-)
>
> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
> index 6598102..0d7b9e6 100644
> --- a/OvmfPkg/OvmfPkgIa32.dsc
> +++ b/OvmfPkg/OvmfPkgIa32.dsc
> @@ -34,6 +34,7 @@
>    # -D FLAG=VALUE
>    #
>    DEFINE SECURE_BOOT_ENABLE      = FALSE
> +  DEFINE NETWORK_IP6_ENABLE      = FALSE
>
>  [BuildOptions]
>    GCC:*_UNIXGCC_*_CC_FLAGS             = -DMDEPKG_NDEBUG
> @@ -518,8 +519,17 @@
>    MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    NetworkPkg/TcpDxe/TcpDxe.inf
> +    NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    OvmfPkg/VirtioNetDxe/VirtioNet.inf

So apparently we have two kinds of IPv4 / IPv6 separation:
- for some internet protocols -- "protocol" is an overloaded term here,
  which is why I'm saying "internet protocols" --
  MdeModulePkg/Universal/Network/foo provides an IPv4-only driver, and
  NetworkPkg/bar provides an IPv6-only driver.

- for some other internet protocols, MdeModulePkg/Universal/Network/quux
  provides an IPv4-only driver, and NetworkPkg/xizzy provides a driver
  that covers *both* IPv4 and IPv6.

For the former kind, we just need to add the IPv6 service by including
the NetworkPkg/bar. For the latter kind we need to *replace*
MdeModulePkg/Universal/Network/quux with NetworkPkg/xizzy.

Let's see:

currently included  related driver  add or replace
from MdeModulePkg   in NetworkPkg   from NetworkPkg  patch okay?
------------------  --------------  ---------------  -----------
SnpDxe              n/a             n/a              yes
DpcDxe              n/a             n/a              yes
MnpDxe              n/a             n/a              yes
VlanConfigDxe       n/a             n/a              yes
ArpDxe              n/a             n/a              yes
Dhcp4Dxe            Dhcp6Dxe        add              yes
Ip4ConfigDxe        Ip6Dxe          add              yes
Ip4Dxe              Ip6Dxe          add              yes
Mtftp4Dxe           Mtftp6Dxe       add              yes
Tcp4Dxe             TcpDxe          replace          no
Udp4Dxe             Udp6Dxe         add              yes
UefiPxeBcDxe        UefiPxeBcDxe    replace          yes
IScsiDxe            IScsiDxe        replace          no

Tcp4Dxe provides:
- gEfiTcp4ServiceBindingProtocolGuid
- gEfiTcp4ProtocolGuid

whereas TcpDxe provides:
- gEfiTcp4ProtocolGuid
- gEfiTcp4ServiceBindingProtocolGuid
- gEfiTcp6ProtocolGuid
- gEfiTcp6ServiceBindingProtocolGuid

The IScsiDxe provides the same EFI protocol
(EFI_EXT_SCSI_PASS_THRU_PROTOCOL), but the one in NetworkPkg seems to be
able to do it over IPv6 too.

I can't find any PCDs (esp. Feature PCDs) listed in the respective
NetworkPkg INF files, so I think that both TcpDxe and IScsiDxe there
provide all of their protocols unconditionally (well at least not
controlled by a build time flag).

Finally, I wonder if it would make sense to include the one remaining
NetworkPkg driver, IpSecDxe. However, that's arguably a different
feature from "plain" IPv6 support.

Summary: please make sure that -- similarly to UefiPxeBcDxe -- TcpDxe
and IScsiDxe are replaced. TcpDxe is added now (instead of replacing
Tcp4Dxe), while IScsiDxe isn't mentioned at all in the patch.

(Or, if I'm wrong, tell me why. :))

Also, if you update the patch, you might want to include the above table
in the commit message.

Thanks
Laszlo

>
>    #
> diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
> index 932aefa..c4ce608 100644
> --- a/OvmfPkg/OvmfPkgIa32.fdf
> +++ b/OvmfPkg/OvmfPkgIa32.fdf
> @@ -310,8 +310,17 @@ FILE FREEFORM = 
> PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
>    INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    INF NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    INF NetworkPkg/TcpDxe/TcpDxe.inf
> +    INF NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    INF NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    INF NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    INF NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    INF  OvmfPkg/VirtioNetDxe/VirtioNet.inf
>
>  #
> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
> index 4de961f..a500f70 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
> @@ -34,6 +34,7 @@
>    # -D FLAG=VALUE
>    #
>    DEFINE SECURE_BOOT_ENABLE      = FALSE
> +  DEFINE NETWORK_IP6_ENABLE      = FALSE
>
>  [BuildOptions]
>    GCC:*_UNIXGCC_*_CC_FLAGS             = -DMDEPKG_NDEBUG
> @@ -525,8 +526,17 @@
>    MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    NetworkPkg/TcpDxe/TcpDxe.inf
> +    NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    OvmfPkg/VirtioNetDxe/VirtioNet.inf
>
>    #
> diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
> index 048d8bf..988bc77 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.fdf
> +++ b/OvmfPkg/OvmfPkgIa32X64.fdf
> @@ -310,8 +310,17 @@ FILE FREEFORM = 
> PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
>    INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    INF NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    INF NetworkPkg/TcpDxe/TcpDxe.inf
> +    INF NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    INF NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    INF NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    INF NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    INF  OvmfPkg/VirtioNetDxe/VirtioNet.inf
>
>  #
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index 6c38081..fa560fe 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -34,6 +34,7 @@
>    # -D FLAG=VALUE
>    #
>    DEFINE SECURE_BOOT_ENABLE      = FALSE
> +  DEFINE NETWORK_IP6_ENABLE      = FALSE
>
>  [BuildOptions]
>    GCC:*_UNIXGCC_*_CC_FLAGS             = -DMDEPKG_NDEBUG
> @@ -523,8 +524,17 @@
>    MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    NetworkPkg/TcpDxe/TcpDxe.inf
> +    NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    OvmfPkg/VirtioNetDxe/VirtioNet.inf
>
>    #
> diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
> index bcf0b9d..abeae5a 100644
> --- a/OvmfPkg/OvmfPkgX64.fdf
> +++ b/OvmfPkg/OvmfPkgX64.fdf
> @@ -310,8 +310,17 @@ FILE FREEFORM = 
> PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
>    INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
>    INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
> -  INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>    INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
> +  !if $(NETWORK_IP6_ENABLE) == TRUE
> +    INF NetworkPkg/Ip6Dxe/Ip6Dxe.inf
> +    INF NetworkPkg/TcpDxe/TcpDxe.inf
> +    INF NetworkPkg/Udp6Dxe/Udp6Dxe.inf
> +    INF NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
> +    INF NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
> +    INF NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !else
> +    INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
> +  !endif
>    INF  OvmfPkg/VirtioNetDxe/VirtioNet.inf
>
>  #
>


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to