]> git.proxmox.com Git - mirror_edk2.git/commitdiff
NetworkPkg: Add PCDs for HTTP DNS RetryCount and RetryInterval
authorHeng Luo <heng.luo@intel.com>
Sun, 3 Apr 2022 06:14:10 +0000 (14:14 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Mon, 11 Apr 2022 15:12:46 +0000 (15:12 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3889

Currently the HTTP DNS Retry Interval is 2 second and no retry attempt.
If DNS response can't arrive in 2 second, the DNS request is failed,
and then HTTP boot is failed.
In order to resolve this issue, Add PCDs to support RetryCount
and RetryInterval configured in Platform.

Cc: Maciej Rabeda <maciej.rabeda@linux.intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
Signed-off-by: Heng Luo <heng.luo@intel.com>
Reviewed-by: Maciej Rabeda <maciej.rabeda@linux.intel.com>
NetworkPkg/HttpDxe/HttpDns.c
NetworkPkg/HttpDxe/HttpDxe.inf
NetworkPkg/NetworkPkg.dec
NetworkPkg/NetworkPkg.uni

index 59a2784e6a40ade69481e8da558f05bed7837717..13cbde0f3491606aa4271df50d6404b8655881eb 100644 (file)
@@ -108,6 +108,8 @@ HttpDns4 (
   Dns4CfgData.DnsServerListCount = DnsServerListCount;\r
   Dns4CfgData.DnsServerList      = DnsServerList;\r
   Dns4CfgData.UseDefaultSetting  = HttpInstance->IPv4Node.UseDefaultAddress;\r
+  Dns4CfgData.RetryInterval      = PcdGet32 (PcdHttpDnsRetryInterval);\r
+  Dns4CfgData.RetryCount         = PcdGet32 (PcdHttpDnsRetryCount);\r
   if (!Dns4CfgData.UseDefaultSetting) {\r
     IP4_COPY_ADDRESS (&Dns4CfgData.StationIp, &HttpInstance->IPv4Node.LocalAddress);\r
     IP4_COPY_ADDRESS (&Dns4CfgData.SubnetMask, &HttpInstance->IPv4Node.LocalSubnet);\r
@@ -315,6 +317,8 @@ HttpDns6 (
   Dns6ConfigData.DnsServerList  = DnsServerList;\r
   Dns6ConfigData.EnableDnsCache = TRUE;\r
   Dns6ConfigData.Protocol       = EFI_IP_PROTO_UDP;\r
+  Dns6ConfigData.RetryInterval  = PcdGet32 (PcdHttpDnsRetryInterval);\r
+  Dns6ConfigData.RetryCount     = PcdGet32 (PcdHttpDnsRetryCount);\r
   IP6_COPY_ADDRESS (&Dns6ConfigData.StationIp, &HttpInstance->Ipv6Node.LocalAddress);\r
   Status = Dns6->Configure (\r
                    Dns6,\r
index af681c0184686362f63cbbce81d5998d9a108f09..c9502d0bb6d0a1f26f40f12abcc7e1ce880b56db 100644 (file)
@@ -75,6 +75,8 @@
 [Pcd]\r
   gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections       ## CONSUMES\r
   gEfiNetworkPkgTokenSpaceGuid.PcdHttpIoTimeout              ## CONSUMES\r
+  gEfiNetworkPkgTokenSpaceGuid.PcdHttpDnsRetryInterval       ## CONSUMES\r
+  gEfiNetworkPkgTokenSpaceGuid.PcdHttpDnsRetryCount          ## CONSUMES\r
 \r
 [UserExtensions.TianoCore."ExtraFiles"]\r
   HttpDxeExtra.uni\r
index 928e84fec4387e1a639e4bffc72fc005325c904f..5e43ebf8c5da4a6650ab8eb57bd937b9a795d49b 100644 (file)
   # @Prompt The Timeout value of HTTP Io. Default value is 5000.\r
   gEfiNetworkPkgTokenSpaceGuid.PcdHttpIoTimeout|5000|UINT32|0x0000000F\r
 \r
+  ## The Retry Interval of HTTP DNS in seconds. If the Retry Interval is less than\r
+  # DNS_DEFAULT_TIMEOUT, then use the DNS_DEFAULT_TIMEOUT.\r
+  # @Prompt The value of Retry Interval. Default value is 0\r
+  gEfiNetworkPkgTokenSpaceGuid.PcdHttpDnsRetryInterval|0|UINT32|0x00000010\r
+\r
+  ## The Retry Count of HTTP DNS if no DNS response received after Retry Interval.\r
+  # @Prompt The value of Retry Count,  Default value is 0.\r
+  gEfiNetworkPkgTokenSpaceGuid.PcdHttpDnsRetryCount|0|UINT32|0x00000011\r
+\r
 [UserExtensions.TianoCore."ExtraFiles"]\r
   NetworkPkgExtra.uni\r
index 6d0fa67c6f93554d953a45c19e127cd544bd5222..c0bbbd3ee18d8b5d3d06c57859fc185e36bca769 100644 (file)
 #string STR_gEfiNetworkPkgTokenSpaceGuid_PcdHttpIoTimeout_HELP  #language en-US "This value is used to configure the request and response timeout when getting "\r
                                                                                "the recovery image from the remote source during an HTTP recovery boot."\r
                                                                                "The default value set is 5 seconds."\r
+\r
+#string STR_gEfiNetworkPkgTokenSpaceGuid_PcdHttpDnsRetryInterval_PROMPT  #language en-US "Retry Interval of HTTP DNS"\r
+\r
+#string STR_gEfiNetworkPkgTokenSpaceGuid_PcdHttpDnsRetryInterval_HELP  #language en-US "This value is used to configure the retry Interval of HTTP DNS."\r
+                                                                                "The default value set is 0 second. If the value is less than"\r
+                                                                                "DNS_DEFAULT_TIMEOUT, then use the DNS_DEFAULT_TIMEOUT."\r
+\r
+#string STR_gEfiNetworkPkgTokenSpaceGuid_PcdHttpDnsRetryCount_PROMPT  #language en-US "Retry Count of HTTP DNS"\r
+\r
+#string STR_gEfiNetworkPkgTokenSpaceGuid_PcdHttpDnsRetryCount_HELP  #language en-US "This value is used to configure the Retry Count of HTTP DNS if "\r
+                                                                                "no DNS response received after Retry Interval. The default value set is 0."\r