]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/VirtioNetDxe/DriverBinding.c
OvmfPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / VirtioNetDxe / DriverBinding.c
index 3c400a60465096fb6a110f9c7003cf42c6a746d3..ac9ac2d7fb395b839f6cedcf3f68086195fad4eb 100644 (file)
@@ -16,7 +16,7 @@
 \r
 #include "VirtioNet.h"\r
 \r
-#define RECEIVE_FILTERS_NO_MCAST ((UINT32) (       \\r
+#define RECEIVE_FILTERS_NO_MCAST  ((UINT32) (      \\r
           EFI_SIMPLE_NETWORK_RECEIVE_UNICAST     | \\r
           EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST   | \\r
           EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS   \\r
@@ -50,36 +50,36 @@ STATIC
 EFI_STATUS\r
 EFIAPI\r
 VirtioNetGetFeatures (\r
-  IN OUT  VNET_DEV        *Dev,\r
-  OUT     EFI_MAC_ADDRESS *MacAddress,\r
-  OUT     BOOLEAN         *MediaPresentSupported,\r
-  OUT     BOOLEAN         *MediaPresent\r
+  IN OUT  VNET_DEV         *Dev,\r
+  OUT     EFI_MAC_ADDRESS  *MacAddress,\r
+  OUT     BOOLEAN          *MediaPresentSupported,\r
+  OUT     BOOLEAN          *MediaPresent\r
   )\r
 {\r
-  EFI_STATUS Status;\r
-  UINT8      NextDevStat;\r
-  UINT64     Features;\r
-  UINTN      MacIdx;\r
-  UINT16     LinkStatus;\r
+  EFI_STATUS  Status;\r
+  UINT8       NextDevStat;\r
+  UINT64      Features;\r
+  UINTN       MacIdx;\r
+  UINT16      LinkStatus;\r
 \r
   //\r
   // Interrogate the device for features (virtio-0.9.5, 2.2.1 Device\r
   // Initialization Sequence), but don't complete setting it up.\r
   //\r
   NextDevStat = 0;             // step 1 -- reset device\r
-  Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
+  Status      = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
   NextDevStat |= VSTAT_ACK;    // step 2 -- acknowledge device presence\r
-  Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
+  Status       = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto YieldDevice;\r
   }\r
 \r
   NextDevStat |= VSTAT_DRIVER; // step 3 -- we know how to drive it\r
-  Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
+  Status       = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto YieldDevice;\r
   }\r
@@ -99,8 +99,10 @@ VirtioNetGetFeatures (
     Status = EFI_UNSUPPORTED;\r
     goto YieldDevice;\r
   }\r
+\r
   for (MacIdx = 0; MacIdx < SIZE_OF_VNET (Mac); ++MacIdx) {\r
-    Status = Dev->VirtIo->ReadDevice (Dev->VirtIo,\r
+    Status = Dev->VirtIo->ReadDevice (\r
+                            Dev->VirtIo,\r
                             OFFSET_OF_VNET (Mac) + MacIdx, // Offset\r
                             1,                             // FieldSize\r
                             1,                             // BufferSize\r
@@ -116,24 +118,25 @@ VirtioNetGetFeatures (
   //\r
   if ((Features & VIRTIO_NET_F_STATUS) == 0) {\r
     *MediaPresentSupported = FALSE;\r
-  }\r
-  else {\r
+  } else {\r
     *MediaPresentSupported = TRUE;\r
-    Status = VIRTIO_CFG_READ (Dev, LinkStatus, &LinkStatus);\r
+    Status                 = VIRTIO_CFG_READ (Dev, LinkStatus, &LinkStatus);\r
     if (EFI_ERROR (Status)) {\r
       goto YieldDevice;\r
     }\r
-    *MediaPresent = (BOOLEAN) ((LinkStatus & VIRTIO_NET_S_LINK_UP) != 0);\r
+\r
+    *MediaPresent = (BOOLEAN)((LinkStatus & VIRTIO_NET_S_LINK_UP) != 0);\r
   }\r
 \r
 YieldDevice:\r
-  Dev->VirtIo->SetDeviceStatus (Dev->VirtIo,\r
-    EFI_ERROR (Status) ? VSTAT_FAILED : 0);\r
+  Dev->VirtIo->SetDeviceStatus (\r
+                 Dev->VirtIo,\r
+                 EFI_ERROR (Status) ? VSTAT_FAILED : 0\r
+                 );\r
 \r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Set up the Simple Network Protocol fields, the Simple Network Mode fields,\r
   and the Exit Boot Services Event of the virtio-net driver instance.\r
@@ -151,10 +154,10 @@ STATIC
 EFI_STATUS\r
 EFIAPI\r
 VirtioNetSnpPopulate (\r
-  IN OUT VNET_DEV *Dev\r
+  IN OUT VNET_DEV  *Dev\r
   )\r
 {\r
-  EFI_STATUS Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // We set up a function here that is asynchronously callable by an\r
@@ -177,8 +180,13 @@ VirtioNetSnpPopulate (
   // I/O)". Because none of our functions block, we'd satisfy an even stronger\r
   // requirement.\r
   //\r
-  Status = gBS->CreateEvent (EVT_NOTIFY_WAIT, TPL_CALLBACK,\r
-                  &VirtioNetIsPacketAvailable, Dev, &Dev->Snp.WaitForPacket);\r
+  Status = gBS->CreateEvent (\r
+                  EVT_NOTIFY_WAIT,\r
+                  TPL_CALLBACK,\r
+                  &VirtioNetIsPacketAvailable,\r
+                  Dev,\r
+                  &Dev->Snp.WaitForPacket\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
@@ -199,31 +207,39 @@ VirtioNetSnpPopulate (
   Dev->Snp.Receive        = &VirtioNetReceive;\r
   Dev->Snp.Mode           = &Dev->Snm;\r
 \r
-  Dev->Snm.State                 = EfiSimpleNetworkStopped;\r
-  Dev->Snm.HwAddressSize         = SIZE_OF_VNET (Mac);\r
-  Dev->Snm.MediaHeaderSize       = SIZE_OF_VNET (Mac) + // dst MAC\r
-                                   SIZE_OF_VNET (Mac) + // src MAC\r
-                                   2;                       // Ethertype\r
-  Dev->Snm.MaxPacketSize         = 1500;\r
-  Dev->Snm.NvRamSize             = 0;\r
-  Dev->Snm.NvRamAccessSize       = 0;\r
-  Dev->Snm.ReceiveFilterMask     = RECEIVE_FILTERS_NO_MCAST;\r
-  Dev->Snm.ReceiveFilterSetting  = RECEIVE_FILTERS_NO_MCAST;\r
-  Dev->Snm.MaxMCastFilterCount   = 0;\r
-  Dev->Snm.MCastFilterCount      = 0;\r
-  Dev->Snm.IfType                = 1; // ethernet\r
-  Dev->Snm.MacAddressChangeable  = FALSE;\r
-  Dev->Snm.MultipleTxSupported   = TRUE;\r
+  Dev->Snm.State           = EfiSimpleNetworkStopped;\r
+  Dev->Snm.HwAddressSize   = SIZE_OF_VNET (Mac);\r
+  Dev->Snm.MediaHeaderSize = SIZE_OF_VNET (Mac) +       // dst MAC\r
+                             SIZE_OF_VNET (Mac) +       // src MAC\r
+                             2;                         // Ethertype\r
+  Dev->Snm.MaxPacketSize        = 1500;\r
+  Dev->Snm.NvRamSize            = 0;\r
+  Dev->Snm.NvRamAccessSize      = 0;\r
+  Dev->Snm.ReceiveFilterMask    = RECEIVE_FILTERS_NO_MCAST;\r
+  Dev->Snm.ReceiveFilterSetting = RECEIVE_FILTERS_NO_MCAST;\r
+  Dev->Snm.MaxMCastFilterCount  = 0;\r
+  Dev->Snm.MCastFilterCount     = 0;\r
+  Dev->Snm.IfType               = 1;  // ethernet\r
+  Dev->Snm.MacAddressChangeable = FALSE;\r
+  Dev->Snm.MultipleTxSupported  = TRUE;\r
 \r
   ASSERT (SIZE_OF_VNET (Mac) <= sizeof (EFI_MAC_ADDRESS));\r
 \r
-  Status = VirtioNetGetFeatures (Dev, &Dev->Snm.CurrentAddress,\r
-             &Dev->Snm.MediaPresentSupported, &Dev->Snm.MediaPresent);\r
+  Status = VirtioNetGetFeatures (\r
+             Dev,\r
+             &Dev->Snm.CurrentAddress,\r
+             &Dev->Snm.MediaPresentSupported,\r
+             &Dev->Snm.MediaPresent\r
+             );\r
   if (EFI_ERROR (Status)) {\r
     goto CloseWaitForPacket;\r
   }\r
-  CopyMem (&Dev->Snm.PermanentAddress, &Dev->Snm.CurrentAddress,\r
-    SIZE_OF_VNET (Mac));\r
+\r
+  CopyMem (\r
+    &Dev->Snm.PermanentAddress,\r
+    &Dev->Snm.CurrentAddress,\r
+    SIZE_OF_VNET (Mac)\r
+    );\r
   SetMem (&Dev->Snm.BroadcastAddress, SIZE_OF_VNET (Mac), 0xFF);\r
 \r
   //\r
@@ -235,8 +251,13 @@ VirtioNetSnpPopulate (
   // could be entered immediately. VirtioNetExitBoot() checks Dev->Snm.State,\r
   // so we're safe.\r
   //\r
-  Status = gBS->CreateEvent (EVT_SIGNAL_EXIT_BOOT_SERVICES, TPL_CALLBACK,\r
-                  &VirtioNetExitBoot, Dev, &Dev->ExitBoot);\r
+  Status = gBS->CreateEvent (\r
+                  EVT_SIGNAL_EXIT_BOOT_SERVICES,\r
+                  TPL_CALLBACK,\r
+                  &VirtioNetExitBoot,\r
+                  Dev,\r
+                  &Dev->ExitBoot\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     goto CloseWaitForPacket;\r
   }\r
@@ -248,7 +269,6 @@ CloseWaitForPacket:
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Release any resources allocated by VirtioNetSnpPopulate().\r
 \r
@@ -263,7 +283,7 @@ STATIC
 VOID\r
 EFIAPI\r
 VirtioNetSnpEvacuate (\r
-  IN OUT VNET_DEV *Dev\r
+  IN OUT VNET_DEV  *Dev\r
   )\r
 {\r
   //\r
@@ -276,7 +296,6 @@ VirtioNetSnpEvacuate (
   gBS->CloseEvent (Dev->Snp.WaitForPacket);\r
 }\r
 \r
-\r
 /**\r
   Tests to see if this driver supports a given controller. If a child device is\r
   provided, it further tests to see if this driver supports creating a handle\r
@@ -330,18 +349,17 @@ VirtioNetSnpEvacuate (
                                    RemainingDevicePath is not supported by the\r
                                    driver specified by This.\r
 **/\r
-\r
 STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 VirtioNetDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
-  IN EFI_HANDLE                  DeviceHandle,\r
-  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   DeviceHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS          Status;\r
-  VIRTIO_DEVICE_PROTOCOL *VirtIo;\r
+  EFI_STATUS              Status;\r
+  VIRTIO_DEVICE_PROTOCOL  *VirtIo;\r
 \r
   //\r
   // Attempt to open the device with the VirtIo set of interfaces. On success,\r
@@ -370,12 +388,15 @@ VirtioNetDriverBindingSupported (
   // We needed VirtIo access only transitorily, to see whether we support the\r
   // device or not.\r
   //\r
-  gBS->CloseProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-         This->DriverBindingHandle, DeviceHandle);\r
+  gBS->CloseProtocol (\r
+         DeviceHandle,\r
+         &gVirtioDeviceProtocolGuid,\r
+         This->DriverBindingHandle,\r
+         DeviceHandle\r
+         );\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Starts a device controller or a bus controller.\r
 \r
@@ -422,34 +443,39 @@ VirtioNetDriverBindingSupported (
   @retval Others                   The driver failed to start the device.\r
 \r
 **/\r
-\r
 STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 VirtioNetDriverBindingStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
-  IN EFI_HANDLE                  DeviceHandle,\r
-  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   DeviceHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS               Status;\r
-  VNET_DEV                 *Dev;\r
-  EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-  MAC_ADDR_DEVICE_PATH     MacNode;\r
-  VOID                     *ChildVirtIo;\r
+  EFI_STATUS                Status;\r
+  VNET_DEV                  *Dev;\r
+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
+  MAC_ADDR_DEVICE_PATH      MacNode;\r
+  VOID                      *ChildVirtIo;\r
 \r
   //\r
   // allocate space for the driver instance\r
   //\r
-  Dev = (VNET_DEV *) AllocateZeroPool (sizeof *Dev);\r
+  Dev = (VNET_DEV *)AllocateZeroPool (sizeof *Dev);\r
   if (Dev == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
+\r
   Dev->Signature = VNET_SIG;\r
 \r
-  Status = gBS->OpenProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-                  (VOID **)&Dev->VirtIo, This->DriverBindingHandle,\r
-                  DeviceHandle, EFI_OPEN_PROTOCOL_BY_DRIVER);\r
+  Status = gBS->OpenProtocol (\r
+                  DeviceHandle,\r
+                  &gVirtioDeviceProtocolGuid,\r
+                  (VOID **)&Dev->VirtIo,\r
+                  This->DriverBindingHandle,\r
+                  DeviceHandle,\r
+                  EFI_OPEN_PROTOCOL_BY_DRIVER\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     goto FreeVirtioNet;\r
   }\r
@@ -466,9 +492,14 @@ VirtioNetDriverBindingStart (
   //\r
   // get the device path of the virtio-net device -- one-shot open\r
   //\r
-  Status = gBS->OpenProtocol (DeviceHandle, &gEfiDevicePathProtocolGuid,\r
-                  (VOID **)&DevicePath, This->DriverBindingHandle,\r
-                  DeviceHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+  Status = gBS->OpenProtocol (\r
+                  DeviceHandle,\r
+                  &gEfiDevicePathProtocolGuid,\r
+                  (VOID **)&DevicePath,\r
+                  This->DriverBindingHandle,\r
+                  DeviceHandle,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     goto Evacuate;\r
   }\r
@@ -479,9 +510,12 @@ VirtioNetDriverBindingStart (
   MacNode.Header.Type    = MESSAGING_DEVICE_PATH;\r
   MacNode.Header.SubType = MSG_MAC_ADDR_DP;\r
   SetDevicePathNodeLength (&MacNode, sizeof MacNode);\r
-  CopyMem (&MacNode.MacAddress, &Dev->Snm.CurrentAddress,\r
-    sizeof (EFI_MAC_ADDRESS));\r
-  MacNode.IfType         = Dev->Snm.IfType;\r
+  CopyMem (\r
+    &MacNode.MacAddress,\r
+    &Dev->Snm.CurrentAddress,\r
+    sizeof (EFI_MAC_ADDRESS)\r
+    );\r
+  MacNode.IfType = Dev->Snm.IfType;\r
 \r
   Dev->MacDevicePath = AppendDevicePathNode (DevicePath, &MacNode.Header);\r
   if (Dev->MacDevicePath == NULL) {\r
@@ -493,10 +527,14 @@ VirtioNetDriverBindingStart (
   // create a child handle with the Simple Network Protocol and the new\r
   // device path installed on it\r
   //\r
-  Status = gBS->InstallMultipleProtocolInterfaces (&Dev->MacHandle,\r
-                  &gEfiSimpleNetworkProtocolGuid, &Dev->Snp,\r
-                  &gEfiDevicePathProtocolGuid,    Dev->MacDevicePath,\r
-                  NULL);\r
+  Status = gBS->InstallMultipleProtocolInterfaces (\r
+                  &Dev->MacHandle,\r
+                  &gEfiSimpleNetworkProtocolGuid,\r
+                  &Dev->Snp,\r
+                  &gEfiDevicePathProtocolGuid,\r
+                  Dev->MacDevicePath,\r
+                  NULL\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     goto FreeMacDevicePath;\r
   }\r
@@ -505,9 +543,14 @@ VirtioNetDriverBindingStart (
   // make a note that we keep this device open with VirtIo for the sake of this\r
   // child\r
   //\r
-  Status = gBS->OpenProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-                  &ChildVirtIo, This->DriverBindingHandle,\r
-                  Dev->MacHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER);\r
+  Status = gBS->OpenProtocol (\r
+                  DeviceHandle,\r
+                  &gVirtioDeviceProtocolGuid,\r
+                  &ChildVirtIo,\r
+                  This->DriverBindingHandle,\r
+                  Dev->MacHandle,\r
+                  EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     goto UninstallMultiple;\r
   }\r
@@ -515,10 +558,14 @@ VirtioNetDriverBindingStart (
   return EFI_SUCCESS;\r
 \r
 UninstallMultiple:\r
-  gBS->UninstallMultipleProtocolInterfaces (Dev->MacHandle,\r
-         &gEfiDevicePathProtocolGuid,    Dev->MacDevicePath,\r
-         &gEfiSimpleNetworkProtocolGuid, &Dev->Snp,\r
-         NULL);\r
+  gBS->UninstallMultipleProtocolInterfaces (\r
+         Dev->MacHandle,\r
+         &gEfiDevicePathProtocolGuid,\r
+         Dev->MacDevicePath,\r
+         &gEfiSimpleNetworkProtocolGuid,\r
+         &Dev->Snp,\r
+         NULL\r
+         );\r
 \r
 FreeMacDevicePath:\r
   FreePool (Dev->MacDevicePath);\r
@@ -527,8 +574,12 @@ Evacuate:
   VirtioNetSnpEvacuate (Dev);\r
 \r
 CloseVirtIo:\r
-  gBS->CloseProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-         This->DriverBindingHandle, DeviceHandle);\r
+  gBS->CloseProtocol (\r
+         DeviceHandle,\r
+         &gVirtioDeviceProtocolGuid,\r
+         This->DriverBindingHandle,\r
+         DeviceHandle\r
+         );\r
 \r
 FreeVirtioNet:\r
   FreePool (Dev);\r
@@ -536,7 +587,6 @@ FreeVirtioNet:
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Stops a device controller or a bus controller.\r
 \r
@@ -574,10 +624,10 @@ STATIC
 EFI_STATUS\r
 EFIAPI\r
 VirtioNetDriverBindingStop (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
-  IN EFI_HANDLE                  DeviceHandle,\r
-  IN UINTN                       NumberOfChildren,\r
-  IN EFI_HANDLE                  *ChildHandleBuffer\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   DeviceHandle,\r
+  IN UINTN                        NumberOfChildren,\r
+  IN EFI_HANDLE                   *ChildHandleBuffer\r
   )\r
 {\r
   if (NumberOfChildren > 0) {\r
@@ -585,17 +635,21 @@ VirtioNetDriverBindingStop (
     // free all resources for whose access we need the child handle, because\r
     // the child handle is going away\r
     //\r
-    EFI_STATUS                  Status;\r
-    EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
-    VNET_DEV                    *Dev;\r
-    EFI_TPL                     OldTpl;\r
+    EFI_STATUS                   Status;\r
+    EFI_SIMPLE_NETWORK_PROTOCOL  *Snp;\r
+    VNET_DEV                     *Dev;\r
+    EFI_TPL                      OldTpl;\r
 \r
     ASSERT (NumberOfChildren == 1);\r
 \r
-    Status = gBS->OpenProtocol (ChildHandleBuffer[0],\r
-                    &gEfiSimpleNetworkProtocolGuid, (VOID **)&Snp,\r
-                    This->DriverBindingHandle, DeviceHandle,\r
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+    Status = gBS->OpenProtocol (\r
+                    ChildHandleBuffer[0],\r
+                    &gEfiSimpleNetworkProtocolGuid,\r
+                    (VOID **)&Snp,\r
+                    This->DriverBindingHandle,\r
+                    DeviceHandle,\r
+                    EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                    );\r
     ASSERT_EFI_ERROR (Status);\r
     Dev = VIRTIO_NET_FROM_SNP (Snp);\r
 \r
@@ -610,14 +664,21 @@ VirtioNetDriverBindingStop (
       // device in use, cannot stop driver instance\r
       //\r
       Status = EFI_DEVICE_ERROR;\r
-    }\r
-    else {\r
-      gBS->CloseProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-             This->DriverBindingHandle, Dev->MacHandle);\r
-      gBS->UninstallMultipleProtocolInterfaces (Dev->MacHandle,\r
-             &gEfiDevicePathProtocolGuid,    Dev->MacDevicePath,\r
-             &gEfiSimpleNetworkProtocolGuid, &Dev->Snp,\r
-             NULL);\r
+    } else {\r
+      gBS->CloseProtocol (\r
+             DeviceHandle,\r
+             &gVirtioDeviceProtocolGuid,\r
+             This->DriverBindingHandle,\r
+             Dev->MacHandle\r
+             );\r
+      gBS->UninstallMultipleProtocolInterfaces (\r
+             Dev->MacHandle,\r
+             &gEfiDevicePathProtocolGuid,\r
+             Dev->MacDevicePath,\r
+             &gEfiSimpleNetworkProtocolGuid,\r
+             &Dev->Snp,\r
+             NULL\r
+             );\r
       FreePool (Dev->MacDevicePath);\r
       VirtioNetSnpEvacuate (Dev);\r
       FreePool (Dev);\r
@@ -630,14 +691,17 @@ VirtioNetDriverBindingStop (
   //\r
   // release remaining resources, tied directly to the parent handle\r
   //\r
-  gBS->CloseProtocol (DeviceHandle, &gVirtioDeviceProtocolGuid,\r
-         This->DriverBindingHandle, DeviceHandle);\r
+  gBS->CloseProtocol (\r
+         DeviceHandle,\r
+         &gVirtioDeviceProtocolGuid,\r
+         This->DriverBindingHandle,\r
+         DeviceHandle\r
+         );\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
-EFI_DRIVER_BINDING_PROTOCOL gVirtioNetDriverBinding = {\r
+EFI_DRIVER_BINDING_PROTOCOL  gVirtioNetDriverBinding = {\r
   &VirtioNetDriverBindingSupported,\r
   &VirtioNetDriverBindingStart,\r
   &VirtioNetDriverBindingStop,\r