MdeModulePkg/NetworkPkg: Locate IpSec on IP packet processing only if it's installed.
Modified the logic in Ip4Dxe and Ip6Dxe to not locate EFI_IPSEC2_PROTOCOL on each message transmit/receive. Instead, register a callback in the drivers entry points on the IpSec protocol installation, and process only if the protocol is installed. This speeds up the network stacks when IpSec is not installed since there is a penalty associated with searching the entire handle database on each packet processing. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Samer El-Haj-Mahmoud <samer.el-haj-mahmoud@hp.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18365 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
committed by
sfu5
parent
34297cef1e
commit
c79de074b6
@@ -2,6 +2,7 @@
|
||||
The driver binding and service binding protocol for IP6 driver.
|
||||
|
||||
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
|
||||
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
@@ -24,6 +25,33 @@ EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding = {
|
||||
NULL
|
||||
};
|
||||
|
||||
BOOLEAN mIpSec2Installed = FALSE;
|
||||
|
||||
/**
|
||||
Callback function for IpSec2 Protocol install.
|
||||
|
||||
@param[in] Event Event whose notification function is being invoked
|
||||
@param[in] Context Pointer to the notification function's context
|
||||
|
||||
@retval EFI_SUCCESS Callback successful.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
IpSec2InstalledCallback (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
{
|
||||
//
|
||||
// Close the event so it does not get called again.
|
||||
//
|
||||
gBS->CloseEvent (Event);
|
||||
|
||||
mIpSec2Installed = TRUE;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
This is the declaration of an EFI image entry point. This entry point is
|
||||
the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including
|
||||
@@ -46,6 +74,16 @@ Ip6DriverEntryPoint (
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
VOID *Registration;
|
||||
|
||||
EfiCreateProtocolNotifyEvent (
|
||||
&gEfiIpSec2ProtocolGuid,
|
||||
TPL_CALLBACK,
|
||||
IpSec2InstalledCallback,
|
||||
NULL,
|
||||
&Registration
|
||||
);
|
||||
|
||||
return EfiLibInstallDriverBindingComponentName2 (
|
||||
ImageHandle,
|
||||
SystemTable,
|
||||
|
Reference in New Issue
Block a user