0001
0002
0003
0004
0005
0006
0007 #ifndef NVM_ISCSI_CFG_H
0008 #define NVM_ISCSI_CFG_H
0009
0010 #define NUM_OF_ISCSI_TARGET_PER_PF 4
0011
0012
0013 #define NUM_OF_ISCSI_PF_SUPPORTED 4
0014
0015
0016
0017 #define NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN 256
0018
0019 union nvm_iscsi_dhcp_vendor_id {
0020 u32 value[NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN / 4];
0021 u8 byte[NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN];
0022 };
0023
0024 #define NVM_ISCSI_IPV4_ADDR_BYTE_LEN 4
0025 union nvm_iscsi_ipv4_addr {
0026 u32 addr;
0027 u8 byte[NVM_ISCSI_IPV4_ADDR_BYTE_LEN];
0028 };
0029
0030 #define NVM_ISCSI_IPV6_ADDR_BYTE_LEN 16
0031 union nvm_iscsi_ipv6_addr {
0032 u32 addr[4];
0033 u8 byte[NVM_ISCSI_IPV6_ADDR_BYTE_LEN];
0034 };
0035
0036 struct nvm_iscsi_initiator_ipv4 {
0037 union nvm_iscsi_ipv4_addr addr;
0038 union nvm_iscsi_ipv4_addr subnet_mask;
0039 union nvm_iscsi_ipv4_addr gateway;
0040 union nvm_iscsi_ipv4_addr primary_dns;
0041 union nvm_iscsi_ipv4_addr secondary_dns;
0042 union nvm_iscsi_ipv4_addr dhcp_addr;
0043
0044 union nvm_iscsi_ipv4_addr isns_server;
0045 union nvm_iscsi_ipv4_addr slp_server;
0046 union nvm_iscsi_ipv4_addr primay_radius_server;
0047 union nvm_iscsi_ipv4_addr secondary_radius_server;
0048
0049 union nvm_iscsi_ipv4_addr rsvd[4];
0050 };
0051
0052 struct nvm_iscsi_initiator_ipv6 {
0053 union nvm_iscsi_ipv6_addr addr;
0054 union nvm_iscsi_ipv6_addr subnet_mask;
0055 union nvm_iscsi_ipv6_addr gateway;
0056 union nvm_iscsi_ipv6_addr primary_dns;
0057 union nvm_iscsi_ipv6_addr secondary_dns;
0058 union nvm_iscsi_ipv6_addr dhcp_addr;
0059
0060 union nvm_iscsi_ipv6_addr isns_server;
0061 union nvm_iscsi_ipv6_addr slp_server;
0062 union nvm_iscsi_ipv6_addr primay_radius_server;
0063 union nvm_iscsi_ipv6_addr secondary_radius_server;
0064
0065 union nvm_iscsi_ipv6_addr rsvd[3];
0066
0067 u32 config;
0068 #define NVM_ISCSI_CFG_INITIATOR_IPV6_SUBNET_MASK_PREFIX_MASK 0x000000FF
0069 #define NVM_ISCSI_CFG_INITIATOR_IPV6_SUBNET_MASK_PREFIX_OFFSET 0
0070
0071 u32 rsvd_1[3];
0072 };
0073
0074 #define NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN 256
0075 union nvm_iscsi_name {
0076 u32 value[NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN / 4];
0077 u8 byte[NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN];
0078 };
0079
0080 #define NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN 256
0081 union nvm_iscsi_chap_name {
0082 u32 value[NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN / 4];
0083 u8 byte[NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN];
0084 };
0085
0086 #define NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN 16
0087
0088
0089 union nvm_iscsi_chap_password {
0090 u32 value[NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN / 4];
0091 u8 byte[NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN];
0092 };
0093
0094 union nvm_iscsi_lun {
0095 u8 byte[8];
0096 u32 value[2];
0097 };
0098
0099 struct nvm_iscsi_generic {
0100 u32 ctrl_flags;
0101 #define NVM_ISCSI_CFG_GEN_CHAP_ENABLED BIT(0)
0102 #define NVM_ISCSI_CFG_GEN_DHCP_TCPIP_CONFIG_ENABLED BIT(1)
0103 #define NVM_ISCSI_CFG_GEN_DHCP_ISCSI_CONFIG_ENABLED BIT(2)
0104 #define NVM_ISCSI_CFG_GEN_IPV6_ENABLED BIT(3)
0105 #define NVM_ISCSI_CFG_GEN_IPV4_FALLBACK_ENABLED BIT(4)
0106 #define NVM_ISCSI_CFG_GEN_ISNS_WORLD_LOGIN BIT(5)
0107 #define NVM_ISCSI_CFG_GEN_ISNS_SELECTIVE_LOGIN BIT(6)
0108 #define NVM_ISCSI_CFG_GEN_ADDR_REDIRECT_ENABLED BIT(7)
0109 #define NVM_ISCSI_CFG_GEN_CHAP_MUTUAL_ENABLED BIT(8)
0110
0111 u32 timeout;
0112 #define NVM_ISCSI_CFG_GEN_DHCP_REQUEST_TIMEOUT_MASK 0x0000FFFF
0113 #define NVM_ISCSI_CFG_GEN_DHCP_REQUEST_TIMEOUT_OFFSET 0
0114 #define NVM_ISCSI_CFG_GEN_PORT_LOGIN_TIMEOUT_MASK 0xFFFF0000
0115 #define NVM_ISCSI_CFG_GEN_PORT_LOGIN_TIMEOUT_OFFSET 16
0116
0117 union nvm_iscsi_dhcp_vendor_id dhcp_vendor_id;
0118 u32 rsvd[62];
0119 };
0120
0121 struct nvm_iscsi_initiator {
0122 struct nvm_iscsi_initiator_ipv4 ipv4;
0123 struct nvm_iscsi_initiator_ipv6 ipv6;
0124
0125 union nvm_iscsi_name initiator_name;
0126 union nvm_iscsi_chap_name chap_name;
0127 union nvm_iscsi_chap_password chap_password;
0128
0129 u32 generic_cont0;
0130 #define NVM_ISCSI_CFG_INITIATOR_VLAN_MASK 0x0000FFFF
0131 #define NVM_ISCSI_CFG_INITIATOR_VLAN_OFFSET 0
0132 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_MASK 0x00030000
0133 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_OFFSET 16
0134 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_4 1
0135 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_6 2
0136 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_4_AND_6 3
0137
0138 u32 ctrl_flags;
0139 #define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_PRIORITY_V6 BIT(0)
0140 #define NVM_ISCSI_CFG_INITIATOR_VLAN_ENABLED BIT(1)
0141
0142 u32 rsvd[116];
0143 };
0144
0145 struct nvm_iscsi_target {
0146 u32 ctrl_flags;
0147 #define NVM_ISCSI_CFG_TARGET_ENABLED BIT(0)
0148 #define NVM_ISCSI_CFG_BOOT_TIME_LOGIN_STATUS BIT(1)
0149
0150 u32 generic_cont0;
0151 #define NVM_ISCSI_CFG_TARGET_TCP_PORT_MASK 0x0000FFFF
0152 #define NVM_ISCSI_CFG_TARGET_TCP_PORT_OFFSET 0
0153
0154 u32 ip_ver;
0155 #define NVM_ISCSI_CFG_IPv4 4
0156 #define NVM_ISCSI_CFG_IPv6 6
0157
0158 u32 rsvd_1[7];
0159 union nvm_iscsi_ipv4_addr ipv4_addr;
0160 union nvm_iscsi_ipv6_addr ipv6_addr;
0161 union nvm_iscsi_lun lun;
0162
0163 union nvm_iscsi_name target_name;
0164 union nvm_iscsi_chap_name chap_name;
0165 union nvm_iscsi_chap_password chap_password;
0166
0167 u32 rsvd_2[107];
0168 };
0169
0170 struct nvm_iscsi_block {
0171 u32 id;
0172 #define NVM_ISCSI_CFG_BLK_MAPPED_PF_ID_MASK 0x0000000F
0173 #define NVM_ISCSI_CFG_BLK_MAPPED_PF_ID_OFFSET 0
0174 #define NVM_ISCSI_CFG_BLK_CTRL_FLAG_MASK 0x00000FF0
0175 #define NVM_ISCSI_CFG_BLK_CTRL_FLAG_OFFSET 4
0176 #define NVM_ISCSI_CFG_BLK_CTRL_FLAG_IS_NOT_EMPTY BIT(0)
0177 #define NVM_ISCSI_CFG_BLK_CTRL_FLAG_PF_MAPPED BIT(1)
0178
0179 u32 rsvd_1[5];
0180
0181 struct nvm_iscsi_generic generic;
0182 struct nvm_iscsi_initiator initiator;
0183 struct nvm_iscsi_target target[NUM_OF_ISCSI_TARGET_PER_PF];
0184
0185
0186 u32 rsvd_2[58];
0187
0188 };
0189
0190 struct nvm_iscsi_cfg {
0191 u32 id;
0192 #define NVM_ISCSI_CFG_BLK_VERSION_MINOR_MASK 0x000000FF
0193 #define NVM_ISCSI_CFG_BLK_VERSION_MAJOR_MASK 0x0000FF00
0194 #define NVM_ISCSI_CFG_BLK_SIGNATURE_MASK 0xFFFF0000
0195 #define NVM_ISCSI_CFG_BLK_SIGNATURE 0x49430000
0196
0197
0198
0199 #define NVM_ISCSI_CFG_BLK_VERSION_MAJOR 0
0200 #define NVM_ISCSI_CFG_BLK_VERSION_MINOR 10
0201 #define NVM_ISCSI_CFG_BLK_VERSION ((NVM_ISCSI_CFG_BLK_VERSION_MAJOR << 8) | \
0202 NVM_ISCSI_CFG_BLK_VERSION_MINOR)
0203
0204 struct nvm_iscsi_block block[NUM_OF_ISCSI_PF_SUPPORTED];
0205 };
0206
0207 #endif