Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
- Timestamp:
- Apr 14, 2023 3:17:44 PM (22 months ago)
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-145445 /vendor/edk2/current 103735-103757,103769-103776,129194-156846
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
r85718 r99404 11 11 #include "PxeBcImpl.h" 12 12 13 14 EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { 13 EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { 15 14 PxeBcIp4DriverBindingSupported, 16 15 PxeBcIp4DriverBindingStart, … … 21 20 }; 22 21 23 EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = {22 EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { 24 23 PxeBcIp6DriverBindingSupported, 25 24 PxeBcIp6DriverBindingStart, … … 40 39 EFI_HANDLE 41 40 PxeBcGetNicByIp4Children ( 42 IN EFI_HANDLE 41 IN EFI_HANDLE ControllerHandle 43 42 ) 44 43 { 45 EFI_HANDLE 44 EFI_HANDLE NicHandle; 46 45 47 46 NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiArpProtocolGuid); … … 65 64 } 66 65 67 68 66 /** 69 67 Get the Nic handle using any child handle in the IPv6 stack. … … 76 74 EFI_HANDLE 77 75 PxeBcGetNicByIp6Children ( 78 IN EFI_HANDLE 76 IN EFI_HANDLE ControllerHandle 79 77 ) 80 78 { 81 EFI_HANDLE 79 EFI_HANDLE NicHandle; 82 80 83 81 NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiIp6ProtocolGuid); … … 98 96 } 99 97 100 101 98 /** 102 99 Destroy the opened instances based on IPv4. … … 112 109 ) 113 110 { 114 ASSERT (Private != NULL);111 ASSERT (Private != NULL); 115 112 116 113 if (Private->ArpChild != NULL) { … … 176 173 // 177 174 gBS->CloseProtocol ( 178 Private->Udp4ReadChild,179 &gEfiUdp4ProtocolGuid,180 This->DriverBindingHandle,181 Private->Controller182 );175 Private->Udp4ReadChild, 176 &gEfiUdp4ProtocolGuid, 177 This->DriverBindingHandle, 178 Private->Controller 179 ); 183 180 184 181 NetLibDestroyServiceChild ( … … 195 192 // 196 193 gBS->CloseProtocol ( 197 Private->Mtftp4Child,198 &gEfiMtftp4ProtocolGuid,199 This->DriverBindingHandle,200 Private->Controller201 );194 Private->Mtftp4Child, 195 &gEfiMtftp4ProtocolGuid, 196 This->DriverBindingHandle, 197 Private->Controller 198 ); 202 199 203 200 NetLibDestroyServiceChild ( … … 214 211 // 215 212 gBS->CloseProtocol ( 216 Private->Dhcp4Child,217 &gEfiDhcp4ProtocolGuid,218 This->DriverBindingHandle,219 Private->Controller220 );213 Private->Dhcp4Child, 214 &gEfiDhcp4ProtocolGuid, 215 This->DriverBindingHandle, 216 Private->Controller 217 ); 221 218 222 219 NetLibDestroyServiceChild ( … … 268 265 ); 269 266 } 267 270 268 FreePool (Private->Ip4Nic); 271 269 } 272 270 273 Private->ArpChild 274 Private->Ip4Child 275 Private->Udp4WriteChild 276 Private->Udp4ReadChild 277 Private->Mtftp4Child 278 Private->Dhcp4Child 279 Private->Ip4Nic 271 Private->ArpChild = NULL; 272 Private->Ip4Child = NULL; 273 Private->Udp4WriteChild = NULL; 274 Private->Udp4ReadChild = NULL; 275 Private->Mtftp4Child = NULL; 276 Private->Dhcp4Child = NULL; 277 Private->Ip4Nic = NULL; 280 278 } 281 282 279 283 280 /** … … 294 291 ) 295 292 { 296 ASSERT (Private != NULL);293 ASSERT (Private != NULL); 297 294 298 295 if (Private->Ip6Child != NULL) { … … 301 298 // 302 299 gBS->CloseProtocol ( 303 Private->Ip6Child,304 &gEfiIp6ProtocolGuid,305 This->DriverBindingHandle,306 Private->Controller307 );300 Private->Ip6Child, 301 &gEfiIp6ProtocolGuid, 302 This->DriverBindingHandle, 303 Private->Controller 304 ); 308 305 309 306 NetLibDestroyServiceChild ( … … 338 335 // 339 336 gBS->CloseProtocol ( 340 Private->Udp6ReadChild,341 &gEfiUdp6ProtocolGuid,342 This->DriverBindingHandle,343 Private->Controller344 );337 Private->Udp6ReadChild, 338 &gEfiUdp6ProtocolGuid, 339 This->DriverBindingHandle, 340 Private->Controller 341 ); 345 342 NetLibDestroyServiceChild ( 346 343 Private->Controller, … … 356 353 // 357 354 gBS->CloseProtocol ( 358 Private->Mtftp6Child,359 &gEfiMtftp6ProtocolGuid,360 This->DriverBindingHandle,361 Private->Controller362 );355 Private->Mtftp6Child, 356 &gEfiMtftp6ProtocolGuid, 357 This->DriverBindingHandle, 358 Private->Controller 359 ); 363 360 364 361 NetLibDestroyServiceChild ( … … 375 372 // 376 373 gBS->CloseProtocol ( 377 Private->Dhcp6Child,378 &gEfiDhcp6ProtocolGuid,379 This->DriverBindingHandle,380 Private->Controller381 );374 Private->Dhcp6Child, 375 &gEfiDhcp6ProtocolGuid, 376 This->DriverBindingHandle, 377 Private->Controller 378 ); 382 379 383 380 NetLibDestroyServiceChild ( … … 428 425 ); 429 426 } 427 430 428 FreePool (Private->Ip6Nic); 431 429 } … … 453 451 EFI_STATUS 454 452 PxeBcCheckIpv6Support ( 455 IN EFI_HANDLE 456 IN PXEBC_PRIVATE_DATA 457 OUT BOOLEAN 453 IN EFI_HANDLE ControllerHandle, 454 IN PXEBC_PRIVATE_DATA *Private, 455 OUT BOOLEAN *Ipv6Support 458 456 ) 459 457 { 460 EFI_HANDLE Handle;461 EFI_ADAPTER_INFORMATION_PROTOCOL *Aip;462 EFI_STATUS Status;463 EFI_GUID *InfoTypesBuffer;464 UINTN InfoTypeBufferCount;465 UINTN TypeIndex;466 BOOLEAN Supported;467 VOID *InfoBlock;468 UINTN InfoBlockSize;458 EFI_HANDLE Handle; 459 EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; 460 EFI_STATUS Status; 461 EFI_GUID *InfoTypesBuffer; 462 UINTN InfoTypeBufferCount; 463 UINTN TypeIndex; 464 BOOLEAN Supported; 465 VOID *InfoBlock; 466 UINTN InfoBlockSize; 469 467 470 468 ASSERT (Private != NULL && Ipv6Support != NULL); … … 494 492 Handle, 495 493 &gEfiAdapterInformationProtocolGuid, 496 (VOID *) 497 ); 498 if (EFI_ERROR (Status) || Aip == NULL) {494 (VOID *)&Aip 495 ); 496 if (EFI_ERROR (Status) || (Aip == NULL)) { 499 497 return EFI_NOT_FOUND; 500 498 } … … 502 500 InfoTypesBuffer = NULL; 503 501 InfoTypeBufferCount = 0; 504 Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount);505 if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) {502 Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); 503 if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { 506 504 FreePool (InfoTypesBuffer); 507 505 return EFI_NOT_FOUND; … … 526 524 InfoBlock = NULL; 527 525 InfoBlockSize = 0; 528 Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize);529 if (EFI_ERROR (Status) || InfoBlock == NULL) {526 Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); 527 if (EFI_ERROR (Status) || (InfoBlock == NULL)) { 530 528 FreePool (InfoBlock); 531 529 return EFI_NOT_FOUND; 532 530 } 533 531 534 *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) 532 *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; 535 533 FreePool (InfoBlock); 536 534 return EFI_SUCCESS; 537 538 535 } 539 536 … … 556 553 ) 557 554 { 558 EFI_STATUS 559 IPv4_DEVICE_PATH 560 EFI_PXE_BASE_CODE_MODE 561 EFI_UDP4_CONFIG_DATA 562 EFI_IP4_CONFIG_DATA 563 EFI_IP4_MODE_DATA 564 PXEBC_PRIVATE_PROTOCOL 565 EFI_SIMPLE_NETWORK_PROTOCOL 555 EFI_STATUS Status; 556 IPv4_DEVICE_PATH Ip4Node; 557 EFI_PXE_BASE_CODE_MODE *Mode; 558 EFI_UDP4_CONFIG_DATA *Udp4CfgData; 559 EFI_IP4_CONFIG_DATA *Ip4CfgData; 560 EFI_IP4_MODE_DATA Ip4ModeData; 561 PXEBC_PRIVATE_PROTOCOL *Id; 562 EFI_SIMPLE_NETWORK_PROTOCOL *Snp; 566 563 567 564 if (Private->Ip4Nic != NULL) { … … 588 585 Private->Dhcp4Child, 589 586 &gEfiDhcp4ProtocolGuid, 590 (VOID **) 587 (VOID **)&Private->Dhcp4, 591 588 This->DriverBindingHandle, 592 589 ControllerHandle, … … 613 610 Private->Mtftp4Child, 614 611 &gEfiMtftp4ProtocolGuid, 615 (VOID **) 612 (VOID **)&Private->Mtftp4, 616 613 This->DriverBindingHandle, 617 614 ControllerHandle, … … 638 635 Private->Udp4ReadChild, 639 636 &gEfiUdp4ProtocolGuid, 640 (VOID **) 637 (VOID **)&Private->Udp4Read, 641 638 This->DriverBindingHandle, 642 639 ControllerHandle, … … 663 660 Private->Udp4WriteChild, 664 661 &gEfiUdp4ProtocolGuid, 665 (VOID **) 662 (VOID **)&Private->Udp4Write, 666 663 This->DriverBindingHandle, 667 664 ControllerHandle, … … 688 685 Private->ArpChild, 689 686 &gEfiArpProtocolGuid, 690 (VOID **) 687 (VOID **)&Private->Arp, 691 688 This->DriverBindingHandle, 692 689 ControllerHandle, … … 713 710 Private->Ip4Child, 714 711 &gEfiIp4ProtocolGuid, 715 (VOID **) 712 (VOID **)&Private->Ip4, 716 713 This->DriverBindingHandle, 717 714 ControllerHandle, … … 740 737 Private->Ip4Nic->Signature = PXEBC_VIRTUAL_NIC_SIGNATURE; 741 738 742 739 // 743 740 // Locate Ip4->Ip4Config2 and store it for set IPv4 Policy. 744 741 // … … 746 743 ControllerHandle, 747 744 &gEfiIp4Config2ProtocolGuid, 748 (VOID **) 745 (VOID **)&Private->Ip4Config2 749 746 ); 750 747 if (EFI_ERROR (Status)) { … … 815 812 Private->Ip4Nic->Controller, 816 813 &gEfiSimpleNetworkProtocolGuid, 817 (VOID **) 814 (VOID **)&Snp, 818 815 This->DriverBindingHandle, 819 816 Private->Ip4Nic->Controller, … … 832 829 ControllerHandle, 833 830 &gEfiCallerIdGuid, 834 (VOID **) 831 (VOID **)&Id, 835 832 This->DriverBindingHandle, 836 833 Private->Ip4Nic->Controller, … … 844 841 // Set default configure data for Udp4Read and Ip4 instance. 845 842 // 846 Mode 847 Udp4CfgData 848 Ip4CfgData 843 Mode = Private->PxeBc.Mode; 844 Udp4CfgData = &Private->Udp4CfgData; 845 Ip4CfgData = &Private->Ip4CfgData; 849 846 850 847 Udp4CfgData->AcceptBroadcast = FALSE; … … 856 853 Udp4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; 857 854 858 Ip4CfgData->AcceptIcmpErrors 859 Ip4CfgData->DefaultProtocol 860 Ip4CfgData->TypeOfService 861 Ip4CfgData->TimeToLive 862 Ip4CfgData->ReceiveTimeout 863 Ip4CfgData->TransmitTimeout 855 Ip4CfgData->AcceptIcmpErrors = TRUE; 856 Ip4CfgData->DefaultProtocol = EFI_IP_PROTO_ICMP; 857 Ip4CfgData->TypeOfService = Mode->ToS; 858 Ip4CfgData->TimeToLive = Mode->TTL; 859 Ip4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; 860 Ip4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; 864 861 865 862 return EFI_SUCCESS; … … 869 866 return Status; 870 867 } 871 872 868 873 869 /** … … 889 885 ) 890 886 { 891 EFI_STATUS 892 IPv6_DEVICE_PATH 893 EFI_UDP6_CONFIG_DATA 894 EFI_IP6_CONFIG_DATA 895 EFI_IP6_MODE_DATA 896 PXEBC_PRIVATE_PROTOCOL 897 EFI_SIMPLE_NETWORK_PROTOCOL 898 UINTN 887 EFI_STATUS Status; 888 IPv6_DEVICE_PATH Ip6Node; 889 EFI_UDP6_CONFIG_DATA *Udp6CfgData; 890 EFI_IP6_CONFIG_DATA *Ip6CfgData; 891 EFI_IP6_MODE_DATA Ip6ModeData; 892 PXEBC_PRIVATE_PROTOCOL *Id; 893 EFI_SIMPLE_NETWORK_PROTOCOL *Snp; 894 UINTN Index; 899 895 900 896 if (Private->Ip6Nic != NULL) { … … 930 926 Private->Dhcp6Child, 931 927 &gEfiDhcp6ProtocolGuid, 932 (VOID **) 928 (VOID **)&Private->Dhcp6, 933 929 This->DriverBindingHandle, 934 930 ControllerHandle, … … 965 961 Private->Mtftp6Child, 966 962 &gEfiMtftp6ProtocolGuid, 967 (VOID **) 963 (VOID **)&Private->Mtftp6, 968 964 This->DriverBindingHandle, 969 965 ControllerHandle, … … 990 986 Private->Udp6ReadChild, 991 987 &gEfiUdp6ProtocolGuid, 992 (VOID **) 988 (VOID **)&Private->Udp6Read, 993 989 This->DriverBindingHandle, 994 990 ControllerHandle, … … 1015 1011 Private->Udp6WriteChild, 1016 1012 &gEfiUdp6ProtocolGuid, 1017 (VOID **) 1013 (VOID **)&Private->Udp6Write, 1018 1014 This->DriverBindingHandle, 1019 1015 ControllerHandle, … … 1040 1036 Private->Ip6Child, 1041 1037 &gEfiIp6ProtocolGuid, 1042 (VOID **) 1038 (VOID **)&Private->Ip6, 1043 1039 This->DriverBindingHandle, 1044 1040 ControllerHandle, … … 1089 1085 ControllerHandle, 1090 1086 &gEfiIp6ConfigProtocolGuid, 1091 (VOID **) 1087 (VOID **)&Private->Ip6Cfg 1092 1088 ); 1093 1089 if (EFI_ERROR (Status)) { … … 1099 1095 // 1100 1096 ZeroMem (&Ip6Node, sizeof (IPv6_DEVICE_PATH)); 1101 Ip6Node.Header.Type 1102 Ip6Node.Header.SubType 1103 Ip6Node.PrefixLength 1097 Ip6Node.Header.Type = MESSAGING_DEVICE_PATH; 1098 Ip6Node.Header.SubType = MSG_IPv6_DP; 1099 Ip6Node.PrefixLength = IP6_PREFIX_LENGTH; 1104 1100 1105 1101 SetDevicePathNodeLength (&Ip6Node.Header, sizeof (Ip6Node)); … … 1158 1154 Private->Ip6Nic->Controller, 1159 1155 &gEfiSimpleNetworkProtocolGuid, 1160 (VOID **) 1156 (VOID **)&Snp, 1161 1157 This->DriverBindingHandle, 1162 1158 Private->Ip6Nic->Controller, … … 1175 1171 ControllerHandle, 1176 1172 &gEfiCallerIdGuid, 1177 (VOID **) 1173 (VOID **)&Id, 1178 1174 This->DriverBindingHandle, 1179 1175 Private->Ip6Nic->Controller, … … 1193 1189 // Fail to get the data whether UNDI supports IPv6. Set default value. 1194 1190 // 1195 Private->Mode.Ipv6Available 1191 Private->Mode.Ipv6Available = TRUE; 1196 1192 } 1197 1193 … … 1200 1196 } 1201 1197 1202 Udp6CfgData 1203 Ip6CfgData 1198 Udp6CfgData = &Private->Udp6CfgData; 1199 Ip6CfgData = &Private->Ip6CfgData; 1204 1200 1205 1201 Udp6CfgData->AcceptAnyPort = TRUE; … … 1209 1205 Udp6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; 1210 1206 1211 Ip6CfgData->AcceptIcmpErrors 1212 Ip6CfgData->DefaultProtocol 1213 Ip6CfgData->HopLimit 1214 Ip6CfgData->ReceiveTimeout 1215 Ip6CfgData->TransmitTimeout 1207 Ip6CfgData->AcceptIcmpErrors = TRUE; 1208 Ip6CfgData->DefaultProtocol = IP6_ICMP; 1209 Ip6CfgData->HopLimit = PXEBC_DEFAULT_HOPLIMIT; 1210 Ip6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; 1211 Ip6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; 1216 1212 1217 1213 return EFI_SUCCESS; … … 1222 1218 } 1223 1219 1224 1225 1220 /** 1226 1221 The entry point for UefiPxeBc driver that installs the driver … … 1237 1232 EFIAPI 1238 1233 PxeBcDriverEntryPoint ( 1239 IN EFI_HANDLE 1240 IN EFI_SYSTEM_TABLE 1234 IN EFI_HANDLE ImageHandle, 1235 IN EFI_SYSTEM_TABLE *SystemTable 1241 1236 ) 1242 1237 { 1243 1238 EFI_STATUS Status; 1244 1239 1245 if ((PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8(PcdIPv6PXESupport) == PXE_DISABLED)) {1240 if ((PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED)) { 1246 1241 return EFI_UNSUPPORTED; 1247 1242 } … … 1301 1296 ) 1302 1297 { 1303 EFI_STATUS 1304 EFI_GUID 1305 EFI_GUID 1298 EFI_STATUS Status; 1299 EFI_GUID *DhcpServiceBindingGuid; 1300 EFI_GUID *MtftpServiceBindingGuid; 1306 1301 1307 1302 if (IpVersion == IP_VERSION_4) { 1308 if (PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) {1303 if (PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) { 1309 1304 return EFI_UNSUPPORTED; 1310 1305 } 1306 1311 1307 DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid; 1312 1308 MtftpServiceBindingGuid = &gEfiMtftp4ServiceBindingProtocolGuid; 1313 1309 } else { 1314 if (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED) {1310 if (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED) { 1315 1311 return EFI_UNSUPPORTED; 1316 1312 } 1313 1317 1314 DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid; 1318 1315 MtftpServiceBindingGuid = &gEfiMtftp6ServiceBindingProtocolGuid; … … 1323 1320 // 1324 1321 Status = gBS->OpenProtocol ( 1325 1326 1327 1328 1329 1330 1331 1322 ControllerHandle, 1323 DhcpServiceBindingGuid, 1324 NULL, 1325 This->DriverBindingHandle, 1326 ControllerHandle, 1327 EFI_OPEN_PROTOCOL_TEST_PROTOCOL 1328 ); 1332 1329 if (!EFI_ERROR (Status)) { 1333 1330 Status = gBS->OpenProtocol ( 1334 1335 1336 1337 1338 1339 1340 1331 ControllerHandle, 1332 MtftpServiceBindingGuid, 1333 NULL, 1334 This->DriverBindingHandle, 1335 ControllerHandle, 1336 EFI_OPEN_PROTOCOL_TEST_PROTOCOL 1337 ); 1341 1338 } 1342 1339 … … 1376 1373 ) 1377 1374 { 1378 PXEBC_PRIVATE_DATA 1379 EFI_STATUS 1380 PXEBC_PRIVATE_PROTOCOL 1381 BOOLEAN 1375 PXEBC_PRIVATE_DATA *Private; 1376 EFI_STATUS Status; 1377 PXEBC_PRIVATE_PROTOCOL *Id; 1378 BOOLEAN FirstStart; 1382 1379 1383 1380 FirstStart = FALSE; 1384 Status = gBS->OpenProtocol (1385 ControllerHandle,1386 &gEfiCallerIdGuid,1387 (VOID **)&Id,1388 This->DriverBindingHandle,1389 ControllerHandle,1390 EFI_OPEN_PROTOCOL_GET_PROTOCOL1391 );1381 Status = gBS->OpenProtocol ( 1382 ControllerHandle, 1383 &gEfiCallerIdGuid, 1384 (VOID **)&Id, 1385 This->DriverBindingHandle, 1386 ControllerHandle, 1387 EFI_OPEN_PROTOCOL_GET_PROTOCOL 1388 ); 1392 1389 if (!EFI_ERROR (Status)) { 1393 1390 // … … 1426 1423 ControllerHandle, 1427 1424 &gEfiDevicePathProtocolGuid, 1428 (VOID **) 1425 (VOID **)&Private->DevicePath, 1429 1426 This->DriverBindingHandle, 1430 1427 ControllerHandle, … … 1442 1439 ControllerHandle, 1443 1440 &gEfiNetworkInterfaceIdentifierProtocolGuid_31, 1444 (VOID **) 1441 (VOID **)&Private->Nii, 1445 1442 This->DriverBindingHandle, 1446 1443 ControllerHandle, … … 1470 1467 // Try to locate SNP protocol. 1471 1468 // 1472 NetLibGetSnpHandle (ControllerHandle, &Private->Snp);1469 NetLibGetSnpHandle (ControllerHandle, &Private->Snp); 1473 1470 } 1474 1471 … … 1484 1481 Status = PxeBcCreateIp6Children (This, ControllerHandle, Private); 1485 1482 } 1483 1486 1484 if (EFI_ERROR (Status)) { 1487 1485 // … … 1509 1507 } 1510 1508 1511 if (FirstStart && Private != NULL) {1509 if (FirstStart && (Private != NULL)) { 1512 1510 FreePool (Private); 1513 1511 } … … 1515 1513 return Status; 1516 1514 } 1517 1518 1515 1519 1516 /** … … 1543 1540 ) 1544 1541 { 1545 PXEBC_PRIVATE_DATA 1546 PXEBC_VIRTUAL_NIC 1547 EFI_LOAD_FILE_PROTOCOL 1548 EFI_STATUS 1549 EFI_HANDLE 1550 PXEBC_PRIVATE_PROTOCOL 1542 PXEBC_PRIVATE_DATA *Private; 1543 PXEBC_VIRTUAL_NIC *VirtualNic; 1544 EFI_LOAD_FILE_PROTOCOL *LoadFile; 1545 EFI_STATUS Status; 1546 EFI_HANDLE NicHandle; 1547 PXEBC_PRIVATE_PROTOCOL *Id; 1551 1548 1552 1549 Private = NULL; … … 1559 1556 ControllerHandle, 1560 1557 &gEfiLoadFileProtocolGuid, 1561 (VOID **) 1558 (VOID **)&LoadFile, 1562 1559 This->DriverBindingHandle, 1563 1560 ControllerHandle, … … 1573 1570 NicHandle = PxeBcGetNicByIp6Children (ControllerHandle); 1574 1571 } 1572 1575 1573 if (NicHandle == NULL) { 1576 1574 return EFI_SUCCESS; … … 1583 1581 NicHandle, 1584 1582 &gEfiCallerIdGuid, 1585 (VOID **) 1583 (VOID **)&Id, 1586 1584 This->DriverBindingHandle, 1587 1585 ControllerHandle, … … 1591 1589 return Status; 1592 1590 } 1591 1593 1592 Private = PXEBC_PRIVATE_DATA_FROM_ID (Id); 1594 1595 1593 } else { 1596 1594 // … … 1600 1598 ControllerHandle, 1601 1599 &gEfiLoadFileProtocolGuid, 1602 (VOID **) 1600 (VOID **)&LoadFile, 1603 1601 This->DriverBindingHandle, 1604 1602 ControllerHandle, … … 1618 1616 // 1619 1617 Status = Private->PxeBc.Stop (&Private->PxeBc); 1620 if ( Status != EFI_SUCCESS && Status != EFI_NOT_STARTED) {1618 if ((Status != EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) { 1621 1619 return Status; 1622 1620 } 1623 1621 1624 1625 if (Private->Ip4Nic != NULL && IpVersion == IP_VERSION_4) { 1622 if ((Private->Ip4Nic != NULL) && (IpVersion == IP_VERSION_4)) { 1626 1623 PxeBcDestroyIp4Children (This, Private); 1627 1624 } 1628 1625 1629 if ( Private->Ip6Nic != NULL && IpVersion == IP_VERSION_6) {1626 if ((Private->Ip6Nic != NULL) && (IpVersion == IP_VERSION_6)) { 1630 1627 PxeBcDestroyIp6Children (This, Private); 1631 1628 } 1632 1629 1633 if ( Private->Ip4Nic == NULL && Private->Ip6Nic == NULL) {1630 if ((Private->Ip4Nic == NULL) && (Private->Ip6Nic == NULL)) { 1634 1631 gBS->UninstallProtocolInterface ( 1635 1632 NicHandle,
Note:
See TracChangeset
for help on using the changeset viewer.