]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Fix timer unit bug in MNP: default rx/tx timeout value should be 10,000,000 (10s...
authortye <tye@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Oct 2009 06:29:51 +0000 (06:29 +0000)
committertye <tye@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Oct 2009 06:29:51 +0000 (06:29 +0000)
2. Enable the mapping from IPv6 multicast address to MAC address in MnpMcastIpToMac().
3. Remove 2 tabs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9355 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
MdeModulePkg/Universal/Network/MnpDxe/MnpMain.c

index 838765de7403103218804aef70158dbbbeebe89f..381f8b87b8bc68ba3cf48bfc27e8288041763a46 100644 (file)
@@ -32,8 +32,8 @@ EFI_MANAGED_NETWORK_PROTOCOL    mMnpProtocolTemplate = {
 };\r
 \r
 EFI_MANAGED_NETWORK_CONFIG_DATA mMnpDefaultConfigData = {\r
 };\r
 \r
 EFI_MANAGED_NETWORK_CONFIG_DATA mMnpDefaultConfigData = {\r
-  10000,\r
-  10000,\r
+  10000000,\r
+  10000000,\r
   0,\r
   FALSE,\r
   FALSE,\r
   0,\r
   FALSE,\r
   FALSE,\r
index 79ea4789144d40faa2373504d01ccc9a53a21b49..86004cda84323ef21ad87e78d2c8613edbd18194 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Implementation of Managed Network Protocol public services.\r
 \r
 /** @file\r
   Implementation of Managed Network Protocol public services.\r
 \r
-Copyright (c) 2005 - 2007, Intel Corporation. <BR>\r
+Copyright (c) 2005 - 2009, Intel Corporation. <BR>\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -226,22 +226,20 @@ MnpMcastIpToMac (
   MNP_INSTANCE_DATA           *Instance;\r
   EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
   EFI_TPL                     OldTpl;\r
   MNP_INSTANCE_DATA           *Instance;\r
   EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
   EFI_TPL                     OldTpl;\r
+  EFI_IPv6_ADDRESS            *Ip6Address;\r
 \r
   if ((This == NULL) || (IpAddress == NULL) || (MacAddress == NULL)) {\r
 \r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
 \r
   if ((This == NULL) || (IpAddress == NULL) || (MacAddress == NULL)) {\r
 \r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if (Ipv6Flag) {\r
-    //\r
-    // Currently IPv6 isn't supported.\r
-    //\r
-    return EFI_UNSUPPORTED;\r
-  }\r
+  Ip6Address = &IpAddress->v6;\r
 \r
 \r
-  if (!IP4_IS_MULTICAST (EFI_NTOHL (*IpAddress))) {\r
+  if ((Ipv6Flag && !IP6_IS_MULTICAST (Ip6Address)) ||\r
+      (!Ipv6Flag && !IP4_IS_MULTICAST (EFI_NTOHL (*IpAddress)))\r
+      ) {\r
     //\r
     //\r
-    // The IPv4 address passed in is not a multicast address.\r
+    // The IP address passed in is not a multicast address.\r
     //\r
     return EFI_INVALID_PARAMETER;\r
   }\r
     //\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -259,17 +257,33 @@ MnpMcastIpToMac (
   Snp = Instance->MnpServiceData->Snp;\r
   ASSERT (Snp != NULL);\r
 \r
   Snp = Instance->MnpServiceData->Snp;\r
   ASSERT (Snp != NULL);\r
 \r
+  ZeroMem (MacAddress, sizeof (EFI_MAC_ADDRESS));  \r
+\r
   if (Snp->Mode->IfType == NET_IFTYPE_ETHERNET) {\r
   if (Snp->Mode->IfType == NET_IFTYPE_ETHERNET) {\r
-    //\r
-    // Translate the IPv4 address into a multicast MAC address if the NIC is an\r
-    // ethernet NIC.\r
-    //\r
-    MacAddress->Addr[0] = 0x01;\r
-    MacAddress->Addr[1] = 0x00;\r
-    MacAddress->Addr[2] = 0x5E;\r
-    MacAddress->Addr[3] = (UINT8) (IpAddress->v4.Addr[1] & 0x7F);\r
-    MacAddress->Addr[4] = IpAddress->v4.Addr[2];\r
-    MacAddress->Addr[5] = IpAddress->v4.Addr[3];\r
+    if (!Ipv6Flag) {\r
+      //\r
+      // Translate the IPv4 address into a multicast MAC address if the NIC is an\r
+      // ethernet NIC according to RFC1112..\r
+      //\r
+      MacAddress->Addr[0] = 0x01;\r
+      MacAddress->Addr[1] = 0x00;\r
+      MacAddress->Addr[2] = 0x5E;\r
+      MacAddress->Addr[3] = (UINT8) (IpAddress->v4.Addr[1] & 0x7F);\r
+      MacAddress->Addr[4] = IpAddress->v4.Addr[2];\r
+      MacAddress->Addr[5] = IpAddress->v4.Addr[3];\r
+    } else {\r
+      //\r
+      // Translate the IPv6 address into a multicast MAC address if the NIC is an \r
+      // ethernet NIC according to RFC2464.\r
+      //\r
+      \r
+      MacAddress->Addr[0] = 0x33;\r
+      MacAddress->Addr[1] = 0x33;\r
+      MacAddress->Addr[2] = Ip6Address->Addr[12];\r
+      MacAddress->Addr[3] = Ip6Address->Addr[13];\r
+      MacAddress->Addr[4] = Ip6Address->Addr[14];\r
+      MacAddress->Addr[5] = Ip6Address->Addr[15];\r
+    }\r
 \r
     Status = EFI_SUCCESS;\r
   } else {\r
 \r
     Status = EFI_SUCCESS;\r
   } else {\r
@@ -454,7 +468,7 @@ ON_EXIT:
   @param[in]  This    Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance.\r
   @param[in]  Token   Pointer to a token associated with the transmit data\r
                       descriptor. Type EFI_MANAGED_NETWORK_COMPLETION_TOKEN\r
   @param[in]  This    Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance.\r
   @param[in]  Token   Pointer to a token associated with the transmit data\r
                       descriptor. Type EFI_MANAGED_NETWORK_COMPLETION_TOKEN\r
-                                         is defined in "Related Definitions" below.\r
+                      is defined in "Related Definitions" below.\r
 \r
   @retval EFI_SUCCESS            The transmit completion token was cached.\r
   @retval EFI_NOT_STARTED        This MNP child driver instance has not been\r
 \r
   @retval EFI_SUCCESS            The transmit completion token was cached.\r
   @retval EFI_NOT_STARTED        This MNP child driver instance has not been\r
@@ -655,7 +669,7 @@ ON_EXIT:
   @param[in]  Token    Pointer to a token that has been issued by\r
                        EFI_MANAGED_NETWORK_PROTOCOL.Transmit() or\r
                        EFI_MANAGED_NETWORK_PROTOCOL.Receive(). If NULL, all \r
   @param[in]  Token    Pointer to a token that has been issued by\r
                        EFI_MANAGED_NETWORK_PROTOCOL.Transmit() or\r
                        EFI_MANAGED_NETWORK_PROTOCOL.Receive(). If NULL, all \r
-                                          pending tokens are aborted.\r
+                       pending tokens are aborted.\r
 \r
   @retval EFI_SUCCESS            The asynchronous I/O request was aborted and\r
                                  Token.Event was signaled. When Token is NULL,\r
 \r
   @retval EFI_SUCCESS            The asynchronous I/O request was aborted and\r
                                  Token.Event was signaled. When Token is NULL,\r