]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/PxeBcDxe/Bc.c
sync comments, fix function header, rename variable name to follow coding style.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / PxeBcDxe / Bc.c
index 5f15c81e487b5c080a6f6e2a0098309c0712fbd2..41d06f6e376dbe9a4fa7abfa2bb8418c6d7cb3c3 100644 (file)
@@ -291,8 +291,12 @@ IpChecksum2 (
   )\r
 {\r
   UINT32  Sum;\r
+  UINT16  HeaderChecksum;\r
+  UINT16  MessageChecksum;\r
 \r
-  Sum = (UINT16)~IpChecksum (Header, HeaderLen) + (UINT16)~IpChecksum (Message, MessageLen);\r
+  HeaderChecksum = (UINT16)~IpChecksum (Header, HeaderLen);\r
+  MessageChecksum = (UINT16)~IpChecksum (Message, MessageLen);\r
+  Sum = HeaderChecksum + MessageChecksum;\r
 \r
   //\r
   // in case above carried\r
@@ -341,7 +345,6 @@ UpdateChecksum (
   @retval 1                    Callbacks are not active on the handle\r
 \r
 **/\r
-STATIC\r
 BOOLEAN\r
 SetMakeCallback (\r
   IN PXE_BASECODE_DEVICE *Private\r
@@ -1142,9 +1145,6 @@ PxebcBisDetect (
   return TRUE;\r
 }\r
 \r
-static VOID *BCNotifyReg;\r
-\r
-\r
 /**\r
   Start and initialize the BaseCode protocol, Simple Network protocol and UNDI.\r
 \r
@@ -1200,7 +1200,6 @@ BcStart (
     return EFI_ALREADY_STARTED;\r
   }\r
 \r
-#if !SUPPORT_IPV6\r
   //\r
   // Fail if IPv6 is requested and not supported.\r
   //\r
@@ -1209,7 +1208,6 @@ BcStart (
     EfiReleaseLock (&Private->Lock);\r
     return EFI_UNSUPPORTED;\r
   }\r
-#endif\r
   //\r
   // Setup shortcuts to SNP protocol and data structure.\r
   //\r
@@ -1350,7 +1348,7 @@ BcStart (
   Status = gBS->AllocatePool (\r
                   EfiBootServicesData,\r
                   BUFFER_ALLOCATE_SIZE,\r
-                  &Private->TransmitBufferPtr\r
+                  (VOID **) &Private->TransmitBufferPtr\r
                   );\r
 \r
   if (!EFI_ERROR (Status)) {\r
@@ -1364,7 +1362,7 @@ BcStart (
   Status = gBS->AllocatePool (\r
                   EfiBootServicesData,\r
                   BUFFER_ALLOCATE_SIZE,\r
-                  &Private->ReceiveBufferPtr\r
+                  (VOID **) &Private->ReceiveBufferPtr\r
                   );\r
 \r
   if (!EFI_ERROR (Status)) {\r
@@ -1379,7 +1377,7 @@ BcStart (
   Status = gBS->AllocatePool (\r
                   EfiBootServicesData,\r
                   256,\r
-                  &Private->TftpErrorBuffer\r
+                  (VOID **) &Private->TftpErrorBuffer\r
                   );\r
 \r
   if (EFI_ERROR (Status)) {\r
@@ -1389,7 +1387,7 @@ BcStart (
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
-  Status = gBS->AllocatePool (EfiBootServicesData, 256, &Private->TftpAckBuffer);\r
+  Status = gBS->AllocatePool (EfiBootServicesData, 256, (VOID **) &Private->TftpAckBuffer);\r
 \r
   if (EFI_ERROR (Status)) {\r
     gBS->FreePool (Private->TftpErrorBuffer);\r
@@ -1473,7 +1471,6 @@ BcStop (
   //\r
   // Lock the instance data\r
   //\r
-  EFI_PXE_BASE_CODE_MODE      *PxebcMode;\r
   EFI_SIMPLE_NETWORK_PROTOCOL *SnpPtr;\r
   EFI_SIMPLE_NETWORK_MODE     *SnpModePtr;\r
   EFI_STATUS                  StatCode;\r
@@ -1495,7 +1492,6 @@ BcStop (
 \r
   EfiAcquireLock (&Private->Lock);\r
 \r
-  PxebcMode   = Private->EfiBc.Mode;\r
   SnpPtr      = Private->SimpleNetwork;\r
   SnpModePtr  = SnpPtr->Mode;\r
 \r
@@ -1557,7 +1553,7 @@ BcStop (
   return StatCode;\r
 }\r
 \r
-const IPV4_ADDR AllSystemsGroup = { 224, 0, 0, 1 };\r
+const IPV4_ADDR AllSystemsGroup = {{224, 0, 0, 1}};\r
 \r
 \r
 /**\r
@@ -1663,7 +1659,7 @@ IpFilter (
       Enable = EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST;\r
 \r
       for (Index = 0; Index < Filter->IpCnt; ++Index) {\r
-        PxebcMode->IpFilter.IpList[Index] = Filter->IpList[Index];\r
+        CopyMem (&PxebcMode->IpFilter.IpList[Index], &Filter->IpList[Index], sizeof (EFI_IP_ADDRESS));\r
 \r
         if (IS_MULTICAST (&Filter->IpList[Index])) {\r
           EFI_IP_ADDRESS  *TmpIp;\r
@@ -1675,7 +1671,7 @@ IpFilter (
           //\r
           if (!Index2)\r
           {\r
-              TmpIp = (EFI_IP_ADDRESS *) &AllSystemsGroup;\r
+            TmpIp = (EFI_IP_ADDRESS *) &AllSystemsGroup;\r
             --Index;\r
           } else {\r
             TmpIp = (EFI_IP_ADDRESS *) &Filter->IpList[Index];\r
@@ -1875,7 +1871,7 @@ BcSetParameters (
 \r
   if (SendGuidPtr != NULL) {\r
     if (*SendGuidPtr) {\r
-      if (PxeBcLibGetSmbiosSystemGuidAndSerialNumber (&TmpGuid, &SerialNumberPtr) != EFI_SUCCESS) {\r
+      if (PxeBcLibGetSmbiosSystemGuidAndSerialNumber (&TmpGuid, (CHAR8 **) &SerialNumberPtr) != EFI_SUCCESS) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     }\r
@@ -2010,8 +2006,8 @@ BcSetStationIP (
     goto RELEASE_LOCK;\r
   }\r
 \r
-  PxebcMode->StationIp   = *StationIpPtr;\r
-  PxebcMode->SubnetMask  = *SubnetMaskPtr;\r
+  CopyMem (&PxebcMode->StationIp, StationIpPtr, sizeof (EFI_IP_ADDRESS));\r
+  CopyMem (&PxebcMode->SubnetMask, SubnetMaskPtr, sizeof (EFI_IP_ADDRESS));\r
   Private->GoodStationIp = TRUE;\r
 \r
 RELEASE_LOCK:\r
@@ -2173,19 +2169,9 @@ PxeBcDriverStart (
                   );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    Status = gBS->OpenProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-                    (VOID **) &Private->NiiPtr,\r
-                    This->DriverBindingHandle,\r
-                    Controller,\r
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                    );\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      goto PxeBcError;\r
-    }\r
+    goto PxeBcError;\r
   }\r
+\r
   //\r
   // Get the Snp interface\r
   //\r
@@ -2234,12 +2220,8 @@ PxeBcDriverStart (
   // implementation supports IPv6.\r
   //\r
   Private->EfiBc.Mode->Ipv6Supported = SUPPORT_IPV6;\r
-\r
-#if SUPPORT_IPV6\r
-  Private->EfiBc.Mode->Ipv6Available = Private->NiiPtr->Ipv6Supported;\r
-#else\r
   Private->EfiBc.Mode->Ipv6Available = FALSE;\r
-#endif\r
+\r
   //\r
   // Set to TRUE by the BC constructor if this BC\r
   // implementation supports BIS.\r
@@ -2361,6 +2343,41 @@ PxeBcDriverStop (
   return Status;\r
 }\r
 \r
+EFI_STATUS\r
+EFIAPI\r
+PxeBcUnload (\r
+  IN EFI_HANDLE  ImageHandle\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+  UINTN       DeviceHandleCount;\r
+  EFI_HANDLE  *DeviceHandleBuffer;\r
+  UINTN       Index;\r
+\r
+  Status = gBS->LocateHandleBuffer (\r
+                  AllHandles,\r
+                  NULL,\r
+                  NULL,\r
+                  &DeviceHandleCount,\r
+                  &DeviceHandleBuffer\r
+                  );\r
+  if (!EFI_ERROR (Status)) {\r
+    for (Index = 0; Index < DeviceHandleCount; Index++) {\r
+      Status = gBS->DisconnectController (\r
+                      DeviceHandleBuffer[Index],\r
+                      mPxeBcDriverBinding.DriverBindingHandle,\r
+                      NULL\r
+                      );\r
+    }\r
+\r
+    if (DeviceHandleBuffer != NULL) {\r
+      gBS->FreePool (DeviceHandleBuffer);\r
+    }\r
+  }\r
+\r
+  return Status;\r
+}\r
+\r
 \r
 /**\r
   Initialize the base code drivers and install the driver binding\r
@@ -2377,25 +2394,36 @@ InitializeBCDriver (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  EFI_STATUS  Status;\r
+  EFI_STATUS                 Status;\r
+  EFI_LOADED_IMAGE_PROTOCOL  *LoadedImage;\r
 \r
   //\r
   // Initialize EFI library\r
   //\r
-  Status = EfiLibInstallAllDriverProtocols (\r
-            ImageHandle,\r
-            SystemTable,\r
-            &mPxeBcDriverBinding,\r
-            NULL,\r
-            COMPONENT_NAME,\r
-            NULL,\r
-            NULL\r
-            );\r
+  Status = EfiLibInstallDriverBindingComponentName2 (\r
+             ImageHandle,\r
+             SystemTable,\r
+             &mPxeBcDriverBinding,\r
+             NULL,\r
+             &gPxeBcComponentName,\r
+             &gPxeBcComponentName2\r
+             );\r
+\r
+  Status = gBS->HandleProtocol (\r
+                  ImageHandle,\r
+                  &gEfiLoadedImageProtocolGuid,\r
+                  (VOID **) &LoadedImage\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  } else {\r
+    LoadedImage->Unload = PxeBcUnload;\r
+  }\r
 \r
   InitArpHeader ();\r
   OptionsStrucInit ();\r
 \r
-  return EFI_SUCCESS;\r
+  return Status;\r
 }\r
 \r
 /* eof - bc.c */\r