11bdd6c0eSSue Gleeson /*
21bdd6c0eSSue Gleeson  * CDDL HEADER START
31bdd6c0eSSue Gleeson  *
41bdd6c0eSSue Gleeson  * The contents of this file are subject to the terms of the
51bdd6c0eSSue Gleeson  * Common Development and Distribution License (the "License").
61bdd6c0eSSue Gleeson  * You may not use this file except in compliance with the License.
71bdd6c0eSSue Gleeson  *
81bdd6c0eSSue Gleeson  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
91bdd6c0eSSue Gleeson  * or http://www.opensolaris.org/os/licensing.
101bdd6c0eSSue Gleeson  * See the License for the specific language governing permissions
111bdd6c0eSSue Gleeson  * and limitations under the License.
121bdd6c0eSSue Gleeson  *
131bdd6c0eSSue Gleeson  * When distributing Covered Code, include this CDDL HEADER in each
141bdd6c0eSSue Gleeson  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
151bdd6c0eSSue Gleeson  * If applicable, add the following below this CDDL HEADER, with the
161bdd6c0eSSue Gleeson  * fields enclosed by brackets "[]" replaced with your own identifying
171bdd6c0eSSue Gleeson  * information: Portions Copyright [yyyy] [name of copyright owner]
181bdd6c0eSSue Gleeson  *
191bdd6c0eSSue Gleeson  * CDDL HEADER END
201bdd6c0eSSue Gleeson  */
211bdd6c0eSSue Gleeson 
221bdd6c0eSSue Gleeson /*
23*c3a558e7SSue Gleeson  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
241bdd6c0eSSue Gleeson  */
251bdd6c0eSSue Gleeson 
261bdd6c0eSSue Gleeson #ifndef _SRPT_STP_H
271bdd6c0eSSue Gleeson #define	_SRPT_STP_H
281bdd6c0eSSue Gleeson 
291bdd6c0eSSue Gleeson /*
301bdd6c0eSSue Gleeson  * Prototypes and data structures providing the SRP SCSI
311bdd6c0eSSue Gleeson  * target port COMSTAR port provider function.
321bdd6c0eSSue Gleeson  */
331bdd6c0eSSue Gleeson 
341bdd6c0eSSue Gleeson #ifdef	__cplusplus
351bdd6c0eSSue Gleeson extern "C" {
361bdd6c0eSSue Gleeson #endif
371bdd6c0eSSue Gleeson 
381bdd6c0eSSue Gleeson /*
391bdd6c0eSSue Gleeson  * Prototypes
401bdd6c0eSSue Gleeson  */
411bdd6c0eSSue Gleeson int srpt_stp_start_srp(srpt_target_port_t *tgt);
421bdd6c0eSSue Gleeson void srpt_stp_stop_srp(srpt_target_port_t *tgt);
431bdd6c0eSSue Gleeson srpt_target_port_t *srpt_stp_alloc_port(srpt_ioc_t *ioc, ib_guid_t guid);
441bdd6c0eSSue Gleeson stmf_status_t srpt_stp_free_port(srpt_target_port_t *tgt);
45*c3a558e7SSue Gleeson stmf_status_t srpt_stp_destroy_port(srpt_target_port_t *tgt);
461bdd6c0eSSue Gleeson 
471bdd6c0eSSue Gleeson srpt_session_t *srpt_stp_alloc_session(srpt_target_port_t *tgt,
48191c289bSCharles Ting 	uint8_t *i_id, uint8_t *t_id, uint8_t port,
49191c289bSCharles Ting 	char *local_gid, char *remote_gid);
501bdd6c0eSSue Gleeson void srpt_stp_free_session(srpt_session_t *session);
511bdd6c0eSSue Gleeson 
521bdd6c0eSSue Gleeson srpt_channel_t *srpt_stp_login(srpt_target_port_t *tgt,
531bdd6c0eSSue Gleeson 	srp_login_req_t *login, srp_login_rsp_t *login_rsp,
54191c289bSCharles Ting 	srp_login_rej_t *login_rej, uint8_t login_port,
55191c289bSCharles Ting 	char *local_gid, char *remote_gid);
561bdd6c0eSSue Gleeson 
571bdd6c0eSSue Gleeson void srpt_stp_logout(srpt_channel_t *ch);
581bdd6c0eSSue Gleeson 
591bdd6c0eSSue Gleeson stmf_status_t srpt_stp_send_status(struct scsi_task *task,
601bdd6c0eSSue Gleeson 	uint32_t ioflags);
611bdd6c0eSSue Gleeson 
621bdd6c0eSSue Gleeson ibt_status_t srpt_stp_send_response(srpt_iu_t *iu, uint8_t scsi_status,
631bdd6c0eSSue Gleeson 	uint8_t flags, uint32_t resid, uint16_t sense_length,
641bdd6c0eSSue Gleeson 	uint8_t *sense_data, uint_t fence);
651bdd6c0eSSue Gleeson ibt_status_t srpt_stp_send_mgmt_response(srpt_iu_t *iu, uint8_t srp_rsp,
661bdd6c0eSSue Gleeson 	uint_t fence);
671bdd6c0eSSue Gleeson void srpt_stp_add_task(srpt_session_t *session, srpt_iu_t *iu);
681bdd6c0eSSue Gleeson void srpt_stp_remove_task(srpt_session_t *session, srpt_iu_t *iu);
691bdd6c0eSSue Gleeson 
701bdd6c0eSSue Gleeson uint64_t srpt_stp_u8array2u64(uint8_t *array);
711bdd6c0eSSue Gleeson 
721bdd6c0eSSue Gleeson #ifdef	__cplusplus
731bdd6c0eSSue Gleeson }
741bdd6c0eSSue Gleeson #endif
751bdd6c0eSSue Gleeson 
761bdd6c0eSSue Gleeson #endif /* _SRPT_STP_H */
77