IScsiConfig.h revision 6c7a807a54b14827a6510baa5edfdbe8b5f1f085
112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/** @file
212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  The header file of IScsiConfig.c
36a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
412618416ec7a468bc7e47d9739cf973a0bb418fceric_tianCopyright (c) 2004 - 2008, Intel Corporation
57a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianAll rights reserved. This program and the accompanying materials
67a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianare licensed and made available under the terms and conditions of the BSD License
77a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianwhich accompanies this distribution.  The full text of the license may be found at
87a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianhttp://opensource.org/licenses/bsd-license.php
97a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tian
107a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
117a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
126a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
136a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianModule Name:
146a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
156a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IScsiConfig.h
166a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
176a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianAbstract:
186a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
1912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  The header file of IScsiConfig.c
206a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
2112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/
226a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
236a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#ifndef _ISCSI_CONFIG_H_
246a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define _ISCSI_CONFIG_H_
256a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
2693e3992d1ea50fb30c48f498d257d4e66252dd9bqwang#include <Library/HiiLib.h>
279226efe5ebb83ad0d5882e3eb7a54f3d63f81e9dqwang#include <Library/ExtendedHiiLib.h>
2893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang#include <Library/IfrSupportLib.h>
299226efe5ebb83ad0d5882e3eb7a54f3d63f81e9dqwang#include <Library/ExtendedIfrSupportLib.h>
306a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/DebugLib.h>
316a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/BaseLib.h>
326a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/NetLib.h>
336a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include "IScsiConfigNVDataStruc.h"
346a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
356a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianextern UINT8  IScsiConfigDxeBin[];
367a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianextern UINT8  IScsiDxeStrings[];
376a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
386a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_INITATOR_NAME_VAR_NAME        L"I_NAME"
396a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
406a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_CONFIG_VAR_ATTR               (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)
416a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
426a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE  EFI_SIGNATURE_32 ('I', 'f', 'c', 'i')
436a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
446a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \
456a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  CR ( \
466a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  Callback, \
476a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  ISCSI_FORM_CALLBACK_INFO, \
4893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  ConfigAccess, \
496a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  ISCSI_FORM_CALLBACK_INFO_SIGNATURE \
506a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  )
516a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
526a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#pragma pack(1)
536a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
546a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_MAC_INFO {
556a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  EFI_MAC_ADDRESS Mac;
566a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  UINT8           Len;
576a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_MAC_INFO;
586a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
596a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_DEVICE_LIST {
606a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  UINT8           NumDevice;
616a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  ISCSI_MAC_INFO  MacInfo[1];
626a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_DEVICE_LIST;
636a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
646a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#pragma pack()
656a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
666a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_CONFIG_FORM_ENTRY {
67e48e37fce2611df7a52aff271835ff72ee396d9bvanjeff  LIST_ENTRY                    Link;
686a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  EFI_HANDLE                    Controller;
696a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  CHAR16                        MacString[95];
706c7a807a54b14827a6510baa5edfdbe8b5f1f085qwang  EFI_STRING_ID                 PortTitleToken;
716c7a807a54b14827a6510baa5edfdbe8b5f1f085qwang  EFI_STRING_ID                 PortTitleHelpToken;
726a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
736a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  ISCSI_SESSION_CONFIG_NVDATA   SessionConfigData;
746a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  ISCSI_CHAP_AUTH_CONFIG_NVDATA AuthConfigData;
756a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_CONFIG_FORM_ENTRY;
766a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
776a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_FORM_CALLBACK_INFO {
7893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  UINTN                            Signature;
7993e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  EFI_HANDLE                       DriverHandle;
8093e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  EFI_HII_CONFIG_ACCESS_PROTOCOL   ConfigAccess;
8193e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  EFI_HII_DATABASE_PROTOCOL        *HiiDatabase;
8293e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  EFI_HII_CONFIG_ROUTING_PROTOCOL  *ConfigRouting;
8393e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  UINT16                           *KeyList;
8493e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  VOID                             *FormBuffer;
8593e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  EFI_HII_HANDLE                   RegisteredHandle;
8693e3992d1ea50fb30c48f498d257d4e66252dd9bqwang  ISCSI_CONFIG_FORM_ENTRY          *Current;
876a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_FORM_CALLBACK_INFO;
886a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
8912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/**
9012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  Updates the iSCSI configuration form to add/delete an entry for the iSCSI
9112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  device specified by the Controller.
9212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
9312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @param  DriverBindingHandle[in] The driverbinding handle.
9412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
9512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @param  Controller[in]          The controller handle of the iSCSI device.
9612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
9712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @param  AddForm[in]             Whether to add or delete a form entry.
9812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
9912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_SUCCESS             The iSCSI configuration form is updated.
10012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
10112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.
10212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
10312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/
1046a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS
1056a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigUpdateForm (
1066a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IN EFI_HANDLE  DriverBindingHandle,
1076a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IN EFI_HANDLE  Controller,
1086a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IN BOOLEAN     AddForm
1096a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  );
1106a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
11112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/**
11212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  Initialize the iSCSI configuration form.
11312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
11412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @param  DriverBindingHandle[in] The iSCSI driverbinding handle.
11512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
11612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_SUCCESS             The iSCSI configuration form is initialized.
11712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
11812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.
11912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
12012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/
1216a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS
1226a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigFormInit (
1236a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IN EFI_HANDLE  DriverBindingHandle
1246a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  );
1256a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
12612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/**
12712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  Unload the iSCSI configuration form, this includes: delete all the iSCSI
12812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  device configuration entries, uninstall the form callback protocol and
12912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  free the resources used.
13012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
13112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @param  DriverBindingHandle[in] The iSCSI driverbinding handle.
13212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
13312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_SUCCESS             The iSCSI configuration form is unloaded.
13412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
13512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian  @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.
13612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian
13712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/
1386a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS
1396a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigFormUnload (
1406a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  IN EFI_HANDLE  DriverBindingHandle
1416a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian  );
1426a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian
1436a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#endif
144