summaryrefslogtreecommitdiff
path: root/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
diff options
context:
space:
mode:
authorZhang Lubo <lubo.zhang@intel.com>2017-02-17 14:43:41 +0800
committerJiaxin Wu <jiaxin.wu@intel.com>2017-02-23 16:50:54 +0800
commit8d1f5e04168c1f140cd421fd95cff516a3629b72 (patch)
treecd8fd4073b3145bd4841faf06cba85dd658a9c4a /NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
parent1d8cebf91040e74f6c82352edd5c5cccf6b69853 (diff)
downloadedk2-8d1f5e04168c1f140cd421fd95cff516a3629b72.zip
edk2-8d1f5e04168c1f140cd421fd95cff516a3629b72.tar.gz
edk2-8d1f5e04168c1f140cd421fd95cff516a3629b72.tar.bz2
NetworkPkg:Add scriptable configuration to iSCSI driver by leveraging x-UEFI.
v2: Add error handling if can not create Attempts in driver entry point. Since we support to define a macro be a PCD value, we enhance our code by modifying the structure in IFR_NVDATA. This effect code logic mainly in Creating Keywords,Convert IFR NvData To AttemptConfigData ByKeyword and reverse function. Fix typo errors and sync based on the latest code. Enable iSCSI keywords configuration based on x-UEFI name space. we introduce new PCD to control the attempt numbers which will be created in non activated state, besides the Attempt name is changed to READ_ONLY attribute in UI. We can invoke KEYWORD HANDLER Protocol to configure the related keywords. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo <lubo.zhang@intel.com> Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Wu Jiaxin <jiaxin.wu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Wu Jiaxin jiaxin.wu@intel.com
Diffstat (limited to 'NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h')
-rw-r--r--NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h67
1 files changed, 57 insertions, 10 deletions
diff --git a/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h b/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
index 5f22767..f89f320 100644
--- a/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
+++ b/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
@@ -26,12 +26,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define FORMID_ORDER_FORM 4
#define FORMID_DELETE_FORM 5
+#define ISCSI_MAX_ATTEMPTS_NUM FixedPcdGet8 (PcdMaxIScsiAttemptNumber)
+
#define ISCSI_NAME_IFR_MIN_SIZE 4
#define ISCSI_NAME_IFR_MAX_SIZE 223
#define ISCSI_NAME_MAX_SIZE 224
-#define ATTEMPT_NAME_MAX_SIZE 96
-#define ATTEMPT_NAME_SIZE 10
+#define ATTEMPT_NAME_LIST_SIZE 96
+#define ATTEMPT_NAME_SIZE 12
#define CONNECT_MIN_RETRY 0
#define CONNECT_MAX_RETRY 16
@@ -40,7 +42,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define CONNECT_MAX_TIMEOUT 20000
#define CONNECT_DEFAULT_TIMEOUT 1000
-#define ISCSI_MAX_ATTEMPTS_NUM 255
+#define ISCSI_ACTIVE_DISABLED 0
+#define ISCSI_ACTIVE_ENABLED 1
#define ISCSI_DISABLED 0
#define ISCSI_ENABLED 1
@@ -67,6 +70,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define LUN_MIN_SIZE 1
#define LUN_MAX_SIZE 20
+#define ISCSI_LUN_STR_MAX_LEN 21
#define ISCSI_CHAP_UNI 0
#define ISCSI_CHAP_MUTUAL 1
@@ -112,17 +116,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define MAC_ENTRY_LABEL 0x3000
#define ORDER_ENTRY_LABEL 0x4000
#define DELETE_ENTRY_LABEL 0x5000
+#define KEYWORD_ENTRY_LABEL 0x6000
#define CONFIG_OPTION_OFFSET 0x9000
-#define ISCSI_LUN_STR_MAX_LEN 21
#define ISCSI_CHAP_SECRET_MIN_LEN 12
#define ISCSI_CHAP_SECRET_MAX_LEN 16
//
// ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator)
//
-#define ISCSI_CHAP_SECRET_STORAGE 17
-#define ISCSI_CHAP_NAME_MAX_LEN 126
-#define ISCSI_CHAP_NAME_STORAGE 127
+#define ISCSI_CHAP_SECRET_STORAGE 17
+
+#define ISCSI_CHAP_NAME_MAX_LEN 126
+#define ISCSI_CHAP_NAME_STORAGE 127
#define KERBEROS_SECRET_MIN_LEN 12
#define KERBEROS_SECRET_MAX_LEN 16
@@ -135,6 +140,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define ISID_CONFIGURABLE_MAX_LEN 12
#define ISID_CONFIGURABLE_STORAGE 13
+//
+// sizeof (EFI_MAC_ADDRESS) * 3
+//
+#define ISCSI_MAX_MAC_STRING_LEN 96
+
///
/// Macro used for target Url.
///
@@ -142,10 +152,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define ISCSI_TARGET_URI_MAX_SIZE 255
#pragma pack(1)
+
+//
+// Used by keyword.
+//
+typedef struct {
+ CHAR16 ISCSIIsId[ISID_CONFIGURABLE_STORAGE];
+ CHAR16 ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE];
+ CHAR16 ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE];
+ CHAR16 ISCSIInitiatorGateway[IP4_STR_MAX_SIZE];
+ CHAR16 ISCSITargetName[ISCSI_NAME_MAX_SIZE];
+ CHAR16 ISCSITargetIpAddress[IP_STR_MAX_SIZE];
+ CHAR16 ISCSILun[ISCSI_LUN_STR_MAX_LEN];
+ CHAR16 ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE];
+ CHAR16 ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE];
+ CHAR16 ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE];
+ CHAR16 ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE];
+} KEYWORD_STR;
+
typedef struct _ISCSI_CONFIG_IFR_NVDATA {
CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE];
- CHAR16 AttemptName[ATTEMPT_NAME_MAX_SIZE];
-
+ CHAR16 AttemptName[ATTEMPT_NAME_SIZE];
UINT8 Enabled;
UINT8 IpMode;
@@ -183,8 +210,28 @@ typedef struct _ISCSI_CONFIG_IFR_NVDATA {
UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM];
UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM];
-
+ UINT8 AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM];
CHAR16 IsId[ISID_CONFIGURABLE_STORAGE];
+
+ //
+ // This will be used by keywords.
+ //
+ CHAR16 ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN];
+ CHAR16 ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE];
+ CHAR16 ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE];
+ CHAR16 ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE];
+ CHAR16 ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE];
+ CHAR16 ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE];
+ UINT8 ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT16 ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT16 ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM];
+ UINT8 ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM];
+ KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM];
} ISCSI_CONFIG_IFR_NVDATA;
#pragma pack()