]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
move protocol close process from MnpDriverBindingStart() to MnpFlushServiceData().
[mirror_edk2.git] / MdeModulePkg / Universal / Network / MnpDxe / MnpConfig.c
index c2bb839e6b0600699bd1536c0a3adbf4f0cb8a3f..aea31e461ed373bf98d3c2b3519aee3099bceacd 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-Copyright (c) 2005 - 2007, Intel Corporation\r
+Copyright (c) 2005 - 2008, Intel Corporation\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
@@ -142,7 +142,7 @@ MnpAddFreeNbuf (
     Nbuf = NetbufAlloc (MnpServiceData->BufferLength + MnpServiceData->PaddingSize);\r
     if (Nbuf == NULL) {\r
 \r
-      MNP_DEBUG_ERROR (("MnpAddFreeNbuf: NetBufAlloc failed.\n"));\r
+      DEBUG ((EFI_D_ERROR, "MnpAddFreeNbuf: NetBufAlloc failed.\n"));\r
       Status = EFI_OUT_OF_RESOURCES;\r
       break;\r
     }\r
@@ -188,7 +188,7 @@ MnpAllocNbuf (
 \r
   FreeNbufQue = &MnpServiceData->FreeNbufQue;\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_RECYCLE);\r
+  OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
 \r
   //\r
   // Check whether there are available buffers, or else try to add some.\r
@@ -197,8 +197,9 @@ MnpAllocNbuf (
 \r
     if ((MnpServiceData->NbufCnt + MNP_NET_BUFFER_INCREASEMENT) > MNP_MAX_NET_BUFFER_NUM) {\r
 \r
-      MNP_DEBUG_ERROR (\r
-        ("MnpAllocNbuf: The maximum NET_BUF size is reached for MNP driver instance %p.\n",\r
+      DEBUG (\r
+        (EFI_D_ERROR,\r
+        "MnpAllocNbuf: The maximum NET_BUF size is reached for MNP driver instance %p.\n",\r
         MnpServiceData)\r
         );\r
 \r
@@ -209,8 +210,9 @@ MnpAllocNbuf (
     Status = MnpAddFreeNbuf (MnpServiceData, MNP_NET_BUFFER_INCREASEMENT);\r
     if (EFI_ERROR (Status)) {\r
 \r
-      MNP_DEBUG_ERROR (\r
-        ("MnpAllocNbuf: Failed to add NET_BUFs into the FreeNbufQue, %r.\n",\r
+      DEBUG (\r
+        (EFI_D_ERROR,\r
+        "MnpAllocNbuf: Failed to add NET_BUFs into the FreeNbufQue, %r.\n",\r
         Status)\r
         );\r
       //\r
@@ -230,7 +232,7 @@ MnpAllocNbuf (
   }\r
 \r
 ON_EXIT:\r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
   return Nbuf;\r
 }\r
@@ -256,7 +258,7 @@ MnpFreeNbuf (
   NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE);\r
   ASSERT (Nbuf->RefCnt > 1);\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_RECYCLE);\r
+  OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
 \r
   NET_PUT_REF (Nbuf);\r
 \r
@@ -268,7 +270,7 @@ MnpFreeNbuf (
     NetbufQueAppend (&MnpServiceData->FreeNbufQue, Nbuf);\r
   }\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 }\r
 \r
 \r
@@ -327,8 +329,8 @@ MnpInitializeServiceData (
   //\r
   // Initialize the lists.\r
   //\r
-  NetListInit (&MnpServiceData->GroupAddressList);\r
-  NetListInit (&MnpServiceData->ChildrenList);\r
+  InitializeListHead (&MnpServiceData->GroupAddressList);\r
+  InitializeListHead (&MnpServiceData->ChildrenList);\r
 \r
   //\r
   // Get the buffer length used to allocate NET_BUF to hold data received\r
@@ -337,7 +339,7 @@ MnpInitializeServiceData (
   MnpServiceData->BufferLength = MnpServiceData->Mtu + SnpMode->MediaHeaderSize + NET_ETHER_FCS_SIZE;\r
 \r
   //\r
-  // Make sure the protocol headers immediately following the media header \r
+  // Make sure the protocol headers immediately following the media header\r
   // 4-byte aligned\r
   //\r
   MnpServiceData->PaddingSize = (4 - SnpMode->MediaHeaderSize) & 0x3;\r
@@ -349,7 +351,7 @@ MnpInitializeServiceData (
   Status = MnpAddFreeNbuf (MnpServiceData, MNP_INIT_NET_BUFFER_NUM);\r
   if (EFI_ERROR (Status)) {\r
 \r
-    MNP_DEBUG_ERROR (("MnpInitializeServiceData: MnpAddFreeNbuf failed, %r.\n", Status));\r
+    DEBUG ((EFI_D_ERROR, "MnpInitializeServiceData: MnpAddFreeNbuf failed, %r.\n", Status));\r
     goto ERROR;\r
   }\r
   //\r
@@ -365,10 +367,10 @@ MnpInitializeServiceData (
   //\r
   // Allocate buffer pool for tx.\r
   //\r
-  MnpServiceData->TxBuf = NetAllocatePool (MnpServiceData->Mtu + SnpMode->MediaHeaderSize);\r
+  MnpServiceData->TxBuf = AllocatePool (MnpServiceData->Mtu + SnpMode->MediaHeaderSize);\r
   if (MnpServiceData->TxBuf == NULL) {\r
 \r
-    MNP_DEBUG_ERROR (("MnpInitializeServiceData: NetAllocatePool failed.\n"));\r
+    DEBUG ((EFI_D_ERROR, "MnpInitializeServiceData: AllocatePool failed.\n"));\r
     Status = EFI_OUT_OF_RESOURCES;\r
 \r
     goto ERROR;\r
@@ -379,14 +381,14 @@ MnpInitializeServiceData (
   //\r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL | EVT_TIMER,\r
-                  NET_TPL_LOCK,\r
+                  TPL_CALLBACK,\r
                   MnpSystemPoll,\r
                   MnpServiceData,\r
                   &MnpServiceData->PollTimer\r
                   );\r
   if (EFI_ERROR (Status)) {\r
 \r
-    MNP_DEBUG_ERROR (("MnpInitializeServiceData: CreateEvent for poll timer failed.\n"));\r
+    DEBUG ((EFI_D_ERROR, "MnpInitializeServiceData: CreateEvent for poll timer failed.\n"));\r
     goto ERROR;\r
   }\r
 \r
@@ -395,14 +397,14 @@ MnpInitializeServiceData (
   //\r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL | EVT_TIMER,\r
-                  NET_TPL_TIMER,\r
+                  TPL_CALLBACK,\r
                   MnpCheckPacketTimeout,\r
                   MnpServiceData,\r
                   &MnpServiceData->TimeoutCheckTimer\r
                   );\r
   if (EFI_ERROR (Status)) {\r
 \r
-    MNP_DEBUG_ERROR (("MnpInitializeServiceData: CreateEvent for packet timeout check failed.\n"));\r
+    DEBUG ((EFI_D_ERROR, "MnpInitializeServiceData: CreateEvent for packet timeout check failed.\n"));\r
     goto ERROR;\r
   }\r
 \r
@@ -411,14 +413,14 @@ MnpInitializeServiceData (
   //\r
   Status = gBS->CreateEvent (\r
                   EVT_TIMER,\r
-                  NET_TPL_TIMER,\r
+                  TPL_CALLBACK,\r
                   NULL,\r
                   NULL,\r
                   &MnpServiceData->TxTimeoutEvent\r
                   );\r
   if (EFI_ERROR (Status)) {\r
 \r
-    MNP_DEBUG_ERROR (("MnpInitializeServiceData: CreateEvent for tx timeout event failed.\n"));\r
+    DEBUG ((EFI_D_ERROR, "MnpInitializeServiceData: CreateEvent for tx timeout event failed.\n"));\r
   }\r
 \r
 ERROR:\r
@@ -439,7 +441,7 @@ ERROR:
 \r
     if (MnpServiceData->TxBuf != NULL) {\r
 \r
-      NetFreePool (MnpServiceData->TxBuf);\r
+      gBS->FreePool (MnpServiceData->TxBuf);\r
     }\r
 \r
     if (MnpServiceData->RxNbufCache != NULL) {\r
@@ -475,7 +477,7 @@ MnpFlushServiceData (
   //\r
   // The GroupAddressList must be empty.\r
   //\r
-  ASSERT (NetListIsEmpty (&MnpServiceData->GroupAddressList));\r
+  ASSERT (IsListEmpty (&MnpServiceData->GroupAddressList));\r
 \r
   //\r
   // Close the event.\r
@@ -487,7 +489,7 @@ MnpFlushServiceData (
   //\r
   // Free the tx buffer.\r
   //\r
-  NetFreePool (MnpServiceData->TxBuf);\r
+  gBS->FreePool (MnpServiceData->TxBuf);\r
 \r
   //\r
   // Free the RxNbufCache.\r
@@ -502,11 +504,21 @@ MnpFlushServiceData (
 \r
   DEBUG_CODE (\r
 \r
-    if (MnpServiceData->NbufCnt != 0) {\r
+  if (MnpServiceData->NbufCnt != 0) {\r
 \r
-    MNP_DEBUG_WARN (("MnpFlushServiceData: Memory leak, MnpServiceData->NbufCnt != 0.\n"));\r
+    DEBUG ((EFI_D_WARN, "MnpFlushServiceData: Memory leak, MnpServiceData->NbufCnt != 0.\n"));\r
   }\r
   );\r
+\r
+  //\r
+  // Close the Simple Network Protocol.\r
+  //\r
+  gBS->CloseProtocol (\r
+        MnpServiceData->ControllerHandle,\r
+        &gEfiSimpleNetworkProtocolGuid,\r
+        This->DriverBindingHandle,\r
+        MnpServiceData->ControllerHandle\r
+        );\r
 }\r
 \r
 \r
@@ -547,9 +559,9 @@ MnpInitializeInstanceData (
   //\r
   // Initialize the lists.\r
   //\r
-  NetListInit (&Instance->GroupCtrlBlkList);\r
-  NetListInit (&Instance->RcvdPacketQueue);\r
-  NetListInit (&Instance->RxDeliveredPacketQueue);\r
+  InitializeListHead (&Instance->GroupCtrlBlkList);\r
+  InitializeListHead (&Instance->RcvdPacketQueue);\r
+  InitializeListHead (&Instance->RxDeliveredPacketQueue);\r
 \r
   //\r
   // Initialize the RxToken Map.\r
@@ -769,7 +781,7 @@ MnpStart (
       Status = MnpStartSnp (MnpServiceData->Snp);\r
       if (EFI_ERROR (Status)) {\r
 \r
-        MNP_DEBUG_ERROR (("MnpStart: MnpStartSnp failed, %r.\n", Status));\r
+        DEBUG ((EFI_D_ERROR, "MnpStart: MnpStartSnp failed, %r.\n", Status));\r
         goto ErrorExit;\r
       }\r
 \r
@@ -783,8 +795,9 @@ MnpStart (
                       );\r
       if (EFI_ERROR (Status)) {\r
 \r
-        MNP_DEBUG_ERROR (\r
-          ("MnpStart, gBS->SetTimer for TimeoutCheckTimer %r.\n",\r
+        DEBUG (\r
+          (EFI_D_ERROR,\r
+          "MnpStart, gBS->SetTimer for TimeoutCheckTimer %r.\n",\r
           Status)\r
           );\r
         goto ErrorExit;\r
@@ -802,7 +815,7 @@ MnpStart (
     Status      = gBS->SetTimer (MnpServiceData->PollTimer, TimerOpType, MNP_SYS_POLL_INTERVAL);\r
     if (EFI_ERROR (Status)) {\r
 \r
-      MNP_DEBUG_ERROR (("MnpStart: gBS->SetTimer for PollTimer failed, %r.\n", Status));\r
+      DEBUG ((EFI_D_ERROR, "MnpStart: gBS->SetTimer for PollTimer failed, %r.\n", Status));\r
       goto ErrorExit;\r
     }\r
 \r
@@ -902,9 +915,9 @@ MnpFlushRcvdDataQueue (
 \r
   NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_RECYCLE);\r
+  OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
 \r
-  while (!NetListIsEmpty (&Instance->RcvdPacketQueue)) {\r
+  while (!IsListEmpty (&Instance->RcvdPacketQueue)) {\r
     //\r
     // Remove all the Wraps.\r
     //\r
@@ -919,7 +932,7 @@ MnpFlushRcvdDataQueue (
 \r
   ASSERT (Instance->RcvdPacketQueueSize == 0);\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 }\r
 \r
 \r
@@ -1086,7 +1099,7 @@ MnpConfigReceiveFilters (
   UINT32                      EnableFilterBits;\r
   UINT32                      DisableFilterBits;\r
   BOOLEAN                     ResetMCastFilters;\r
-  NET_LIST_ENTRY              *Entry;\r
+  LIST_ENTRY                  *Entry;\r
   UINT32                      Index;\r
   MNP_GROUP_ADDRESS           *GroupAddress;\r
 \r
@@ -1138,10 +1151,10 @@ MnpConfigReceiveFilters (
       // Allocate pool for the mulicast addresses.\r
       //\r
       MCastFilterCnt  = MnpServiceData->GroupAddressCount;\r
-      MCastFilter     = NetAllocatePool (sizeof (EFI_MAC_ADDRESS) * MCastFilterCnt);\r
+      MCastFilter     = AllocatePool (sizeof (EFI_MAC_ADDRESS) * MCastFilterCnt);\r
       if (MCastFilter == NULL) {\r
 \r
-        MNP_DEBUG_ERROR (("MnpConfigReceiveFilters: Failed to allocate memory resource for MCastFilter.\n"));\r
+        DEBUG ((EFI_D_ERROR, "MnpConfigReceiveFilters: Failed to allocate memory resource for MCastFilter.\n"));\r
         return EFI_OUT_OF_RESOURCES;\r
       }\r
 \r
@@ -1202,8 +1215,9 @@ MnpConfigReceiveFilters (
   DEBUG_CODE (\r
     if (EFI_ERROR (Status)) {\r
 \r
-    MNP_DEBUG_ERROR (\r
-      ("MnpConfigReceiveFilters: Snp->ReceiveFilters failed, %r.\n",\r
+    DEBUG (\r
+      (EFI_D_ERROR,\r
+      "MnpConfigReceiveFilters: Snp->ReceiveFilters failed, %r.\n",\r
       Status)\r
       );\r
   }\r
@@ -1213,7 +1227,7 @@ MnpConfigReceiveFilters (
     //\r
     // Free the buffer used to hold the group addresses.\r
     //\r
-    NetFreePool (MCastFilter);\r
+    gBS->FreePool (MCastFilter);\r
   }\r
 \r
   return Status;\r
@@ -1258,17 +1272,17 @@ MnpGroupOpAddCtrlBlk (
     //\r
     // Allocate a new GroupAddress to be added into MNP's GroupAddressList.\r
     //\r
-    GroupAddress = NetAllocatePool (sizeof (MNP_GROUP_ADDRESS));\r
+    GroupAddress = AllocatePool (sizeof (MNP_GROUP_ADDRESS));\r
     if (GroupAddress == NULL) {\r
 \r
-      MNP_DEBUG_ERROR (("MnpGroupOpFormCtrlBlk: Failed to allocate memory resource.\n"));\r
+      DEBUG ((EFI_D_ERROR, "MnpGroupOpFormCtrlBlk: Failed to allocate memory resource.\n"));\r
 \r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
 \r
     CopyMem (&GroupAddress->Address, MacAddress, sizeof (GroupAddress->Address));\r
     GroupAddress->RefCnt  = 0;\r
-    NetListInsertTail (\r
+    InsertTailList (\r
       &MnpServiceData->GroupAddressList,\r
       &GroupAddress->AddrEntry\r
       );\r
@@ -1284,7 +1298,7 @@ MnpGroupOpAddCtrlBlk (
   // Add the CtrlBlk into the instance's GroupCtrlBlkList.\r
   //\r
   CtrlBlk->GroupAddress = GroupAddress;\r
-  NetListInsertTail (&Instance->GroupCtrlBlkList, &CtrlBlk->CtrlBlkEntry);\r
+  InsertTailList (&Instance->GroupCtrlBlkList, &CtrlBlk->CtrlBlkEntry);\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -1319,8 +1333,8 @@ MnpGroupOpDelCtrlBlk (
   // Remove and free the CtrlBlk.\r
   //\r
   GroupAddress = CtrlBlk->GroupAddress;\r
-  NetListRemoveEntry (&CtrlBlk->CtrlBlkEntry);\r
-  NetFreePool (CtrlBlk);\r
+  RemoveEntryList (&CtrlBlk->CtrlBlkEntry);\r
+  gBS->FreePool (CtrlBlk);\r
 \r
   ASSERT (GroupAddress->RefCnt > 0);\r
 \r
@@ -1334,8 +1348,8 @@ MnpGroupOpDelCtrlBlk (
     // Free this GroupAddress entry if no instance uses it.\r
     //\r
     MnpServiceData->GroupAddressCount--;\r
-    NetListRemoveEntry (&GroupAddress->AddrEntry);\r
-    NetFreePool (GroupAddress);\r
+    RemoveEntryList (&GroupAddress->AddrEntry);\r
+    gBS->FreePool (GroupAddress);\r
 \r
     return TRUE;\r
   }\r
@@ -1367,8 +1381,8 @@ MnpGroupOp (
   )\r
 {\r
   MNP_SERVICE_DATA        *MnpServiceData;\r
-  NET_LIST_ENTRY          *Entry;\r
-  NET_LIST_ENTRY          *NextEntry;\r
+  LIST_ENTRY              *Entry;\r
+  LIST_ENTRY              *NextEntry;\r
   MNP_GROUP_ADDRESS       *GroupAddress;\r
   EFI_SIMPLE_NETWORK_MODE *SnpMode;\r
   MNP_GROUP_CONTROL_BLOCK *NewCtrlBlk;\r
@@ -1392,10 +1406,10 @@ MnpGroupOp (
     //\r
     // Allocate memory for the control block.\r
     //\r
-    NewCtrlBlk    = NetAllocatePool (sizeof (MNP_GROUP_CONTROL_BLOCK));\r
+    NewCtrlBlk    = AllocatePool (sizeof (MNP_GROUP_CONTROL_BLOCK));\r
     if (NewCtrlBlk == NULL) {\r
 \r
-      MNP_DEBUG_ERROR (("MnpGroupOp: Failed to allocate memory resource.\n"));\r
+      DEBUG ((EFI_D_ERROR, "MnpGroupOp: Failed to allocate memory resource.\n"));\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
 \r
@@ -1404,7 +1418,7 @@ MnpGroupOp (
       // Check whether the MacAddress is already joined by other instances.\r
       //\r
       GroupAddress = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_ADDRESS, AddrEntry);\r
-      if (0 == NetCompareMem (\r
+      if (0 == CompareMem (\r
                 MacAddress,\r
                 &GroupAddress->Address,\r
                 SnpMode->HwAddressSize\r