Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
75f8c1f6 NB |
2 | #include <target/target_core_base.h> |
3 | #include <linux/btree.h> | |
4 | ||
75f8c1f6 NB |
5 | /* length of ASCII WWPNs including pad */ |
6 | #define TCM_QLA2XXX_NAMELEN 32 | |
51a07f84 NB |
7 | /* |
8 | * Number of pre-allocated per-session tags, based upon the worst-case | |
9 | * per port number of iocbs | |
10 | */ | |
11 | #define TCM_QLA2XXX_DEFAULT_TAGS 2088 | |
75f8c1f6 NB |
12 | |
13 | #include "qla_target.h" | |
14 | ||
15 | struct tcm_qla2xxx_nacl { | |
144bc4c2 CH |
16 | struct se_node_acl se_node_acl; |
17 | ||
75f8c1f6 NB |
18 | /* From libfc struct fc_rport->port_id */ |
19 | u32 nport_id; | |
20 | /* Binary World Wide unique Node Name for remote FC Initiator Nport */ | |
21 | u64 nport_wwnn; | |
22 | /* ASCII formatted WWPN for FC Initiator Nport */ | |
23 | char nport_name[TCM_QLA2XXX_NAMELEN]; | |
5d964837 QT |
24 | /* Pointer to fc_port */ |
25 | struct fc_port *fc_port; | |
75f8c1f6 NB |
26 | /* Pointer to TCM FC nexus */ |
27 | struct se_session *nport_nexus; | |
75f8c1f6 NB |
28 | }; |
29 | ||
30 | struct tcm_qla2xxx_tpg_attrib { | |
31 | int generate_node_acls; | |
32 | int cache_dynamic_acls; | |
33 | int demo_mode_write_protect; | |
34 | int prod_mode_write_protect; | |
de04a8aa | 35 | int demo_mode_login_only; |
64b16887 | 36 | int fabric_prot_type; |
54a5e73f | 37 | int jam_host; |
75f8c1f6 NB |
38 | }; |
39 | ||
40 | struct tcm_qla2xxx_tpg { | |
41 | /* FC lport target portal group tag for TCM */ | |
42 | u16 lport_tpgt; | |
43 | /* Atomic bit to determine TPG active status */ | |
44 | atomic_t lport_tpg_enabled; | |
45 | /* Pointer back to tcm_qla2xxx_lport */ | |
46 | struct tcm_qla2xxx_lport *lport; | |
47 | /* Used by tcm_qla2xxx_tpg_attrib_cit */ | |
48 | struct tcm_qla2xxx_tpg_attrib tpg_attrib; | |
49 | /* Returned by tcm_qla2xxx_make_tpg() */ | |
50 | struct se_portal_group se_tpg; | |
51 | }; | |
52 | ||
75f8c1f6 NB |
53 | struct tcm_qla2xxx_fc_loopid { |
54 | struct se_node_acl *se_nacl; | |
55 | }; | |
56 | ||
57 | struct tcm_qla2xxx_lport { | |
75f8c1f6 NB |
58 | /* Binary World Wide unique Port Name for FC Target Lport */ |
59 | u64 lport_wwpn; | |
60 | /* Binary World Wide unique Port Name for FC NPIV Target Lport */ | |
61 | u64 lport_npiv_wwpn; | |
62 | /* Binary World Wide unique Node Name for FC NPIV Target Lport */ | |
63 | u64 lport_npiv_wwnn; | |
64 | /* ASCII formatted WWPN for FC Target Lport */ | |
65 | char lport_name[TCM_QLA2XXX_NAMELEN]; | |
c046aa0f RD |
66 | /* ASCII formatted naa WWPN for VPD page 83 etc */ |
67 | char lport_naa_name[TCM_QLA2XXX_NAMELEN]; | |
75f8c1f6 NB |
68 | /* map for fc_port pointers in 24-bit FC Port ID space */ |
69 | struct btree_head32 lport_fcport_map; | |
70 | /* vmalloc-ed memory for fc_port pointers for 16-bit FC loop ID */ | |
71 | struct tcm_qla2xxx_fc_loopid *lport_loopid_map; | |
72 | /* Pointer to struct scsi_qla_host from qla2xxx LLD */ | |
73 | struct scsi_qla_host *qla_vha; | |
75f8c1f6 NB |
74 | /* Pointer to struct qla_tgt pointer */ |
75 | struct qla_tgt lport_qla_tgt; | |
75f8c1f6 NB |
76 | /* Pointer to TPG=1 for non NPIV mode */ |
77 | struct tcm_qla2xxx_tpg *tpg_1; | |
78 | /* Returned by tcm_qla2xxx_make_lport() */ | |
79 | struct se_wwn lport_wwn; | |
80 | }; |