Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/TcpDxe/TcpDriver.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/TcpDxe/TcpDriver.c
r85718 r99404 10 10 #include "TcpMain.h" 11 11 12 UINT16 13 UINT16 14 15 TCP_HEARTBEAT_TIMER 12 UINT16 mTcp4RandomPort; 13 UINT16 mTcp6RandomPort; 14 15 TCP_HEARTBEAT_TIMER mTcpTimer = { 16 16 NULL, 17 17 0 18 18 }; 19 19 20 EFI_TCP4_PROTOCOL 20 EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { 21 21 Tcp4GetModeData, 22 22 Tcp4Configure, … … 31 31 }; 32 32 33 EFI_TCP6_PROTOCOL 33 EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { 34 34 Tcp6GetModeData, 35 35 Tcp6Configure, … … 43 43 }; 44 44 45 SOCK_INIT_DATA 45 SOCK_INIT_DATA mTcpDefaultSockData = { 46 46 SockStream, 47 47 SO_CLOSED, … … 61 61 }; 62 62 63 EFI_DRIVER_BINDING_PROTOCOL 63 EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { 64 64 Tcp4DriverBindingSupported, 65 65 Tcp4DriverBindingStart, … … 70 70 }; 71 71 72 EFI_DRIVER_BINDING_PROTOCOL 72 EFI_DRIVER_BINDING_PROTOCOL gTcp6DriverBinding = { 73 73 Tcp6DriverBindingSupported, 74 74 Tcp6DriverBindingStart, … … 84 84 }; 85 85 86 87 86 /** 88 87 Create and start the heartbeat timer for the TCP driver. … … 102 101 103 102 if (mTcpTimer.RefCnt == 0) { 104 105 103 Status = gBS->CreateEvent ( 106 104 EVT_TIMER | EVT_NOTIFY_SIGNAL, … … 111 109 ); 112 110 if (!EFI_ERROR (Status)) { 113 114 111 Status = gBS->SetTimer ( 115 112 mTcpTimer.TimerEvent, 116 113 TimerPeriodic, 117 (UINT64) 114 (UINT64)(TICKS_PER_SECOND / TCP_TICK_HZ) 118 115 ); 119 116 } … … 121 118 122 119 if (!EFI_ERROR (Status)) { 123 124 120 mTcpTimer.RefCnt++; 125 121 } … … 210 206 Seed = NetRandomInitSeed (); 211 207 mTcpGlobalIss = NET_RANDOM (Seed) % mTcpGlobalIss; 212 mTcp4RandomPort = (UINT16) 208 mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); 213 209 mTcp6RandomPort = mTcp4RandomPort; 214 210 … … 234 230 ) 235 231 { 236 EFI_STATUS 237 EFI_GUID 238 EFI_GUID 239 TCP_SERVICE_DATA 240 IP_IO_OPEN_DATA 232 EFI_STATUS Status; 233 EFI_GUID *IpServiceBindingGuid; 234 EFI_GUID *TcpServiceBindingGuid; 235 TCP_SERVICE_DATA *TcpServiceData; 236 IP_IO_OPEN_DATA OpenData; 241 237 242 238 if (IpVersion == IP_VERSION_4) { … … 280 276 } 281 277 282 TcpServiceData->Signature 283 TcpServiceData->ControllerHandle 284 TcpServiceData->DriverBindingHandle 285 TcpServiceData->IpVersion 278 TcpServiceData->Signature = TCP_DRIVER_SIGNATURE; 279 TcpServiceData->ControllerHandle = Controller; 280 TcpServiceData->DriverBindingHandle = Image; 281 TcpServiceData->IpVersion = IpVersion; 286 282 CopyMem ( 287 283 &TcpServiceData->ServiceBinding, … … 295 291 goto ON_ERROR; 296 292 } 297 298 293 299 294 InitializeListHead (&TcpServiceData->SocketList); … … 316 311 } 317 312 318 OpenData.PktRcvdNotify 319 Status 313 OpenData.PktRcvdNotify = TcpRxCallback; 314 Status = IpIoOpen (TcpServiceData->IpIo, &OpenData); 320 315 if (EFI_ERROR (Status)) { 321 316 goto ON_ERROR; … … 366 361 EFIAPI 367 362 TcpDestroyChildEntryInHandleBuffer ( 368 IN LIST_ENTRY 369 IN VOID 363 IN LIST_ENTRY *Entry, 364 IN VOID *Context 370 365 ) 371 366 { … … 375 370 EFI_HANDLE *ChildHandleBuffer; 376 371 377 if ( Entry == NULL || Context == NULL) {372 if ((Entry == NULL) || (Context == NULL)) { 378 373 return EFI_INVALID_PARAMETER; 379 374 } 380 375 381 Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE);382 ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) 383 NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) 384 ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) 376 Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE); 377 ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; 378 NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; 379 ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; 385 380 386 381 if (!NetIsInHandleBuffer (Sock->SockHandle, NumberOfChildren, ChildHandleBuffer)) { … … 412 407 IN EFI_HANDLE ImageHandle, 413 408 IN UINTN NumberOfChildren, 414 IN EFI_HANDLE *ChildHandleBuffer , OPTIONAL409 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL, 415 410 IN UINT8 IpVersion 416 411 ) 417 412 { 418 EFI_HANDLE NicHandle;419 EFI_GUID *IpProtocolGuid;420 EFI_GUID *ServiceBindingGuid;421 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;422 TCP_SERVICE_DATA *TcpServiceData;423 EFI_STATUS Status;424 LIST_ENTRY *List;413 EFI_HANDLE NicHandle; 414 EFI_GUID *IpProtocolGuid; 415 EFI_GUID *ServiceBindingGuid; 416 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; 417 TCP_SERVICE_DATA *TcpServiceData; 418 EFI_STATUS Status; 419 LIST_ENTRY *List; 425 420 TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; 426 421 … … 443 438 NicHandle, 444 439 ServiceBindingGuid, 445 (VOID **) 440 (VOID **)&ServiceBinding, 446 441 ImageHandle, 447 442 Controller, … … 455 450 456 451 if (NumberOfChildren != 0) { 457 List = &TcpServiceData->SocketList;458 Context.ServiceBinding = ServiceBinding;459 Context.NumberOfChildren = NumberOfChildren;452 List = &TcpServiceData->SocketList; 453 Context.ServiceBinding = ServiceBinding; 454 Context.NumberOfChildren = NumberOfChildren; 460 455 Context.ChildHandleBuffer = ChildHandleBuffer; 461 Status = NetDestroyLinkList (462 List,463 TcpDestroyChildEntryInHandleBuffer,464 &Context,465 NULL466 );456 Status = NetDestroyLinkList ( 457 List, 458 TcpDestroyChildEntryInHandleBuffer, 459 &Context, 460 NULL 461 ); 467 462 } else if (IsListEmpty (&TcpServiceData->SocketList)) { 468 463 // … … 759 754 } 760 755 761 TcpServiceData = ((TCP_PROTO_DATA *) 756 TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; 762 757 763 758 // … … 782 777 TcpServiceData->ControllerHandle, 783 778 &gEfiDevicePathProtocolGuid, 784 (VOID **) 779 (VOID **)&This->ParentDevicePath, 785 780 TcpServiceData->DriverBindingHandle, 786 781 This->SockHandle, … … 826 821 } 827 822 828 TcpServiceData = ((TCP_PROTO_DATA *) 823 TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; 829 824 830 825 // … … 877 872 EFI_TPL OldTpl; 878 873 879 if ( NULL == This || NULL == ChildHandle) {874 if ((NULL == This) || (NULL == ChildHandle)) { 880 875 return EFI_INVALID_PARAMETER; 881 876 } … … 906 901 if (NULL == Sock) { 907 902 DEBUG ( 908 ( EFI_D_ERROR,909 "TcpDriverBindingCreateChild: No resource to create a Tcp Child\n")903 (DEBUG_ERROR, 904 "TcpDriverBindingCreateChild: No resource to create a Tcp Child\n") 910 905 ); 911 906 … … 915 910 } 916 911 917 mTcpDefaultSockData.ProtoData 912 mTcpDefaultSockData.ProtoData = NULL; 918 913 919 914 gBS->RestoreTPL (OldTpl); … … 950 945 SOCKET *Sock; 951 946 952 if ( NULL == This || NULL == ChildHandle) {947 if ((NULL == This) || (NULL == ChildHandle)) { 953 948 return EFI_INVALID_PARAMETER; 954 949 }
Note:
See TracChangeset
for help on using the changeset viewer.