The following issues exist with the EFI Socket Library:

*  Don't run socket applications or the socket driver for a long time - The IPv4Config
   and DHCP protocols are not properly running the renew and lease expiration timers.
   When the DHCP lease expires it is possible for a duplicate IP address to exist on
   the network.  HSD 206136

*  Network adapters must be initialized prior to running the socket application - Static
   and dynamic IP address need to be properly assigned to the network adapters on the
   system.  Note that sockets does not assign the IP addresses since it does not
   understand how the system is connected to the network!

*  The default device must contain the Efi\etc directory populated with files containing
   the proper network configuration - A template set of files is in StdLib\Efi\etc.  Note
   that the resolv.conf file contains the set of DNS servers.

*  Since DHCP is not running when the sockets application is running, the last negotiated
   packet is no longer available.  As a result, any of the options that DHCP did negotiate
   are no longer available for sockets such as the list of DNS servers.

*  DHCP does not request the domain name and domain name server (DNS) addresses.  This
   requires that sockets use configuration files in Efi\etc!

*  TCPv4 transfer rate is slow (< 10 Mbits/sec) - This is an unidentified issue.

*  Tcp4Dxe transmits more urgent data than is sent through sockets when normal data is
   queued for transmission before the urgent data.  HSD 206365

*  Raw socket applications are not able to pass the IP header as part of their
   payload by using the IP option IP_HDRINCL.  This is because the UEFI IPv4 driver
   (Ip4Dxe) does not support RawData. HSD 206136

*  Only version 4 of the UEFI network stack is supported

