]> git.proxmox.com Git - mirror_edk2.git/commitdiff
add iSCSI protocol
authoreric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 24 Dec 2007 02:15:46 +0000 (02:15 +0000)
committereric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 24 Dec 2007 02:15:46 +0000 (02:15 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4422 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/IndustryStandard/Acpi3_0.h
MdePkg/Include/IndustryStandard/IScsiBootFirmwareTable.h [new file with mode: 0644]
MdePkg/Include/Protocol/DevicePath.h
MdePkg/Include/Protocol/IScsiInitatorName.h [deleted file]
MdePkg/Include/Protocol/IScsiInitiatorName.h [new file with mode: 0644]

index 0c7d3ddcead4561fb99c2d59c0299f8b2cc6ac75..6416ff2e7c35810a3af6d09290919ab821910f6b 100644 (file)
@@ -665,6 +665,11 @@ typedef struct {
 //\r
 #define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE 0x54524457\r
 \r
+//\r
+// "iBFT" iSCSI Boot Firmware Table\r
+//\r
+#define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE 0x54464269\r
+\r
 #pragma pack()\r
 \r
 #endif\r
diff --git a/MdePkg/Include/IndustryStandard/IScsiBootFirmwareTable.h b/MdePkg/Include/IndustryStandard/IScsiBootFirmwareTable.h
new file mode 100644 (file)
index 0000000..3d249d3
--- /dev/null
@@ -0,0 +1,145 @@
+/** @file\r
+\r
+Copyright (c) 2005 - 2007, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+Module Name:\r
+\r
+  IScsiBootFirmwareTable.h\r
+\r
+Abstract:\r
+\r
+  The definition for iSCSI Boot Firmware Table, it's defined in\r
+  Microsoft iBFT document.\r
+\r
+**/\r
+\r
+#ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
+#define _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
+\r
+#include "Acpi3_0.h"\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION            0x01\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8\r
+\r
+enum {\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID = 0,\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID,\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID,\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID,\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID,\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID,\r
+};\r
+\r
+enum {\r
+  IpPrefixOriginOther = 0,\r
+  IpPrefixOriginManual,\r
+  IpPrefixOriginWellKnown,\r
+  IpPrefixOriginDhcp,\r
+  IpPrefixOriginRouterAdvertisement,\r
+  IpPrefixOriginUnchanged = 16\r
+};\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+  UINT32  Signature;\r
+  UINT32  Length;\r
+  UINT8   Revision;\r
+  UINT8   Checksum;\r
+  UINT8   OemId[6];\r
+  UINT64  OemTableId;\r
+  UINT8   Reserved[24];\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;\r
+\r
+typedef struct {\r
+  UINT8   StructureId;\r
+  UINT8   Version;\r
+  UINT16  Length;\r
+  UINT8   Index;\r
+  UINT8   Flags;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION            0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER 0x1\r
+\r
+typedef struct {\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;\r
+  UINT16                                               Extensions;\r
+  UINT16                                               InitiatorOffset;\r
+  UINT16                                               NIC0Offset;\r
+  UINT16                                               Target0Offset;\r
+  UINT16                                               NIC1Offset;\r
+  UINT16                                               Target1Offset;  \r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION            0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID   0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+\r
+typedef struct {\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;\r
+  EFI_IPv6_ADDRESS                                     ISnsServer;\r
+  EFI_IPv6_ADDRESS                                     SlpServer;\r
+  EFI_IPv6_ADDRESS                                     PrimaryRadiusServer;\r
+  EFI_IPv6_ADDRESS                                     SecondaryRadiusServer;\r
+  UINT16                                               IScsiNameLength;\r
+  UINT16                                               IScsiNameOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION            0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID   0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL        0x4\r
+\r
+typedef struct {\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;\r
+  EFI_IPv6_ADDRESS                                     Ip;\r
+  UINT8                                                SubnetMaskPrefixLength;\r
+  UINT8                                                Origin;\r
+  EFI_IPv6_ADDRESS                                     Gateway;\r
+  EFI_IPv6_ADDRESS                                     PrimaryDns;\r
+  EFI_IPv6_ADDRESS                                     SecondaryDns;\r
+  EFI_IPv6_ADDRESS                                     DhcpServer;\r
+  UINT16                                               VLanTag;\r
+  UINT8                                                Mac[6];\r
+  UINT16                                               PciLocation;\r
+  UINT16                                               HostNameLength;\r
+  UINT16                                               HostNameOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION            0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID   0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP   0x4\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP  0x8\r
+\r
+typedef struct {\r
+  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;\r
+  EFI_IPv6_ADDRESS                                     Ip;\r
+  UINT16                                               Port;\r
+  UINT8                                                BootLun[8];\r
+  UINT8                                                CHAPType;\r
+  UINT8                                                NicIndex;\r
+  UINT16                                               IScsiNameLength;\r
+  UINT16                                               IScsiNameOffset;\r
+  UINT16                                               CHAPNameLength;\r
+  UINT16                                               CHAPNameOffset;\r
+  UINT16                                               CHAPSecretLength;\r
+  UINT16                                               CHAPSecretOffset;\r
+  UINT16                                               ReverseCHAPNameLength;\r
+  UINT16                                               ReverseCHAPNameOffset;\r
+  UINT16                                               ReverseCHAPSecretLength;\r
+  UINT16                                               ReverseCHAPSecretOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;\r
+\r
+#pragma pack()\r
+\r
+#endif\r
+\r
index 2ca008ac65fbbbd6ca2a61abe7ae11e1aa923f75..5957b0ed79836cbc47fb313d97191048ebec560e 100644 (file)
@@ -427,6 +427,7 @@ typedef union {
 \r
   ATAPI_DEVICE_PATH                    Atapi;\r
   SCSI_DEVICE_PATH                     Scsi;\r
+  ISCSI_DEVICE_PATH                    Iscsi;\r
   FIBRECHANNEL_DEVICE_PATH             FibreChannel;\r
 \r
   F1394_DEVICE_PATH                    F1394;\r
diff --git a/MdePkg/Include/Protocol/IScsiInitatorName.h b/MdePkg/Include/Protocol/IScsiInitatorName.h
deleted file mode 100644 (file)
index ed6b5e0..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/** @file\r
-  EFI_ISCSI_INITIATOR_NAME_PROTOCOL as defined in UEFI 2.0.\r
-  It rovides the ability to get and set the iSCSI Initiator Name.                                                  \r
-\r
-  Copyright (c) 2006, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-**/\r
-\r
-#ifndef __ISCSI_INITIATOR_NAME_H__\r
-#define __ISCSI_INITIATOR_NAME_H__\r
-\r
-#define EFI_ISCSI_INITIATOR_NAME_PROTOCOL_GUID \\r
-{ \\r
-  0x59324945, 0xec44, 0x4c0d, {0xb1, 0xcd, 0x9d, 0xb1, 0x39, 0xdf, 0x7, 0xc } \\r
-}\r
-\r
-typedef struct _EFI_ISCSI_INITIATOR_NAME_PROTOCOL EFI_ISCSI_INITIATOR_NAME_PROTOCOL;\r
-\r
-/**\r
-  Retrieves the current set value of iSCSI Initiator Name.\r
-\r
-  @param  This       Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.\r
-  @param  BufferSize Size of the buffer in bytes pointed to by Buffer / Actual size of the\r
-                     variable data buffer.\r
-  @param  Buffer     Pointer to the buffer for data to be read.\r
-\r
-  @retval EFI_SUCCESS           Data was successfully retrieved into the provided buffer and the\r
-                                BufferSize was sufficient to handle the iSCSI initiator name\r
-  @retval EFI_BUFFER_TOO_SMALL  BufferSize is too small for the result.\r
-  @retval EFI_INVALID_PARAMETER BufferSize or Buffer is NULL.\r
-  @retval EFI_DEVICE_ERROR      The iSCSI initiator name could not be retrieved due to a hardware error.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_ISCSI_INITIATOR_NAME_GET) (\r
-  IN EFI_ISCSI_INITIATOR_NAME_PROTOCOL *This,\r
-  IN OUT UINTN                         *BufferSize,\r
-  OUT VOID                             *Buffer\r
-  )\r
-;\r
-\r
-  \r
-\r
-/**\r
-  Sets the iSCSI Initiator Name.\r
-\r
-  @param  This       Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.\r
-  @param  BufferSize Size of the buffer in bytes pointed to by Buffer.\r
-  @param  Buffer     Pointer to the buffer for data to be written.\r
-\r
-  @retval EFI_SUCCESS           Data was successfully stored by the protocol.\r
-  @retval EFI_UNSUPPORTED       Platform policies do not allow for data to be written.\r
-  @retval EFI_INVALID_PARAMETER BufferSize or Buffer is NULL, or BufferSize exceeds the maximum allowed limit.\r
-  @retval EFI_DEVICE_ERROR      The data could not be stored due to a hardware error.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the data.\r
-  @retval EFI_PROTOCOL_ERROR    Input iSCSI initiator name does not adhere to RFC 3720\r
-                                (and other related protocols)\r
-\r
-**/\r
-typedef EFI_STATUS\r
-(EFIAPI *EFI_ISCSI_INITIATOR_NAME_SET) (\r
-  IN EFI_ISCSI_INITIATOR_NAME_PROTOCOL *This,\r
-  IN OUT UINTN                         *BufferSize,\r
-  IN VOID                              *Buffer\r
-  )\r
-;  \r
-\r
-struct _EFI_ISCSI_INITIATOR_NAME_PROTOCOL {\r
-  EFI_ISCSI_INITIATOR_NAME_GET         Get;\r
-  EFI_ISCSI_INITIATOR_NAME_SET         Set;\r
-};\r
-\r
-extern EFI_GUID gEfiIScsiInitiatorNameProtocolGuid;\r
-\r
-#endif\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
diff --git a/MdePkg/Include/Protocol/IScsiInitiatorName.h b/MdePkg/Include/Protocol/IScsiInitiatorName.h
new file mode 100644 (file)
index 0000000..ed6b5e0
--- /dev/null
@@ -0,0 +1,90 @@
+/** @file\r
+  EFI_ISCSI_INITIATOR_NAME_PROTOCOL as defined in UEFI 2.0.\r
+  It rovides the ability to get and set the iSCSI Initiator Name.                                                  \r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+**/\r
+\r
+#ifndef __ISCSI_INITIATOR_NAME_H__\r
+#define __ISCSI_INITIATOR_NAME_H__\r
+\r
+#define EFI_ISCSI_INITIATOR_NAME_PROTOCOL_GUID \\r
+{ \\r
+  0x59324945, 0xec44, 0x4c0d, {0xb1, 0xcd, 0x9d, 0xb1, 0x39, 0xdf, 0x7, 0xc } \\r
+}\r
+\r
+typedef struct _EFI_ISCSI_INITIATOR_NAME_PROTOCOL EFI_ISCSI_INITIATOR_NAME_PROTOCOL;\r
+\r
+/**\r
+  Retrieves the current set value of iSCSI Initiator Name.\r
+\r
+  @param  This       Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.\r
+  @param  BufferSize Size of the buffer in bytes pointed to by Buffer / Actual size of the\r
+                     variable data buffer.\r
+  @param  Buffer     Pointer to the buffer for data to be read.\r
+\r
+  @retval EFI_SUCCESS           Data was successfully retrieved into the provided buffer and the\r
+                                BufferSize was sufficient to handle the iSCSI initiator name\r
+  @retval EFI_BUFFER_TOO_SMALL  BufferSize is too small for the result.\r
+  @retval EFI_INVALID_PARAMETER BufferSize or Buffer is NULL.\r
+  @retval EFI_DEVICE_ERROR      The iSCSI initiator name could not be retrieved due to a hardware error.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_ISCSI_INITIATOR_NAME_GET) (\r
+  IN EFI_ISCSI_INITIATOR_NAME_PROTOCOL *This,\r
+  IN OUT UINTN                         *BufferSize,\r
+  OUT VOID                             *Buffer\r
+  )\r
+;\r
+\r
+  \r
+\r
+/**\r
+  Sets the iSCSI Initiator Name.\r
+\r
+  @param  This       Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.\r
+  @param  BufferSize Size of the buffer in bytes pointed to by Buffer.\r
+  @param  Buffer     Pointer to the buffer for data to be written.\r
+\r
+  @retval EFI_SUCCESS           Data was successfully stored by the protocol.\r
+  @retval EFI_UNSUPPORTED       Platform policies do not allow for data to be written.\r
+  @retval EFI_INVALID_PARAMETER BufferSize or Buffer is NULL, or BufferSize exceeds the maximum allowed limit.\r
+  @retval EFI_DEVICE_ERROR      The data could not be stored due to a hardware error.\r
+  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the data.\r
+  @retval EFI_PROTOCOL_ERROR    Input iSCSI initiator name does not adhere to RFC 3720\r
+                                (and other related protocols)\r
+\r
+**/\r
+typedef EFI_STATUS\r
+(EFIAPI *EFI_ISCSI_INITIATOR_NAME_SET) (\r
+  IN EFI_ISCSI_INITIATOR_NAME_PROTOCOL *This,\r
+  IN OUT UINTN                         *BufferSize,\r
+  IN VOID                              *Buffer\r
+  )\r
+;  \r
+\r
+struct _EFI_ISCSI_INITIATOR_NAME_PROTOCOL {\r
+  EFI_ISCSI_INITIATOR_NAME_GET         Get;\r
+  EFI_ISCSI_INITIATOR_NAME_SET         Set;\r
+};\r
+\r
+extern EFI_GUID gEfiIScsiInitiatorNameProtocolGuid;\r
+\r
+#endif\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r