]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c
Fix bug in SNP driver where default values for SNP mode are not filled in. This cause...
[mirror_edk2.git] / EmulatorPkg / EmuSnpDxe / EmuSnpDxe.c
index 7f8a643e8a3abf74a074b223c23f5acc8078aad6..09d16fd8b664ded35274db4c41798cbf8590c1e0 100644 (file)
@@ -42,7 +42,35 @@ EFI_SIMPLE_NETWORK_PROTOCOL gEmuSnpTemplate = {
   NULL                      // Mode\r
  };\r
 \r
-\r
+EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = {                 \r
+  EfiSimpleNetworkStopped,      //  State\r
+  NET_ETHER_ADDR_LEN,           //  HwAddressSize\r
+  NET_ETHER_HEADER_SIZE,        //  MediaHeaderSize\r
+  1500,                         //  MaxPacketSize\r
+  0,                            //  NvRamSize\r
+  0,                            //  NvRamAccessSize\r
+  0,                            //  ReceiveFilterMask\r
+  0,                            //  ReceiveFilterSetting\r
+  MAX_MCAST_FILTER_CNT,         //  MaxMCastFilterCount\r
+  0,                            //  MCastFilterCount\r
+  {\r
+    { { 0 } }\r
+  },                            //  MCastFilter\r
+  {\r
+    { 0 }\r
+  },                            //  CurrentAddress\r
+  {\r
+    { 0 }\r
+  },                            //  BroadcastAddress\r
+  {\r
+    { 0 }\r
+  },                            //  PermanentAddress\r
+  NET_IFTYPE_ETHERNET,          //  IfType\r
+  FALSE,                        //  MacAddressChangeable\r
+  FALSE,                        //  MultipleTxSupported\r
+  FALSE,                        //  MediaPresentSupported\r
+  TRUE                          //  MediaPresent\r
+};\r
 \r
 \r
 /**\r
@@ -585,14 +613,6 @@ EmuSnpDriverBindingSupported (
     return Status;\r
   }\r
 \r
-  //\r
-  // Make sure GUID is for a File System handle.\r
-  //\r
-  Status = EFI_UNSUPPORTED;\r
-  if (CompareGuid (EmuIoThunk->Protocol, &gEmuSnpProtocolGuid)) {\r
-    Status = EFI_SUCCESS;\r
-  }\r
-\r
   //\r
   // Close the I/O Abstraction(s) used to perform the supported test\r
   //\r
@@ -623,6 +643,14 @@ EmuSnpDriverBindingSupported (
     return Status;\r
   }\r
 \r
+  //\r
+  // Make sure GUID is for a SNP handle.\r
+  //\r
+  Status = EFI_UNSUPPORTED;\r
+  if (CompareGuid (EmuIoThunk->Protocol, &gEmuSnpProtocolGuid)) {\r
+    Status = EFI_SUCCESS;\r
+  }\r
+\r
   //\r
   // Close protocol, don't use device path protocol in the Support() function\r
   //\r
@@ -715,6 +743,7 @@ EmuSnpDriverBindingStart (
   }\r
 \r
   CopyMem (&Private->Snp, &gEmuSnpTemplate, sizeof (EFI_SIMPLE_NETWORK_PROTOCOL));\r
+  CopyMem (&Private->Mode, &gEmuSnpModeTemplate, sizeof (EFI_SIMPLE_NETWORK_MODE));\r
 \r
   Private->Signature    = EMU_SNP_PRIVATE_DATA_SIGNATURE;\r
   Private->IoThunk      = EmuIoThunk;\r
@@ -944,7 +973,6 @@ InitializeEmuSnpDriver (
   //\r
   // Install the Driver Protocols\r
   //\r
-\r
   Status = EfiLibInstallDriverBindingComponentName2(\r
               ImageHandle,\r
               SystemTable,\r