xref: /titanic_41/usr/src/lib/libdtrace/common/fc.d (revision 072f7b9522733fc23a3cd4622f84ee4b2f17115c)
1d8c54e3dSSam Cramer /*
2d8c54e3dSSam Cramer  * CDDL HEADER START
3d8c54e3dSSam Cramer  *
4d8c54e3dSSam Cramer  * The contents of this file are subject to the terms of the
5d8c54e3dSSam Cramer  * Common Development and Distribution License (the "License").
6d8c54e3dSSam Cramer  * You may not use this file except in compliance with the License.
7d8c54e3dSSam Cramer  *
8d8c54e3dSSam Cramer  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9d8c54e3dSSam Cramer  * or http://www.opensolaris.org/os/licensing.
10d8c54e3dSSam Cramer  * See the License for the specific language governing permissions
11d8c54e3dSSam Cramer  * and limitations under the License.
12d8c54e3dSSam Cramer  *
13d8c54e3dSSam Cramer  * When distributing Covered Code, include this CDDL HEADER in each
14d8c54e3dSSam Cramer  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15d8c54e3dSSam Cramer  * If applicable, add the following below this CDDL HEADER, with the
16d8c54e3dSSam Cramer  * fields enclosed by brackets "[]" replaced with your own identifying
17d8c54e3dSSam Cramer  * information: Portions Copyright [yyyy] [name of copyright owner]
18d8c54e3dSSam Cramer  *
19d8c54e3dSSam Cramer  * CDDL HEADER END
20d8c54e3dSSam Cramer  */
21d8c54e3dSSam Cramer 
22d8c54e3dSSam Cramer /*
23d8c54e3dSSam Cramer  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24d8c54e3dSSam Cramer  * Use is subject to license terms.
25d8c54e3dSSam Cramer  */
26d8c54e3dSSam Cramer 
27d8c54e3dSSam Cramer #pragma	D depends_on library net.d
28d8c54e3dSSam Cramer #pragma	D depends_on library scsi.d
29d8c54e3dSSam Cramer #pragma	D depends_on module genunix
30*072f7b95SSam Cramer #pragma	D depends_on module fct
31d8c54e3dSSam Cramer 
32d8c54e3dSSam Cramer /*
33d8c54e3dSSam Cramer  * FC port information.
34d8c54e3dSSam Cramer  */
35d8c54e3dSSam Cramer typedef struct fc_port_info {
36d8c54e3dSSam Cramer 	string fcp_node_wwn;		/* node WWN */
37d8c54e3dSSam Cramer 	string fcp_sym_node_name;	/* node symbolic name */
38d8c54e3dSSam Cramer 	string fcp_sym_port_name;	/* port symbolic name */
39d8c54e3dSSam Cramer 	uint32_t fcp_port_hard_address;	/* port hard address */
40d8c54e3dSSam Cramer } fc_port_info_t;
41d8c54e3dSSam Cramer 
42d8c54e3dSSam Cramer /*
43d8c54e3dSSam Cramer  * FC transfer info (somewhat analogous to iscsiinfo_t)
44d8c54e3dSSam Cramer  * Represents data transfer details.
45d8c54e3dSSam Cramer  */
46d8c54e3dSSam Cramer typedef struct fc_xferinfo {
47d8c54e3dSSam Cramer 	uint32_t fcx_len;
48d8c54e3dSSam Cramer 	uint32_t fcx_offset;
49d8c54e3dSSam Cramer 	uint16_t fcx_flags;	/* db_flags as defined in sys/stmf.h */
50d8c54e3dSSam Cramer } fc_xferinfo_t;
51d8c54e3dSSam Cramer 
52d8c54e3dSSam Cramer /*
53d8c54e3dSSam Cramer  * conninfo translators
54d8c54e3dSSam Cramer  */
55d8c54e3dSSam Cramer 
56d8c54e3dSSam Cramer /*
57d8c54e3dSSam Cramer  * Translator for conninfo, translating from the local port.
58d8c54e3dSSam Cramer  */
59d8c54e3dSSam Cramer #pragma D binding "1.5" translator
60d8c54e3dSSam Cramer translator conninfo_t < fct_local_port_t *P > {
61d8c54e3dSSam Cramer  	ci_local = P->port_pwwn_str[0] ?
62d8c54e3dSSam Cramer 	    P->port_pwwn_str : "<unknown>";
63d8c54e3dSSam Cramer  	ci_remote = "<unknown>";
64d8c54e3dSSam Cramer 	ci_protocol = "fc";
65d8c54e3dSSam Cramer };
66d8c54e3dSSam Cramer 
67d8c54e3dSSam Cramer /*
68d8c54e3dSSam Cramer  * Translator for conninfo, translating from the local port implementation.
69d8c54e3dSSam Cramer  */
70d8c54e3dSSam Cramer #pragma D binding "1.5" translator
71d8c54e3dSSam Cramer translator conninfo_t < fct_i_local_port_t *P > {
72d8c54e3dSSam Cramer  	ci_local = P->iport_port->port_pwwn_str[0] ?
73d8c54e3dSSam Cramer 		 P->iport_port->port_pwwn_str : "<unknown>";
74d8c54e3dSSam Cramer  	ci_remote = "<unknown>";
75d8c54e3dSSam Cramer 	ci_protocol = "fc";
76d8c54e3dSSam Cramer };
77d8c54e3dSSam Cramer 
78d8c54e3dSSam Cramer /*
79d8c54e3dSSam Cramer  * Translator for conninfo, translating from fct cmd struct.
80d8c54e3dSSam Cramer  */
81d8c54e3dSSam Cramer #pragma D binding "1.5" translator
82d8c54e3dSSam Cramer translator conninfo_t < fct_cmd_t *C > {
83d8c54e3dSSam Cramer  	ci_local = (C->cmd_port ?
84d8c54e3dSSam Cramer 		 (C->cmd_port->port_pwwn_str[0] ?
85d8c54e3dSSam Cramer 		  C->cmd_port->port_pwwn_str : "<unknown>") :
86d8c54e3dSSam Cramer 		 "<unknown>");
87d8c54e3dSSam Cramer 
88d8c54e3dSSam Cramer  	ci_remote = (C->cmd_rp ?
89d8c54e3dSSam Cramer 		 (C->cmd_rp->rp_pwwn_str[0] ?
90d8c54e3dSSam Cramer 		  C->cmd_rp->rp_pwwn_str : "<unknown>") :
91d8c54e3dSSam Cramer 		 "<unknown>");
92d8c54e3dSSam Cramer 
93d8c54e3dSSam Cramer 	ci_protocol = "fc";
94d8c54e3dSSam Cramer };
95d8c54e3dSSam Cramer 
96d8c54e3dSSam Cramer 
97d8c54e3dSSam Cramer /*
98d8c54e3dSSam Cramer  * fc_port_info_t translators.
99d8c54e3dSSam Cramer  */
100d8c54e3dSSam Cramer 
101d8c54e3dSSam Cramer /*
102d8c54e3dSSam Cramer  * Translator for fc_port_info_t, translating from the local port.
103d8c54e3dSSam Cramer  */
104d8c54e3dSSam Cramer #pragma D binding "1.5" translator
105d8c54e3dSSam Cramer translator fc_port_info_t < fct_local_port_t *P > {
106d8c54e3dSSam Cramer         /* node WWN */
107d8c54e3dSSam Cramer 	fcp_node_wwn = P->port_nwwn_str[0] ?
108d8c54e3dSSam Cramer 		     P->port_nwwn_str : "<unknown>";
109d8c54e3dSSam Cramer 
110d8c54e3dSSam Cramer 	/* node symbolic name */
111d8c54e3dSSam Cramer 	fcp_sym_node_name = P->port_sym_node_name ?
112d8c54e3dSSam Cramer 		P->port_sym_node_name : `utsname.nodename;
113d8c54e3dSSam Cramer 
114d8c54e3dSSam Cramer 	/* port symbolic name */
115d8c54e3dSSam Cramer 	fcp_sym_port_name = P->port_sym_port_name ?
116d8c54e3dSSam Cramer 			P->port_sym_port_name : "<unknown>";
117d8c54e3dSSam Cramer 
118d8c54e3dSSam Cramer 	/* port hard address */
119d8c54e3dSSam Cramer 	fcp_port_hard_address = P->port_hard_address;
120d8c54e3dSSam Cramer };
121d8c54e3dSSam Cramer 
122d8c54e3dSSam Cramer 
123d8c54e3dSSam Cramer /*
124d8c54e3dSSam Cramer  * Translator for fc_port_info_t, translating from the local port impl.
125d8c54e3dSSam Cramer  */
126d8c54e3dSSam Cramer #pragma D binding "1.5" translator
127d8c54e3dSSam Cramer translator fc_port_info_t < fct_i_local_port_t *P > {
128d8c54e3dSSam Cramer         /* node WWN */
129d8c54e3dSSam Cramer 
130d8c54e3dSSam Cramer 	fcp_node_wwn = (P->iport_port ?
131d8c54e3dSSam Cramer 			   (P->iport_port->port_nwwn_str[0] ?
132d8c54e3dSSam Cramer 		               P->iport_port->port_nwwn_str :
133d8c54e3dSSam Cramer 			       "<unknown>") :
134d8c54e3dSSam Cramer 		           "<bad iport_port ptr>");
135d8c54e3dSSam Cramer 
136d8c54e3dSSam Cramer 	fcp_sym_node_name =
137d8c54e3dSSam Cramer 			 (P->iport_port ?
138d8c54e3dSSam Cramer 			   (P->iport_port->port_sym_node_name ?
139d8c54e3dSSam Cramer 		            P->iport_port->port_sym_node_name : "<unknown>") :
140d8c54e3dSSam Cramer 		           "<bad iport_port ptr>");
141d8c54e3dSSam Cramer 
142d8c54e3dSSam Cramer 	fcp_sym_port_name =
143d8c54e3dSSam Cramer 			 (P->iport_port ?
144d8c54e3dSSam Cramer 			   (P->iport_port->port_sym_port_name ?
145d8c54e3dSSam Cramer 		            P->iport_port->port_sym_port_name : "<unknown>") :
146d8c54e3dSSam Cramer 		           "<bad iport_port ptr>");
147d8c54e3dSSam Cramer 
148d8c54e3dSSam Cramer 	fcp_port_hard_address =
149d8c54e3dSSam Cramer 			 (P->iport_port ?
150d8c54e3dSSam Cramer 			   P->iport_port->port_hard_address : 0);
151d8c54e3dSSam Cramer };
152d8c54e3dSSam Cramer 
153d8c54e3dSSam Cramer /*
154d8c54e3dSSam Cramer  * Translator for fc_port_info, translating from the remote port impl
155d8c54e3dSSam Cramer  */
156d8c54e3dSSam Cramer #pragma D binding "1.5" translator
157d8c54e3dSSam Cramer translator fc_port_info_t < fct_i_remote_port_t *P > {
158d8c54e3dSSam Cramer 
159d8c54e3dSSam Cramer         /* node WWN */
160d8c54e3dSSam Cramer 	fcp_node_wwn = P->irp_rp ?
161d8c54e3dSSam Cramer 			   (P->irp_rp->rp_nwwn_str[0] ?
162d8c54e3dSSam Cramer 			     P->irp_rp->rp_nwwn_str : "<unknown>") :
163d8c54e3dSSam Cramer                            "<unknown>";
164d8c54e3dSSam Cramer 
165d8c54e3dSSam Cramer 	/* node symbolic name */
166d8c54e3dSSam Cramer 	fcp_sym_node_name = P->irp_snn ? P->irp_snn : "<unknown>";
167d8c54e3dSSam Cramer 
168d8c54e3dSSam Cramer 	/* port symbolic name */
169d8c54e3dSSam Cramer 	fcp_sym_port_name = P->irp_spn ? P->irp_spn : "<unknown>";
170d8c54e3dSSam Cramer 
171d8c54e3dSSam Cramer 	/* port hard address */
172d8c54e3dSSam Cramer 	fcp_port_hard_address = P->irp_rp ? P->irp_rp->rp_id : 0;
173d8c54e3dSSam Cramer };
174d8c54e3dSSam Cramer 
175d8c54e3dSSam Cramer /*
176d8c54e3dSSam Cramer  * Translator for fc_xferinfo, translating from stmf_data_buf_t.
177d8c54e3dSSam Cramer  */
178d8c54e3dSSam Cramer #pragma D binding "1.5" translator
179d8c54e3dSSam Cramer translator fc_xferinfo_t < stmf_data_buf_t *B > {
180d8c54e3dSSam Cramer 	   fcx_len = B->db_data_size;
181d8c54e3dSSam Cramer 	   fcx_offset = B->db_relative_offset;
182d8c54e3dSSam Cramer 	   fcx_flags = B->db_flags;
183d8c54e3dSSam Cramer };
184