brintos

brintos / linux-shallow public Read only

0
0
Text · 6.7 KiB · 760864e Raw
208 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * QLogic iSCSI Offload Driver4 * Copyright (c) 2016 Cavium Inc.5 */6 7#ifndef NVM_ISCSI_CFG_H8#define NVM_ISCSI_CFG_H9 10#define NUM_OF_ISCSI_TARGET_PER_PF    4   /* Defined as per the11					   * ISCSI IBFT constraint12					   */13#define NUM_OF_ISCSI_PF_SUPPORTED     4   /* One PF per Port -14					   * assuming 4 port card15					   */16 17#define NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN  25618 19union nvm_iscsi_dhcp_vendor_id {20	u32 value[NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN / 4];21	u8  byte[NVM_ISCSI_CFG_DHCP_NAME_MAX_LEN];22};23 24#define NVM_ISCSI_IPV4_ADDR_BYTE_LEN 425union nvm_iscsi_ipv4_addr {26	u32 addr;27	u8  byte[NVM_ISCSI_IPV4_ADDR_BYTE_LEN];28};29 30#define NVM_ISCSI_IPV6_ADDR_BYTE_LEN 1631union nvm_iscsi_ipv6_addr {32	u32 addr[4];33	u8  byte[NVM_ISCSI_IPV6_ADDR_BYTE_LEN];34};35 36struct nvm_iscsi_initiator_ipv4 {37	union nvm_iscsi_ipv4_addr addr;				/* 0x0 */38	union nvm_iscsi_ipv4_addr subnet_mask;			/* 0x4 */39	union nvm_iscsi_ipv4_addr gateway;			/* 0x8 */40	union nvm_iscsi_ipv4_addr primary_dns;			/* 0xC */41	union nvm_iscsi_ipv4_addr secondary_dns;		/* 0x10 */42	union nvm_iscsi_ipv4_addr dhcp_addr;			/* 0x14 */43 44	union nvm_iscsi_ipv4_addr isns_server;			/* 0x18 */45	union nvm_iscsi_ipv4_addr slp_server;			/* 0x1C */46	union nvm_iscsi_ipv4_addr primay_radius_server;		/* 0x20 */47	union nvm_iscsi_ipv4_addr secondary_radius_server;	/* 0x24 */48 49	union nvm_iscsi_ipv4_addr rsvd[4];			/* 0x28 */50};51 52struct nvm_iscsi_initiator_ipv6 {53	union nvm_iscsi_ipv6_addr addr;				/* 0x0 */54	union nvm_iscsi_ipv6_addr subnet_mask;			/* 0x10 */55	union nvm_iscsi_ipv6_addr gateway;			/* 0x20 */56	union nvm_iscsi_ipv6_addr primary_dns;			/* 0x30 */57	union nvm_iscsi_ipv6_addr secondary_dns;		/* 0x40 */58	union nvm_iscsi_ipv6_addr dhcp_addr;			/* 0x50 */59 60	union nvm_iscsi_ipv6_addr isns_server;			/* 0x60 */61	union nvm_iscsi_ipv6_addr slp_server;			/* 0x70 */62	union nvm_iscsi_ipv6_addr primay_radius_server;		/* 0x80 */63	union nvm_iscsi_ipv6_addr secondary_radius_server;	/* 0x90 */64 65	union nvm_iscsi_ipv6_addr rsvd[3];			/* 0xA0 */66 67	u32   config;						/* 0xD0 */68#define NVM_ISCSI_CFG_INITIATOR_IPV6_SUBNET_MASK_PREFIX_MASK      0x000000FF69#define NVM_ISCSI_CFG_INITIATOR_IPV6_SUBNET_MASK_PREFIX_OFFSET    070 71	u32   rsvd_1[3];72};73 74#define NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN  25675union nvm_iscsi_name {76	u32 value[NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN / 4];77	u8  byte[NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN];78};79 80#define NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN  25681union nvm_iscsi_chap_name {82	u32 value[NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN / 4];83	u8  byte[NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN];84};85 86#define NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN  16 /* md5 need per RFC199687					    * is 16 octets88					    */89union nvm_iscsi_chap_password {90	u32 value[NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN / 4];91	u8 byte[NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN];92};93 94union nvm_iscsi_lun {95	u8  byte[8];96	u32 value[2];97};98 99struct nvm_iscsi_generic {100	u32 ctrl_flags;						/* 0x0 */101#define NVM_ISCSI_CFG_GEN_CHAP_ENABLED                 BIT(0)102#define NVM_ISCSI_CFG_GEN_DHCP_TCPIP_CONFIG_ENABLED    BIT(1)103#define NVM_ISCSI_CFG_GEN_DHCP_ISCSI_CONFIG_ENABLED    BIT(2)104#define NVM_ISCSI_CFG_GEN_IPV6_ENABLED                 BIT(3)105#define NVM_ISCSI_CFG_GEN_IPV4_FALLBACK_ENABLED        BIT(4)106#define NVM_ISCSI_CFG_GEN_ISNS_WORLD_LOGIN             BIT(5)107#define NVM_ISCSI_CFG_GEN_ISNS_SELECTIVE_LOGIN         BIT(6)108#define NVM_ISCSI_CFG_GEN_ADDR_REDIRECT_ENABLED	       BIT(7)109#define NVM_ISCSI_CFG_GEN_CHAP_MUTUAL_ENABLED          BIT(8)110 111	u32 timeout;						/* 0x4 */112#define NVM_ISCSI_CFG_GEN_DHCP_REQUEST_TIMEOUT_MASK       0x0000FFFF113#define NVM_ISCSI_CFG_GEN_DHCP_REQUEST_TIMEOUT_OFFSET     0114#define NVM_ISCSI_CFG_GEN_PORT_LOGIN_TIMEOUT_MASK         0xFFFF0000115#define NVM_ISCSI_CFG_GEN_PORT_LOGIN_TIMEOUT_OFFSET       16116 117	union nvm_iscsi_dhcp_vendor_id  dhcp_vendor_id;		/* 0x8  */118	u32 rsvd[62];						/* 0x108 */119};120 121struct nvm_iscsi_initiator {122	struct nvm_iscsi_initiator_ipv4 ipv4;			/* 0x0 */123	struct nvm_iscsi_initiator_ipv6 ipv6;			/* 0x38 */124 125	union nvm_iscsi_name           initiator_name;		/* 0x118 */126	union nvm_iscsi_chap_name      chap_name;		/* 0x218 */127	union nvm_iscsi_chap_password  chap_password;		/* 0x318 */128 129	u32 generic_cont0;					/* 0x398 */130#define NVM_ISCSI_CFG_INITIATOR_VLAN_MASK		0x0000FFFF131#define NVM_ISCSI_CFG_INITIATOR_VLAN_OFFSET		0132#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_MASK		0x00030000133#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_OFFSET	16134#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_4		1135#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_6		2136#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_4_AND_6	3137 138	u32 ctrl_flags;139#define NVM_ISCSI_CFG_INITIATOR_IP_VERSION_PRIORITY_V6     BIT(0)140#define NVM_ISCSI_CFG_INITIATOR_VLAN_ENABLED               BIT(1)141 142	u32 rsvd[116];						/* 0x32C */143};144 145struct nvm_iscsi_target {146	u32 ctrl_flags;						/* 0x0 */147#define NVM_ISCSI_CFG_TARGET_ENABLED            BIT(0)148#define NVM_ISCSI_CFG_BOOT_TIME_LOGIN_STATUS    BIT(1)149 150	u32 generic_cont0;					/* 0x4 */151#define NVM_ISCSI_CFG_TARGET_TCP_PORT_MASK      0x0000FFFF152#define NVM_ISCSI_CFG_TARGET_TCP_PORT_OFFSET    0153 154	u32 ip_ver;155#define NVM_ISCSI_CFG_IPv4       4156#define NVM_ISCSI_CFG_IPv6       6157 158	u32 rsvd_1[7];						/* 0x24 */159	union nvm_iscsi_ipv4_addr ipv4_addr;			/* 0x28 */160	union nvm_iscsi_ipv6_addr ipv6_addr;			/* 0x2C */161	union nvm_iscsi_lun lun;				/* 0x3C */162 163	union nvm_iscsi_name           target_name;		/* 0x44 */164	union nvm_iscsi_chap_name      chap_name;		/* 0x144 */165	union nvm_iscsi_chap_password  chap_password;		/* 0x244 */166 167	u32 rsvd_2[107];					/* 0x2C4 */168};169 170struct nvm_iscsi_block {171	u32 id;							/* 0x0 */172#define NVM_ISCSI_CFG_BLK_MAPPED_PF_ID_MASK         0x0000000F173#define NVM_ISCSI_CFG_BLK_MAPPED_PF_ID_OFFSET       0174#define NVM_ISCSI_CFG_BLK_CTRL_FLAG_MASK            0x00000FF0175#define NVM_ISCSI_CFG_BLK_CTRL_FLAG_OFFSET          4176#define NVM_ISCSI_CFG_BLK_CTRL_FLAG_IS_NOT_EMPTY    BIT(0)177#define NVM_ISCSI_CFG_BLK_CTRL_FLAG_PF_MAPPED       BIT(1)178 179	u32 rsvd_1[5];						/* 0x4 */180 181	struct nvm_iscsi_generic     generic;			/* 0x18 */182	struct nvm_iscsi_initiator   initiator;			/* 0x218 */183	struct nvm_iscsi_target      target[NUM_OF_ISCSI_TARGET_PER_PF];184								/* 0x718 */185 186	u32 rsvd_2[58];						/* 0x1718 */187	/* total size - 0x1800 - 6K block */188};189 190struct nvm_iscsi_cfg {191	u32 id;							/* 0x0 */192#define NVM_ISCSI_CFG_BLK_VERSION_MINOR_MASK     0x000000FF193#define NVM_ISCSI_CFG_BLK_VERSION_MAJOR_MASK     0x0000FF00194#define NVM_ISCSI_CFG_BLK_SIGNATURE_MASK         0xFFFF0000195#define NVM_ISCSI_CFG_BLK_SIGNATURE              0x49430000 /* IC - Iscsi196							     * Config197							     */198 199#define NVM_ISCSI_CFG_BLK_VERSION_MAJOR          0200#define NVM_ISCSI_CFG_BLK_VERSION_MINOR          10201#define NVM_ISCSI_CFG_BLK_VERSION ((NVM_ISCSI_CFG_BLK_VERSION_MAJOR << 8) | \202				   NVM_ISCSI_CFG_BLK_VERSION_MINOR)203 204	struct nvm_iscsi_block	block[NUM_OF_ISCSI_PF_SUPPORTED]; /* 0x4 */205};206 207#endif208