xref: /onnv-gate/usr/src/lib/libdtrace/common/srp.d (revision 9881:741c9e4e094c)
19829SCharles.Ting@Sun.COM /*
29829SCharles.Ting@Sun.COM  * CDDL HEADER START
39829SCharles.Ting@Sun.COM  *
49829SCharles.Ting@Sun.COM  * The contents of this file are subject to the terms of the
59829SCharles.Ting@Sun.COM  * Common Development and Distribution License (the "License").
69829SCharles.Ting@Sun.COM  * You may not use this file except in compliance with the License.
79829SCharles.Ting@Sun.COM  *
89829SCharles.Ting@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
99829SCharles.Ting@Sun.COM  * or http://www.opensolaris.org/os/licensing.
109829SCharles.Ting@Sun.COM  * See the License for the specific language governing permissions
119829SCharles.Ting@Sun.COM  * and limitations under the License.
129829SCharles.Ting@Sun.COM  *
139829SCharles.Ting@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
149829SCharles.Ting@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
159829SCharles.Ting@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
169829SCharles.Ting@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
179829SCharles.Ting@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
189829SCharles.Ting@Sun.COM  *
199829SCharles.Ting@Sun.COM  * CDDL HEADER END
209829SCharles.Ting@Sun.COM  */
219829SCharles.Ting@Sun.COM 
229829SCharles.Ting@Sun.COM /*
239829SCharles.Ting@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
249829SCharles.Ting@Sun.COM  * Use is subject to license terms.
259829SCharles.Ting@Sun.COM  */
269829SCharles.Ting@Sun.COM 
279829SCharles.Ting@Sun.COM #pragma	D depends_on library net.d
289829SCharles.Ting@Sun.COM #pragma D depends_on library scsi.d
299829SCharles.Ting@Sun.COM #pragma D depends_on module genunix
309829SCharles.Ting@Sun.COM #pragma	D depends_on module srpt
319829SCharles.Ting@Sun.COM 
329829SCharles.Ting@Sun.COM typedef struct srp_portinfo {
339829SCharles.Ting@Sun.COM 	/* initiator */
349829SCharles.Ting@Sun.COM 	string  pi_initiator;	/* Initiator: eui.xxxxxxxxxxxxxxx */
359829SCharles.Ting@Sun.COM 	string	pi_i_sid;	/* Initiator session id */
369829SCharles.Ting@Sun.COM 
379829SCharles.Ting@Sun.COM 	/* target */
389829SCharles.Ting@Sun.COM 	string	pi_target;	/* Target: eui.xxxxxxxxxxxxxxx */
399829SCharles.Ting@Sun.COM 	string  pi_t_sid;	/* Target session id */
409829SCharles.Ting@Sun.COM 
419829SCharles.Ting@Sun.COM 	uintptr_t pi_chan_id;	/* Channel identifier */
429829SCharles.Ting@Sun.COM } srp_portinfo_t;
439829SCharles.Ting@Sun.COM 
449829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
459829SCharles.Ting@Sun.COM translator conninfo_t < srpt_session_t *P > {
469829SCharles.Ting@Sun.COM 	ci_local = P->ss_t_gid;
479829SCharles.Ting@Sun.COM 	ci_remote = P->ss_i_gid;
489829SCharles.Ting@Sun.COM 	ci_protocol = "ib";
499829SCharles.Ting@Sun.COM };
509829SCharles.Ting@Sun.COM 
519829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
529829SCharles.Ting@Sun.COM translator srp_portinfo_t < srpt_session_t *P > {
539829SCharles.Ting@Sun.COM 	pi_initiator = P->ss_i_name;
549829SCharles.Ting@Sun.COM 	pi_i_sid = P->ss_i_alias;
559829SCharles.Ting@Sun.COM 	pi_target = P->ss_t_name;
569829SCharles.Ting@Sun.COM 	pi_t_sid = P->ss_t_alias;
579829SCharles.Ting@Sun.COM 	pi_chan_id = 0;
589829SCharles.Ting@Sun.COM };
599829SCharles.Ting@Sun.COM 
609829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
619829SCharles.Ting@Sun.COM translator conninfo_t < srpt_channel_t *P > {
629829SCharles.Ting@Sun.COM 	ci_local = P->ch_session->ss_i_gid;
639829SCharles.Ting@Sun.COM 	ci_remote = P->ch_session->ss_t_gid;
649829SCharles.Ting@Sun.COM };
659829SCharles.Ting@Sun.COM 
669829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
679829SCharles.Ting@Sun.COM translator srp_portinfo_t < srpt_channel_t *P > {
689829SCharles.Ting@Sun.COM 	pi_initiator = P->ch_session->ss_i_name;
699829SCharles.Ting@Sun.COM 	pi_i_sid = P->ch_session->ss_i_alias;
709829SCharles.Ting@Sun.COM 	pi_target = P->ch_session->ss_t_name;
719829SCharles.Ting@Sun.COM 	pi_t_sid = P->ch_session->ss_t_alias;
72*9881SCharles.Ting@Sun.COM 	pi_chan_id = (uintptr_t)P->ch_chan_hdl;
739829SCharles.Ting@Sun.COM };
749829SCharles.Ting@Sun.COM 
759829SCharles.Ting@Sun.COM typedef struct srp_logininfo {
769829SCharles.Ting@Sun.COM 	uint64_t li_task_tag;	   /* SRP task tag */
779829SCharles.Ting@Sun.COM 	uint32_t li_max_it_iu_len; /* Maximum iu length that initiator can
789829SCharles.Ting@Sun.COM 				      send to target */
799829SCharles.Ting@Sun.COM 	uint32_t li_max_ti_iu_len; /* Maximum iu length that target can
809829SCharles.Ting@Sun.COM 				      send to initiator */
819829SCharles.Ting@Sun.COM 	uint32_t li_request_limit; /* Maximun number of SRP requests
829829SCharles.Ting@Sun.COM 				      that initiator can send on a channel */
839829SCharles.Ting@Sun.COM 	uint32_t li_reason_code;   /* Reason code */
849829SCharles.Ting@Sun.COM } srp_logininfo_t;
859829SCharles.Ting@Sun.COM 
869829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
879829SCharles.Ting@Sun.COM translator srp_logininfo_t < srp_login_req_t *P > {
889829SCharles.Ting@Sun.COM 	li_task_tag = P->lreq_tag;
899829SCharles.Ting@Sun.COM 	li_max_it_iu_len = ntohl(P->lreq_req_it_iu_len);
909829SCharles.Ting@Sun.COM 	li_max_ti_iu_len = 0;
919829SCharles.Ting@Sun.COM 	li_request_limit = 0;
929829SCharles.Ting@Sun.COM 	li_reason_code = 0;
939829SCharles.Ting@Sun.COM };
949829SCharles.Ting@Sun.COM 
959829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
969829SCharles.Ting@Sun.COM translator srp_logininfo_t < srp_login_rsp_t *P > {
979829SCharles.Ting@Sun.COM 	li_task_tag = P->lrsp_tag;
989829SCharles.Ting@Sun.COM 	li_max_it_iu_len = ntohl(P->lrsp_max_it_iu_len);
999829SCharles.Ting@Sun.COM 	li_max_ti_iu_len = ntohl(P->lrsp_max_ti_iu_len);
1009829SCharles.Ting@Sun.COM 	li_request_limit = ntohl(P->lrsp_req_limit_delta);
101*9881SCharles.Ting@Sun.COM 	li_reason_code = ntohl(((srp_login_rej_t *)arg2)->lrej_reason);
1029829SCharles.Ting@Sun.COM };
1039829SCharles.Ting@Sun.COM 
1049829SCharles.Ting@Sun.COM typedef struct srp_taskinfo {
1059829SCharles.Ting@Sun.COM 	uint64_t ti_task_tag;	/* SRP task tag */
1069829SCharles.Ting@Sun.COM 	uint64_t ti_lun;	/* Target logical unit number */
1079829SCharles.Ting@Sun.COM 	uint8_t  ti_function;	/* Task management function */
1089829SCharles.Ting@Sun.COM 	uint32_t ti_req_limit_delta; /* Increment of channel's request limit */
1099829SCharles.Ting@Sun.COM 	uint8_t  ti_flag;	     /* bit 2: DOOVER */
1109829SCharles.Ting@Sun.COM 	                             /* bit 3: DOUNDER */
1119829SCharles.Ting@Sun.COM 	                             /* bit 4: DIOVER */
1129829SCharles.Ting@Sun.COM 	                             /* bit 5: DIUNDER */
1139829SCharles.Ting@Sun.COM 	uint32_t ti_do_resid_cnt;    /* Data-out residual count */
1149829SCharles.Ting@Sun.COM 	uint32_t ti_di_resid_cnt;    /* Data-in residual count */
1159829SCharles.Ting@Sun.COM 	uint8_t  ti_status;     /* Status of this task */
1169829SCharles.Ting@Sun.COM } srp_taskinfo_t;
1179829SCharles.Ting@Sun.COM 
1189829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
1199829SCharles.Ting@Sun.COM translator srp_taskinfo_t < srp_cmd_req_t *P > {
1209829SCharles.Ting@Sun.COM 	ti_task_tag = P->cr_tag;
121*9881SCharles.Ting@Sun.COM 	ti_lun = (ntohl(*((uint32_t *)P->cr_lun)) << 32) +
1229829SCharles.Ting@Sun.COM 	    ntohl(*((uint32_t *)&P->cr_lun[4]));
1239829SCharles.Ting@Sun.COM 	ti_function = P->cr_type == 1 ?  /* 1: MGMT CMD 2: SRP CMD */
1249829SCharles.Ting@Sun.COM 	    ((srp_tsk_mgmt_t *)P)->tm_function : 0;
1259829SCharles.Ting@Sun.COM 	ti_req_limit_delta = 0;
1269829SCharles.Ting@Sun.COM 	ti_flag = 0;
1279829SCharles.Ting@Sun.COM 	ti_do_resid_cnt = 0;
1289829SCharles.Ting@Sun.COM 	ti_di_resid_cnt = 0;
1299829SCharles.Ting@Sun.COM 	ti_status = 0;
1309829SCharles.Ting@Sun.COM };
1319829SCharles.Ting@Sun.COM 
1329829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
1339829SCharles.Ting@Sun.COM translator srp_taskinfo_t < srp_rsp_t *P > {
1349829SCharles.Ting@Sun.COM 	ti_task_tag = P->rsp_tag;
135*9881SCharles.Ting@Sun.COM 	ti_lun = ntohll(*(uint64_t *)((scsi_task_t *)arg2)->task_lun_no);
136*9881SCharles.Ting@Sun.COM 	ti_function = ((scsi_task_t *)arg2)->task_mgmt_function;
1379829SCharles.Ting@Sun.COM 	ti_req_limit_delta = ntohl(P->rsp_req_limit_delta);
1389829SCharles.Ting@Sun.COM 	ti_flag = P->rsp_flags;
1399829SCharles.Ting@Sun.COM 	ti_do_resid_cnt = ntohl(P->rsp_do_resid_cnt);
1409829SCharles.Ting@Sun.COM 	ti_di_resid_cnt = ntohl(P->rsp_di_resid_cnt);
1419829SCharles.Ting@Sun.COM 	ti_status = arg3;
1429829SCharles.Ting@Sun.COM };
1439829SCharles.Ting@Sun.COM 
1449829SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
145*9881SCharles.Ting@Sun.COM translator srp_taskinfo_t < srpt_iu_t *P > {
146*9881SCharles.Ting@Sun.COM 	ti_task_tag = P->iu_tag;
147*9881SCharles.Ting@Sun.COM 	ti_lun = ntohll(*(uint64_t *)P->iu_stmf_task->task_lun_no);
148*9881SCharles.Ting@Sun.COM 	ti_function = 0;
149*9881SCharles.Ting@Sun.COM 	ti_req_limit_delta = 0;
150*9881SCharles.Ting@Sun.COM 	ti_flag = 0;
151*9881SCharles.Ting@Sun.COM 	ti_do_resid_cnt = 0;
152*9881SCharles.Ting@Sun.COM 	ti_di_resid_cnt = 0;
153*9881SCharles.Ting@Sun.COM 	ti_status = 0;
154*9881SCharles.Ting@Sun.COM };
155*9881SCharles.Ting@Sun.COM 
156*9881SCharles.Ting@Sun.COM #pragma D binding "1.5" translator
1579829SCharles.Ting@Sun.COM translator xferinfo_t < ibt_wr_ds_t *P > {
1589829SCharles.Ting@Sun.COM 	xfer_laddr = P->ds_va + arg4;
1599829SCharles.Ting@Sun.COM 	xfer_lkey = P->ds_key;
160*9881SCharles.Ting@Sun.COM 	xfer_raddr = (arg3 == 0) ? 0 :
161*9881SCharles.Ting@Sun.COM 	    ((ibt_send_wr_t *)arg3)->wr.rc.rcwr.rdma.rdma_raddr;
162*9881SCharles.Ting@Sun.COM 	xfer_rkey = (arg3 == 0) ? 0 :
163*9881SCharles.Ting@Sun.COM 	    ((ibt_send_wr_t *)arg3)->wr.rc.rcwr.rdma.rdma_rkey;
164*9881SCharles.Ting@Sun.COM 	xfer_len = arg4;
165*9881SCharles.Ting@Sun.COM 	xfer_loffset = arg5;
166*9881SCharles.Ting@Sun.COM 	xfer_roffset = arg6;
167*9881SCharles.Ting@Sun.COM 	xfer_type = arg7;
1689829SCharles.Ting@Sun.COM };
169