Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * QLogic iSCSI Offload Driver
0004  * Copyright (c) 2016 Cavium Inc.
0005  */
0006 
0007 #ifndef NVM_ISCSI_CFG_H
0008 #define NVM_ISCSI_CFG_H
0009 
0010 #define NUM_OF_ISCSI_TARGET_PER_PF    4   /* Defined as per the
0011                        * ISCSI IBFT constraint
0012                        */
0013 #define NUM_OF_ISCSI_PF_SUPPORTED     4   /* One PF per Port -
0014                        * assuming 4 port card
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;             /* 0x0 */
0038     union nvm_iscsi_ipv4_addr subnet_mask;          /* 0x4 */
0039     union nvm_iscsi_ipv4_addr gateway;          /* 0x8 */
0040     union nvm_iscsi_ipv4_addr primary_dns;          /* 0xC */
0041     union nvm_iscsi_ipv4_addr secondary_dns;        /* 0x10 */
0042     union nvm_iscsi_ipv4_addr dhcp_addr;            /* 0x14 */
0043 
0044     union nvm_iscsi_ipv4_addr isns_server;          /* 0x18 */
0045     union nvm_iscsi_ipv4_addr slp_server;           /* 0x1C */
0046     union nvm_iscsi_ipv4_addr primay_radius_server;     /* 0x20 */
0047     union nvm_iscsi_ipv4_addr secondary_radius_server;  /* 0x24 */
0048 
0049     union nvm_iscsi_ipv4_addr rsvd[4];          /* 0x28 */
0050 };
0051 
0052 struct nvm_iscsi_initiator_ipv6 {
0053     union nvm_iscsi_ipv6_addr addr;             /* 0x0 */
0054     union nvm_iscsi_ipv6_addr subnet_mask;          /* 0x10 */
0055     union nvm_iscsi_ipv6_addr gateway;          /* 0x20 */
0056     union nvm_iscsi_ipv6_addr primary_dns;          /* 0x30 */
0057     union nvm_iscsi_ipv6_addr secondary_dns;        /* 0x40 */
0058     union nvm_iscsi_ipv6_addr dhcp_addr;            /* 0x50 */
0059 
0060     union nvm_iscsi_ipv6_addr isns_server;          /* 0x60 */
0061     union nvm_iscsi_ipv6_addr slp_server;           /* 0x70 */
0062     union nvm_iscsi_ipv6_addr primay_radius_server;     /* 0x80 */
0063     union nvm_iscsi_ipv6_addr secondary_radius_server;  /* 0x90 */
0064 
0065     union nvm_iscsi_ipv6_addr rsvd[3];          /* 0xA0 */
0066 
0067     u32   config;                       /* 0xD0 */
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 /* md5 need per RFC1996
0087                         * is 16 octets
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;                     /* 0x0 */
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;                        /* 0x4 */
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;     /* 0x8  */
0118     u32 rsvd[62];                       /* 0x108 */
0119 };
0120 
0121 struct nvm_iscsi_initiator {
0122     struct nvm_iscsi_initiator_ipv4 ipv4;           /* 0x0 */
0123     struct nvm_iscsi_initiator_ipv6 ipv6;           /* 0x38 */
0124 
0125     union nvm_iscsi_name           initiator_name;      /* 0x118 */
0126     union nvm_iscsi_chap_name      chap_name;       /* 0x218 */
0127     union nvm_iscsi_chap_password  chap_password;       /* 0x318 */
0128 
0129     u32 generic_cont0;                  /* 0x398 */
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];                      /* 0x32C */
0143 };
0144 
0145 struct nvm_iscsi_target {
0146     u32 ctrl_flags;                     /* 0x0 */
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;                  /* 0x4 */
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];                      /* 0x24 */
0159     union nvm_iscsi_ipv4_addr ipv4_addr;            /* 0x28 */
0160     union nvm_iscsi_ipv6_addr ipv6_addr;            /* 0x2C */
0161     union nvm_iscsi_lun lun;                /* 0x3C */
0162 
0163     union nvm_iscsi_name           target_name;     /* 0x44 */
0164     union nvm_iscsi_chap_name      chap_name;       /* 0x144 */
0165     union nvm_iscsi_chap_password  chap_password;       /* 0x244 */
0166 
0167     u32 rsvd_2[107];                    /* 0x2C4 */
0168 };
0169 
0170 struct nvm_iscsi_block {
0171     u32 id;                         /* 0x0 */
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];                      /* 0x4 */
0180 
0181     struct nvm_iscsi_generic     generic;           /* 0x18 */
0182     struct nvm_iscsi_initiator   initiator;         /* 0x218 */
0183     struct nvm_iscsi_target      target[NUM_OF_ISCSI_TARGET_PER_PF];
0184                                 /* 0x718 */
0185 
0186     u32 rsvd_2[58];                     /* 0x1718 */
0187     /* total size - 0x1800 - 6K block */
0188 };
0189 
0190 struct nvm_iscsi_cfg {
0191     u32 id;                         /* 0x0 */
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 /* IC - Iscsi
0196                                  * Config
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]; /* 0x4 */
0205 };
0206 
0207 #endif