mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-01 02:44:23 +02:00
installing HII config access protocol on child handle instead of installing on NIC physical handle, to avoid conflict with the HII config access protocol installed on NIC physical handle.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9665 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
8fdcc4123b
commit
d80ea7394c
@ -147,16 +147,16 @@ EfiNicIp4ConfigGetInfo (
|
||||
NIC's configure parameter is removed from the variable.
|
||||
|
||||
@param Instance The IP4 CONFIG instance.
|
||||
@param NicConfig The new NIC IP4 configure parameter
|
||||
@param NicConfig The new NIC IP4 configure parameter.
|
||||
@param Reconfig Inform the IP4 driver to restart the auto
|
||||
configuration
|
||||
configuration.
|
||||
|
||||
@retval EFI_SUCCESS The configure parameter for this NIC was
|
||||
set successfully .
|
||||
set successfully.
|
||||
@retval EFI_INVALID_PARAMETER This is NULL or the configure parameter is
|
||||
invalid.
|
||||
@retval EFI_ALREADY_STARTED There is a pending auto configuration.
|
||||
@retval EFI_NOT_FOUND No auto configure parameter is found
|
||||
@retval EFI_NOT_FOUND No auto configure parameter is found.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
|
@ -23,6 +23,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include <Protocol/HiiConfigAccess.h>
|
||||
#include <Protocol/HiiDatabase.h>
|
||||
#include <Protocol/HiiConfigRouting.h>
|
||||
#include <Protocol/ServiceBinding.h>
|
||||
|
||||
#include <Guid/MdeModuleHii.h>
|
||||
|
||||
@ -38,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include <Library/HiiLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/DpcLib.h>
|
||||
#include <Library/UefiHiiServicesLib.h>
|
||||
|
||||
#include "NicIp4Variable.h"
|
||||
|
||||
@ -76,53 +78,26 @@ typedef struct {
|
||||
} IP4_CONFIG_DHCP4_OPTION;
|
||||
#pragma pack()
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINTN DeviceNum;
|
||||
typedef struct _IP4CONFIG_CALLBACK_INFO {
|
||||
BOOLEAN Enabled;
|
||||
EFI_IPv4_ADDRESS LocalIp;
|
||||
EFI_IPv4_ADDRESS SubnetMask;
|
||||
EFI_IPv4_ADDRESS Gateway;
|
||||
} IP4_CONFIG_SESSION_DATA;
|
||||
|
||||
typedef struct _IP4_CONFIG_FORM_ENTRY {
|
||||
LIST_ENTRY Link;
|
||||
IP4_CONFIG_INSTANCE *Ip4ConfigInstance;
|
||||
EFI_HANDLE Controller;
|
||||
CHAR16 *MacString;
|
||||
EFI_STRING_ID PortTitleToken;
|
||||
EFI_STRING_ID PortTitleHelpToken;
|
||||
IP4_CONFIG_SESSION_DATA SessionConfigData;
|
||||
} IP4CONFIG_FORM_ENTRY;
|
||||
|
||||
#define IP4CONFIG_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'P', '4', 'C')
|
||||
|
||||
typedef struct _IP4_FORM_CALLBACK_INFO_INSTANCE {
|
||||
UINTN Signature;
|
||||
EFI_HANDLE DriverHandle;
|
||||
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
|
||||
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||
EFI_HII_CONFIG_ROUTING_PROTOCOL *ConfigRouting;
|
||||
EFI_HII_HANDLE RegisteredHandle;
|
||||
IP4CONFIG_FORM_ENTRY *Current;
|
||||
} IP4_FORM_CALLBACK_INFO;
|
||||
|
||||
#define IP4CONFIG_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \
|
||||
CR ( \
|
||||
Callback, \
|
||||
IP4_FORM_CALLBACK_INFO, \
|
||||
ConfigAccess, \
|
||||
IP4CONFIG_FORM_CALLBACK_INFO_SIGNATURE \
|
||||
)
|
||||
} IP4_SETTING_INFO;
|
||||
|
||||
struct _IP4_CONFIG_INSTANCE {
|
||||
UINT32 Signature;
|
||||
EFI_HANDLE Controller;
|
||||
EFI_HANDLE Image;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
|
||||
EFI_IP4_CONFIG_PROTOCOL Ip4ConfigProtocol;
|
||||
|
||||
IP4_FORM_CALLBACK_INFO Ip4FormCallbackInfo;
|
||||
EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccessProtocol;
|
||||
EFI_HANDLE ChildHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath;
|
||||
EFI_HII_HANDLE RegisteredHandle;
|
||||
IP4_SETTING_INFO Ip4ConfigCallbackInfo;
|
||||
|
||||
//
|
||||
// NicConfig's state, such as IP4_CONFIG_STATE_IDLE
|
||||
@ -161,8 +136,8 @@ struct _IP4_CONFIG_INSTANCE {
|
||||
#define IP4_CONFIG_INSTANCE_FROM_IP4CONFIG(this) \
|
||||
CR (this, IP4_CONFIG_INSTANCE, Ip4ConfigProtocol, IP4_CONFIG_INSTANCE_SIGNATURE)
|
||||
|
||||
#define IP4_CONFIG_INSTANCE_FROM_IP4FORM_CALLBACK_INFO(this) \
|
||||
CR (this, IP4_CONFIG_INSTANCE, Ip4FormCallbackInfo, IP4_CONFIG_INSTANCE_SIGNATURE)
|
||||
#define IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS(this) \
|
||||
CR (this, IP4_CONFIG_INSTANCE, HiiConfigAccessProtocol, IP4_CONFIG_INSTANCE_SIGNATURE)
|
||||
|
||||
|
||||
/**
|
||||
@ -176,16 +151,16 @@ struct _IP4_CONFIG_INSTANCE {
|
||||
NIC's configure parameter is removed from the variable.
|
||||
|
||||
@param Instance The IP4 CONFIG instance.
|
||||
@param NicConfig The new NIC IP4 configure parameter
|
||||
@param NicConfig The new NIC IP4 configure parameter.
|
||||
@param Reconfig Inform the IP4 driver to restart the auto
|
||||
configuration
|
||||
configuration.
|
||||
|
||||
@retval EFI_SUCCESS The configure parameter for this NIC was
|
||||
set successfully .
|
||||
set successfully.
|
||||
@retval EFI_INVALID_PARAMETER This is NULL or the configure parameter is
|
||||
invalid.
|
||||
@retval EFI_ALREADY_STARTED There is a pending auto configuration.
|
||||
@retval EFI_NOT_FOUND No auto configure parameter is found
|
||||
@retval EFI_NOT_FOUND No auto configure parameter is found.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
|
@ -42,8 +42,6 @@ EfiIp4ConfigUnload (
|
||||
{
|
||||
UINT32 Index;
|
||||
|
||||
Ip4ConfigFormUnload ();
|
||||
|
||||
//
|
||||
// Stop all the IP4_CONFIG instances
|
||||
//
|
||||
@ -81,8 +79,6 @@ Ip4ConfigDriverEntryPoint (
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
Ip4ConfigFormInit ();
|
||||
|
||||
return EfiLibInstallDriverBindingComponentName2 (
|
||||
ImageHandle,
|
||||
SystemTable,
|
||||
@ -161,6 +157,16 @@ Ip4ConfigDriverBindingStart (
|
||||
IP4_CONFIG_VARIABLE *NewVariable;
|
||||
EFI_STATUS Status;
|
||||
UINT32 Index;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
|
||||
Status = gBS->HandleProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check for multiple start.
|
||||
@ -222,6 +228,7 @@ Ip4ConfigDriverBindingStart (
|
||||
Instance->Signature = IP4_CONFIG_INSTANCE_SIGNATURE;
|
||||
Instance->Controller = ControllerHandle;
|
||||
Instance->Image = This->DriverBindingHandle;
|
||||
Instance->ParentDevicePath = ParentDevicePath;
|
||||
|
||||
CopyMem (&Instance->Ip4ConfigProtocol, &mIp4ConfigProtocolTemplate, sizeof (mIp4ConfigProtocolTemplate));
|
||||
|
||||
@ -272,12 +279,6 @@ Ip4ConfigDriverBindingStart (
|
||||
}
|
||||
|
||||
Status = Ip4ConfigDeviceInit (Instance);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
//
|
||||
// Try to add a port configuration page for this controller.
|
||||
//
|
||||
Ip4ConfigUpdateForm (Instance, TRUE);
|
||||
}
|
||||
|
||||
//
|
||||
// Install the IP4_CONFIG and NIC_IP4CONFIG protocols
|
||||
|
@ -1,7 +1,6 @@
|
||||
#/** @file
|
||||
# Component name for module Ip4Config
|
||||
#
|
||||
# FIX ME!
|
||||
# Copyright (c) 2006 - 2009, Intel Corporation
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
@ -28,10 +27,6 @@
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
# DRIVER_BINDING = gIp4ConfigDriverBinding
|
||||
# COMPONENT_NAME = gIp4ConfigComponentName
|
||||
# COMPONENT_NAME2 = gIp4ConfigComponentName2
|
||||
#
|
||||
|
||||
[Sources.common]
|
||||
ComponentName.c
|
||||
@ -68,9 +63,8 @@
|
||||
gEfiIp4ConfigProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||
gEfiManagedNetworkProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiDhcp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiHiiDatabaseProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiHiiConfigAccessProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
|
||||
[Guids]
|
||||
gEfiIfrTianoGuid ## CONSUMES ## Guid
|
||||
gEfiNicIp4ConfigVariableGuid ## CONSUMES ## Guid
|
||||
|
||||
|
@ -16,7 +16,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#define EFI_NETWORK_DEVICE_CLASS 0x04
|
||||
|
||||
formset
|
||||
guid = EFI_NIC_IP4_CONFIG_VARIABLE_GUID,
|
||||
guid = EFI_NIC_IP4_CONFIG_NVDATA_GUID,
|
||||
title = STRING_TOKEN(STR_IP4_CONFIG_FORM_TITLE),
|
||||
help = STRING_TOKEN(STR_IP4_CONFIG_FORM_HELP),
|
||||
class = EFI_NETWORK_DEVICE_CLASS,
|
||||
@ -24,17 +24,9 @@ formset
|
||||
|
||||
varstore IP4_CONFIG_IFR_NVDATA,
|
||||
name = EfiNicIp4ConfigVariable,
|
||||
guid = EFI_NIC_IP4_CONFIG_VARIABLE_GUID;
|
||||
guid = EFI_NIC_IP4_CONFIG_NVDATA_GUID;
|
||||
|
||||
form formid = FORMID_MAIN_FORM,
|
||||
title = STRING_TOKEN(STR_IP4_MAIN_FORM_TITLE);
|
||||
|
||||
label DEVICE_ENTRY_LABEL;
|
||||
label LABEL_END;
|
||||
|
||||
endform;
|
||||
|
||||
form formid = FORMID_DEVICE_FORM,
|
||||
title = STRING_TOKEN(STR_IP4_DEVICE_FORM_TITLE);
|
||||
|
||||
checkbox varid = EfiNicIp4ConfigVariable.DhcpEnable,
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -24,31 +24,6 @@ extern UINT8 Ip4ConfigDxeStrings[];
|
||||
#define NIC_ITEM_CONFIG_SIZE sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE
|
||||
|
||||
|
||||
///
|
||||
/// HII specific Vendor Device Path definition.
|
||||
///
|
||||
typedef struct {
|
||||
VENDOR_DEVICE_PATH VendorDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} HII_VENDOR_DEVICE_PATH;
|
||||
|
||||
/**
|
||||
Updates the network configuration form to add/delete an entry for the network
|
||||
device specified by the Instance.
|
||||
|
||||
@param[in] Instance The IP4 Config instance.
|
||||
@param[in] AddForm Whether to add or delete a form entry.
|
||||
|
||||
@retval EFI_SUCCESS The network configuration form is updated.
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||
@retval Others Other errors as indicated.
|
||||
**/
|
||||
EFI_STATUS
|
||||
Ip4ConfigUpdateForm (
|
||||
IN IP4_CONFIG_INSTANCE *Instance,
|
||||
IN BOOLEAN AddForm
|
||||
);
|
||||
|
||||
/**
|
||||
Install HII Config Access protocol for network device and allocate resource.
|
||||
|
||||
@ -76,29 +51,4 @@ Ip4ConfigDeviceUnload (
|
||||
IN IP4_CONFIG_INSTANCE *Instance
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize the network configuration form, this includes: delete all the network
|
||||
device configuration entries, install the form callback protocol and
|
||||
allocate the resources used.
|
||||
|
||||
@retval EFI_SUCCESS The network configuration form is unloaded.
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||
**/
|
||||
EFI_STATUS
|
||||
Ip4ConfigFormInit (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Unload the network configuration form, this includes: delete all the network
|
||||
device configuration entries, uninstall the form callback protocol and
|
||||
free the resources used.
|
||||
|
||||
@retval EFI_SUCCESS The network configuration form is unloaded.
|
||||
**/
|
||||
EFI_STATUS
|
||||
Ip4ConfigFormUnload (
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif
|
||||
|
@ -15,13 +15,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#ifndef _NIC_IP4_NV_DATA_H_
|
||||
#define _NIC_IP4_NV_DATA_H_
|
||||
|
||||
|
||||
//
|
||||
// one copy from NicIp4ConfigNvData.h
|
||||
//
|
||||
#define EFI_NIC_IP4_CONFIG_VARIABLE_GUID \
|
||||
#define EFI_NIC_IP4_CONFIG_NVDATA_GUID \
|
||||
{ \
|
||||
0xd8944553, 0xc4dd, 0x41f4, { 0x9b, 0x30, 0xe1, 0x39, 0x7c, 0xfb, 0x26, 0x7b } \
|
||||
0x9d5b53f, 0xf4b0, 0x4f59, { 0xa0, 0xb1, 0x7b, 0x57, 0xd3, 0x5c, 0xe, 0x5 } \
|
||||
}
|
||||
|
||||
#define FORMID_MAIN_FORM 1
|
||||
@ -33,11 +29,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#define KEY_GATE_WAY 0x104
|
||||
#define KEY_SAVE_CHANGES 0x105
|
||||
|
||||
#define DEVICE_ENTRY_LABEL 0x1234
|
||||
#define LABEL_END 0xffff
|
||||
|
||||
#define KEY_DEVICE_ENTRY_BASE 0x1000
|
||||
|
||||
#define IP_MIN_SIZE 7
|
||||
#define IP_MAX_SIZE 15
|
||||
#define IP4_STR_MAX_SIZE 16
|
||||
@ -57,3 +48,4 @@ typedef struct {
|
||||
} IP4_CONFIG_IFR_NVDATA;
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user