From d551cc64cdf1f943744294819220b78a60b10822 Mon Sep 17 00:00:00 2001 From: Fu Siyuan Date: Wed, 7 May 2014 06:17:31 +0000 Subject: 1. Mark the network volatile variables as deprecated in code comments and remove related code to set/get these variable. 2. Remove the GetTime() call when receiving Udp4/6 packets. Signed-off-by: Fu Siyuan Reviewed-by: Ye, Ting Reviewed-by: Wu, Jiaxin Contributed-under: TianoCore Contribution Agreement 1.0 git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15497 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/Ip6Dxe/Ip6Common.c | 142 +------------------- NetworkPkg/Ip6Dxe/Ip6Common.h | 27 +--- NetworkPkg/Ip6Dxe/Ip6Driver.c | 12 +- NetworkPkg/Ip6Dxe/Ip6Impl.c | 7 +- NetworkPkg/TcpDxe/TcpDispatcher.c | 4 +- NetworkPkg/TcpDxe/TcpDriver.c | 9 +- NetworkPkg/TcpDxe/TcpDriver.h | 3 +- NetworkPkg/TcpDxe/TcpFunc.h | 27 +--- NetworkPkg/TcpDxe/TcpMisc.c | 263 +------------------------------------- NetworkPkg/Udp6Dxe/Udp6Driver.c | 8 +- NetworkPkg/Udp6Dxe/Udp6Impl.c | 174 +------------------------ NetworkPkg/Udp6Dxe/Udp6Impl.h | 35 +---- NetworkPkg/Udp6Dxe/Udp6Main.c | 8 +- 13 files changed, 20 insertions(+), 699 deletions(-) (limited to 'NetworkPkg') diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.c b/NetworkPkg/Ip6Dxe/Ip6Common.c index 18ec012a1e..4f71d052bf 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.c +++ b/NetworkPkg/Ip6Dxe/Ip6Common.c @@ -1,7 +1,7 @@ /** @file The implementation of common functions shared by IP6 driver. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -650,146 +650,6 @@ Ip6GetMulticastMac ( return Mnp->McastIpToMac (Mnp, TRUE, &EfiIp, Mac); } -/** - Set the Ip6 variable data. - - @param[in] IpSb Points to an IP6 service binding instance. - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -Ip6SetVariableData ( - IN IP6_SERVICE *IpSb - ) -{ - UINT32 NumConfiguredInstance; - LIST_ENTRY *Entry; - UINTN VariableDataSize; - EFI_IP6_VARIABLE_DATA *Ip6VariableData; - EFI_IP6_ADDRESS_PAIR *Ip6AddressPair; - IP6_PROTOCOL *IpInstance; - CHAR16 *NewMacString; - EFI_STATUS Status; - - NumConfiguredInstance = 0; - - // - // Go through the children list to count the configured children. - // - NET_LIST_FOR_EACH (Entry, &IpSb->Children) { - IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); - - if (IpInstance->State == IP6_STATE_CONFIGED) { - NumConfiguredInstance++; - } - } - - // - // Calculate the size of the Ip6VariableData. As there may be no IP child, - // we should add extra buffer for the address paris only if the number of configured - // children is more than 1. - // - VariableDataSize = sizeof (EFI_IP6_VARIABLE_DATA); - - if (NumConfiguredInstance > 1) { - VariableDataSize += sizeof (EFI_IP6_ADDRESS_PAIR) * (NumConfiguredInstance - 1); - } - - Ip6VariableData = AllocatePool (VariableDataSize); - if (Ip6VariableData == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Ip6VariableData->DriverHandle = IpSb->Image; - Ip6VariableData->AddressCount = NumConfiguredInstance; - - Ip6AddressPair = &Ip6VariableData->AddressPairs[0]; - - // - // Go through the children list to fill the configured children's address pairs. - // - NET_LIST_FOR_EACH (Entry, &IpSb->Children) { - IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); - - if (IpInstance->State == IP6_STATE_CONFIGED) { - Ip6AddressPair->InstanceHandle = IpInstance->Handle; - Ip6AddressPair->PrefixLength = IpInstance->PrefixLength; - IP6_COPY_ADDRESS (&Ip6AddressPair->Ip6Address, &IpInstance->ConfigData.StationAddress); - - Ip6AddressPair++; - } - } - - // - // Get the mac string. - // - Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &NewMacString); - if (EFI_ERROR (Status)) { - goto Exit; - } - - if (IpSb->MacString != NULL) { - // - // The variable is set already, we're going to update it. - // - if (StrCmp (IpSb->MacString, NewMacString) != 0) { - // - // The mac address is changed, delete the previous variable first. - // - gRT->SetVariable ( - IpSb->MacString, - &gEfiIp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - } - - FreePool (IpSb->MacString); - } - - IpSb->MacString = NewMacString; - - Status = gRT->SetVariable ( - IpSb->MacString, - &gEfiIp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - VariableDataSize, - (VOID *) Ip6VariableData - ); - -Exit: - FreePool (Ip6VariableData); - return Status; -} - -/** - Clear the variable and free the resource. - - @param[in] IpSb Ip6 service binding instance. - -**/ -VOID -Ip6ClearVariableData ( - IN IP6_SERVICE *IpSb - ) -{ - ASSERT (IpSb->MacString != NULL); - - gRT->SetVariable ( - IpSb->MacString, - &gEfiIp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - - FreePool (IpSb->MacString); - IpSb->MacString = NULL; -} - /** Convert the multibyte field in IP header's byter order. In spite of its name, it can also be used to convert from diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.h b/NetworkPkg/Ip6Dxe/Ip6Common.h index 9c2ddf4d4e..488c5b23b7 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.h +++ b/NetworkPkg/Ip6Dxe/Ip6Common.h @@ -1,7 +1,7 @@ /** @file Common definition and functions for IP6 driver. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -279,31 +279,6 @@ Ip6RemoveAddr ( IN UINT8 PrefixLength ); -/** - Set the Ip6 variable data. - - @param[in] IpSb Points to an IP6 service binding instance - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -Ip6SetVariableData ( - IN IP6_SERVICE *IpSb - ); - -/** - Clear the variable and free the resource. - - @param[in] IpSb Ip6 service binding instance. - -**/ -VOID -Ip6ClearVariableData ( - IN IP6_SERVICE *IpSb - ); - /** Get the MAC address for a multicast IP address. Call Mnp's McastIpToMac to find the MAC address instead of diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c index b9a64a80f8..69587849cc 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Driver.c +++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c @@ -1,7 +1,7 @@ /** @file The driver binding and service binding protocol for IP6 driver. - Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -573,8 +573,6 @@ Ip6DriverBindingStart ( // mIp6Id = NET_RANDOM (NetRandomInitSeed ()); - Ip6SetVariableData (IpSb); - return EFI_SUCCESS; } @@ -701,11 +699,6 @@ Ip6DriverBindingStop ( State = IpSb->State; IpSb->State = IP6_SERVICE_DESTROY; - // - // Clear the variable data. - // - Ip6ClearVariableData (IpSb); - Status = Ip6CleanService (IpSb); if (EFI_ERROR (Status)) { IpSb->State = State; @@ -943,9 +936,6 @@ Ip6ServiceBindingDestroyChild ( } Status = Ip6CleanProtocol (IpInstance); - - Ip6SetVariableData (IpSb); - if (EFI_ERROR (Status)) { gBS->InstallMultipleProtocolInterfaces ( &ChildHandle, diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.c b/NetworkPkg/Ip6Dxe/Ip6Impl.c index 365495a5e4..621879b1ea 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.c +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.c @@ -1,7 +1,7 @@ /** @file Implementation of EFI_IP6_PROTOCOL protocol interfaces. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -705,11 +705,6 @@ EfiIp6Configure ( // Ip6ServiceConfigMnp (IpInstance->Service, FALSE); - // - // Update the variable data. - // - Ip6SetVariableData (IpInstance->Service); - Exit: gBS->RestoreTPL (OldTpl); return Status; diff --git a/NetworkPkg/TcpDxe/TcpDispatcher.c b/NetworkPkg/TcpDxe/TcpDispatcher.c index d3d2cb1c3a..9fe93f6e8b 100644 --- a/NetworkPkg/TcpDxe/TcpDispatcher.c +++ b/NetworkPkg/TcpDxe/TcpDispatcher.c @@ -1,7 +1,7 @@ /** @file The implementation of a dispatch routine for processing TCP requests. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -327,8 +327,6 @@ TcpFlushPcb ( FreePool (Sock->DevicePath); Sock->DevicePath = NULL; } - - TcpSetVariableData (TcpProto->TcpService); } NetbufFreeList (&Tcb->SndQue); diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c index 1f0d371654..ce3dd0be63 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.c +++ b/NetworkPkg/TcpDxe/TcpDriver.c @@ -1,7 +1,7 @@ /** @file The driver binding and service binding protocol for the TCP driver. - Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -349,8 +349,6 @@ TcpCreateService ( goto ON_ERROR; } - TcpSetVariableData (TcpServiceData); - return EFI_SUCCESS; ON_ERROR: @@ -499,11 +497,6 @@ TcpDestroyService ( // TcpDestroyTimer (); - // - // Clear the variable. - // - TcpClearVariableData (TcpServiceData); - // // Release the TCP service data // diff --git a/NetworkPkg/TcpDxe/TcpDriver.h b/NetworkPkg/TcpDxe/TcpDriver.h index 5208048edf..19dd168e89 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.h +++ b/NetworkPkg/TcpDxe/TcpDriver.h @@ -1,7 +1,7 @@ /** @file The prototype of driver binding and service binding protocol for TCP driver. - Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -33,7 +33,6 @@ typedef struct _TCP_SERVICE_DATA { UINT8 IpVersion; IP_IO *IpIo; EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - CHAR16 *MacString; LIST_ENTRY SocketList; } TCP_SERVICE_DATA; diff --git a/NetworkPkg/TcpDxe/TcpFunc.h b/NetworkPkg/TcpDxe/TcpFunc.h index c23ba94e44..2076109254 100644 --- a/NetworkPkg/TcpDxe/TcpFunc.h +++ b/NetworkPkg/TcpDxe/TcpFunc.h @@ -1,7 +1,7 @@ /** @file Declaration of external functions shared in TCP driver. - Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -276,31 +276,6 @@ TcpResetConnection ( IN TCP_CB *Tcb ); -/** - Set the Tcp variable data. - - @param[in] TcpService Tcp service data. - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -TcpSetVariableData ( - IN TCP_SERVICE_DATA *TcpService - ); - -/** - Clear the variable and free the resource. - - @param[in] TcpService Tcp service data. - -**/ -VOID -TcpClearVariableData ( - IN TCP_SERVICE_DATA *TcpService - ); - /** Install the device path protocol on the TCP instance. diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c index 21bd9dfec1..5394f7d1ca 100644 --- a/NetworkPkg/TcpDxe/TcpMisc.c +++ b/NetworkPkg/TcpDxe/TcpMisc.c @@ -1,7 +1,7 @@ /** @file Misc support routines for TCP driver. - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -467,7 +467,6 @@ TcpInsertTcb ( InsertHeadList (Head, &Tcb->List); TcpProto = (TCP_PROTO_DATA *) Tcb->Sk->ProtoReserved; - TcpSetVariableData (TcpProto->TcpService); return 0; } @@ -943,266 +942,6 @@ TcpResetConnection ( NetbufFree (Nbuf); } -/** - Set the Tcp variable data. - - @param[in] TcpService Tcp service data. - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -TcpSetVariableData ( - IN TCP_SERVICE_DATA *TcpService - ) -{ - EFI_GUID *ServiceBindingGuid; - UINT32 NumConfiguredInstance; - LIST_ENTRY *Entry; - TCP_CB *TcpPcb; - TCP_PROTO_DATA *TcpProto; - UINTN VariableDataSize; - EFI_TCP4_VARIABLE_DATA *Tcp4VariableData; - EFI_TCP4_SERVICE_POINT *Tcp4ServicePoint; - EFI_TCP6_VARIABLE_DATA *Tcp6VariableData; - EFI_TCP6_SERVICE_POINT *Tcp6ServicePoint; - VOID *VariableData; - CHAR16 *NewMacString; - EFI_STATUS Status; - - if (TcpService->IpVersion == IP_VERSION_4) { - ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; - } else { - ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; - } - - NumConfiguredInstance = 0; - Tcp4VariableData = NULL; - Tcp6VariableData = NULL; - - // - // Go through the running queue to count the instances. - // - NET_LIST_FOR_EACH (Entry, &mTcpRunQue) { - TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); - - TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved; - - if (TcpProto->TcpService == TcpService) { - // - // This tcp instance belongs to the TcpService. - // - NumConfiguredInstance++; - } - } - - // - // Go through the listening queue to count the instances. - // - NET_LIST_FOR_EACH (Entry, &mTcpListenQue) { - TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); - - TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved; - - if (TcpProto->TcpService == TcpService) { - // - // This tcp instance belongs to the TcpService. - // - NumConfiguredInstance++; - } - } - - Tcp4ServicePoint = NULL; - Tcp6ServicePoint = NULL; - - // - // Calculate the size of the Tcp4VariableData. As there may be no Tcp4 child, - // we should add extra buffers for the service points only if the number of configured - // children is more than one. - // - if (TcpService->IpVersion == IP_VERSION_4) { - VariableDataSize = sizeof (EFI_TCP4_VARIABLE_DATA); - - if (NumConfiguredInstance > 1) { - VariableDataSize += sizeof (EFI_TCP4_SERVICE_POINT) * (NumConfiguredInstance - 1); - } - - Tcp4VariableData = AllocateZeroPool (VariableDataSize); - if (Tcp4VariableData == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Tcp4VariableData->DriverHandle = TcpService->DriverBindingHandle; - Tcp4VariableData->ServiceCount = NumConfiguredInstance; - - Tcp4ServicePoint = &Tcp4VariableData->Services[0]; - VariableData = Tcp4VariableData; - } else { - VariableDataSize = sizeof (EFI_TCP6_VARIABLE_DATA); - - if (NumConfiguredInstance > 1) { - VariableDataSize += sizeof (EFI_TCP6_SERVICE_POINT) * (NumConfiguredInstance - 1); - } - - Tcp6VariableData = AllocateZeroPool (VariableDataSize); - if (Tcp6VariableData == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Tcp6VariableData->DriverHandle = TcpService->DriverBindingHandle; - Tcp6VariableData->ServiceCount = NumConfiguredInstance; - - Tcp6ServicePoint = &Tcp6VariableData->Services[0]; - VariableData = Tcp6VariableData; - } - - // - // Go through the running queue to fill the service points. - // - NET_LIST_FOR_EACH (Entry, &mTcpRunQue) { - TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); - - TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved; - - if (TcpProto->TcpService == TcpService) { - // - // This tcp instance belongs to the TcpService. - // - if (TcpService->IpVersion == IP_VERSION_4) { - Tcp4ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle; - CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); - Tcp4ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port); - CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); - Tcp4ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port); - - Tcp4ServicePoint++; - } else { - Tcp6ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle; - IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip); - Tcp6ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port); - IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip); - Tcp6ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port); - - Tcp6ServicePoint++; - } - } - } - - // - // Go through the listening queue to fill the service points. - // - NET_LIST_FOR_EACH (Entry, &mTcpListenQue) { - TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); - - TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved; - - if (TcpProto->TcpService == TcpService) { - // - // This tcp instance belongs to the TcpService. - // - if (TcpService->IpVersion == IP_VERSION_4) { - Tcp4ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle; - CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); - Tcp4ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port); - CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); - Tcp4ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port); - - Tcp4ServicePoint++; - } else { - Tcp6ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle; - IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip); - Tcp6ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port); - IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip); - Tcp6ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port); - - Tcp6ServicePoint++; - } - } - } - - // - // Get the mac string. - // - Status = NetLibGetMacString ( - TcpService->ControllerHandle, - TcpService->DriverBindingHandle, - &NewMacString - ); - if (EFI_ERROR (Status)) { - goto ON_ERROR; - } - - if (TcpService->MacString != NULL) { - // - // The variable is set already. We're going to update it. - // - if (StrCmp (TcpService->MacString, NewMacString) != 0) { - // - // The mac address is changed. Delete the previous variable first. - // - gRT->SetVariable ( - TcpService->MacString, - ServiceBindingGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - } - - FreePool (TcpService->MacString); - } - - TcpService->MacString = NewMacString; - - Status = gRT->SetVariable ( - TcpService->MacString, - ServiceBindingGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - VariableDataSize, - VariableData - ); - -ON_ERROR: - - FreePool (VariableData); - - return Status; -} - -/** - Clear the variable and free the resource. - - @param[in] TcpService Tcp service data. - -**/ -VOID -TcpClearVariableData ( - IN TCP_SERVICE_DATA *TcpService - ) -{ - EFI_GUID *ServiceBindingGuid; - - ASSERT (TcpService->MacString != NULL); - - if (TcpService->IpVersion == IP_VERSION_4) { - ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; - } else { - ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; - } - - gRT->SetVariable ( - TcpService->MacString, - ServiceBindingGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - - FreePool (TcpService->MacString); - TcpService->MacString = NULL; -} - /** Install the device path protocol on the TCP instance. diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c b/NetworkPkg/Udp6Dxe/Udp6Driver.c index 1c2c33336e..da2093962a 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Driver.c +++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c @@ -1,7 +1,7 @@ /** @file Driver Binding functions and Service Binding functions for the Network driver module. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -165,8 +165,6 @@ Udp6DriverBindingStart ( if (EFI_ERROR (Status)) { Udp6CleanService (Udp6Service); goto EXIT; - } else { - Status = Udp6SetVariableData (Udp6Service); } EXIT: @@ -298,9 +296,7 @@ Udp6DriverBindingStop ( &Udp6Service->ServiceBinding, NULL ); - - Udp6ClearVariableData (Udp6Service); - + Udp6CleanService (Udp6Service); FreePool (Udp6Service); diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.c b/NetworkPkg/Udp6Dxe/Udp6Impl.c index 3830b14415..40e3aff069 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.c +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.c @@ -1,7 +1,7 @@ /** @file Udp6 driver's whole implementation. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -1623,8 +1623,6 @@ Udp6Demultiplex ( } } - gRT->GetTime (&RxData.TimeStamp, NULL); - Udp6Session = &RxData.UdpSession; Udp6Session->SourcePort = NTOHS (Udp6Header->SrcPort); Udp6Session->DestinationPort = NTOHS (Udp6Header->DstPort); @@ -1933,175 +1931,7 @@ Udp6NetVectorExtFree ( IN VOID *Context ) { -} - - -/** - Set the Udp6 variable data. - - @param[in] Udp6Service Udp6 service data. - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the - variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -Udp6SetVariableData ( - IN UDP6_SERVICE_DATA *Udp6Service - ) -{ - UINT32 NumConfiguredInstance; - LIST_ENTRY *Entry; - UINTN VariableDataSize; - EFI_UDP6_VARIABLE_DATA *Udp6VariableData; - EFI_UDP6_SERVICE_POINT *Udp6ServicePoint; - UDP6_INSTANCE_DATA *Udp6Instance; - CHAR16 *NewMacString; - EFI_STATUS Status; - - NumConfiguredInstance = 0; - - // - // Go through the children list to count the configured children. - // - NET_LIST_FOR_EACH (Entry, &Udp6Service->ChildrenList) { - Udp6Instance = NET_LIST_USER_STRUCT_S ( - Entry, - UDP6_INSTANCE_DATA, - Link, - UDP6_INSTANCE_DATA_SIGNATURE - ); - - if (Udp6Instance->Configured) { - NumConfiguredInstance++; - } - } - - // - // Calculate the size of the Udp6VariableData. As there may be no Udp6 child, - // we should add extra buffer for the service points only if the number of configured - // children is more than 1. - // - VariableDataSize = sizeof (EFI_UDP6_VARIABLE_DATA); - - if (NumConfiguredInstance > 1) { - VariableDataSize += sizeof (EFI_UDP6_SERVICE_POINT) * (NumConfiguredInstance - 1); - } - - Udp6VariableData = AllocateZeroPool (VariableDataSize); - if (Udp6VariableData == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Udp6VariableData->DriverHandle = Udp6Service->ImageHandle; - Udp6VariableData->ServiceCount = NumConfiguredInstance; - - Udp6ServicePoint = &Udp6VariableData->Services[0]; - - // - // Go through the children list to fill the configured children's address pairs. - // - NET_LIST_FOR_EACH (Entry, &Udp6Service->ChildrenList) { - Udp6Instance = NET_LIST_USER_STRUCT_S ( - Entry, - UDP6_INSTANCE_DATA, - Link, - UDP6_INSTANCE_DATA_SIGNATURE - ); - - if (Udp6Instance->Configured) { - Udp6ServicePoint->InstanceHandle = Udp6Instance->ChildHandle; - Udp6ServicePoint->LocalPort = Udp6Instance->ConfigData.StationPort; - Udp6ServicePoint->RemotePort = Udp6Instance->ConfigData.RemotePort; - - IP6_COPY_ADDRESS ( - &Udp6ServicePoint->LocalAddress, - &Udp6Instance->ConfigData.StationAddress - ); - IP6_COPY_ADDRESS ( - &Udp6ServicePoint->RemoteAddress, - &Udp6Instance->ConfigData.RemoteAddress - ); - Udp6ServicePoint++; - } - } - - // - // Get the MAC string. - // - Status = NetLibGetMacString ( - Udp6Service->ControllerHandle, - Udp6Service->ImageHandle, - &NewMacString - ); - if (EFI_ERROR (Status)) { - goto EXIT; - } - - if (Udp6Service->MacString != NULL) { - // - // The variable is set already, we're going to update it. - // - if (StrCmp (Udp6Service->MacString, NewMacString) != 0) { - // - // The MAC address is changed, delete the previous variable first. - // - gRT->SetVariable ( - Udp6Service->MacString, - &gEfiUdp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - } - - FreePool (Udp6Service->MacString); - } - - Udp6Service->MacString = NewMacString; - - Status = gRT->SetVariable ( - Udp6Service->MacString, - &gEfiUdp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - VariableDataSize, - (VOID *) Udp6VariableData - ); - -EXIT: - - FreePool (Udp6VariableData); - - return Status; -} - - -/** - Clear the variable and free the resource. - - @param[in, out] Udp6Service Udp6 service data. - -**/ -VOID -Udp6ClearVariableData ( - IN OUT UDP6_SERVICE_DATA *Udp6Service - ) -{ - ASSERT (Udp6Service->MacString != NULL); - - gRT->SetVariable ( - Udp6Service->MacString, - &gEfiUdp6ServiceBindingProtocolGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 0, - NULL - ); - - FreePool (Udp6Service->MacString); - Udp6Service->MacString = NULL; -} - +} /** Find the key in the netmap. diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.h b/NetworkPkg/Udp6Dxe/Udp6Impl.h index 9ca4f4a011..09f315f50b 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.h +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.h @@ -1,7 +1,7 @@ /** @file Udp6 driver's whole implementation and internal data structures. - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -79,8 +79,7 @@ typedef struct _UDP6_SERVICE_DATA { UINTN ChildrenNumber; IP_IO *IpIo; EFI_EVENT TimeoutEvent; - CHAR16 *MacString; -} UDP6_SERVICE_DATA; + } UDP6_SERVICE_DATA; typedef struct _UDP6_INSTANCE_DATA { UINT32 Signature; @@ -145,22 +144,7 @@ Udp6CreateService ( IN EFI_HANDLE ImageHandle, IN EFI_HANDLE ControllerHandle ); - -/** - Set the Udp6 variable data. - - @param[in] Udp6Service Udp6 service data. - - @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the - variable. - @retval other Set variable failed. - -**/ -EFI_STATUS -Udp6SetVariableData ( - IN UDP6_SERVICE_DATA *Udp6Service - ); - + /** This function cleans the udp instance. @@ -171,18 +155,7 @@ VOID Udp6CleanInstance ( IN OUT UDP6_INSTANCE_DATA *Instance ); - -/** - Clear the variable and free the resource. - - @param[in, out] Udp6Service Udp6 service data. - -**/ -VOID -Udp6ClearVariableData ( - IN OUT UDP6_SERVICE_DATA *Udp6Service - ); - + /** This function intializes the new created udp instance. diff --git a/NetworkPkg/Udp6Dxe/Udp6Main.c b/NetworkPkg/Udp6Dxe/Udp6Main.c index 0cad596276..f3e99255f9 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Main.c +++ b/NetworkPkg/Udp6Dxe/Udp6Main.c @@ -1,7 +1,7 @@ /** @file Contains all EFI_UDP6_PROTOCOL interfaces. - Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -275,7 +275,7 @@ Udp6Configure ( // // Cancel all the user tokens. // - Status = Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL); + Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL); // // Remove the buffered RxData for this instance. @@ -284,9 +284,7 @@ Udp6Configure ( ASSERT (IsListEmpty (&Instance->DeliveredDgramQue)); } - - Status = Udp6SetVariableData (Instance->Udp6Service); - + ON_EXIT: gBS->RestoreTPL (OldTpl); -- cgit v1.2.3