1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson/*
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * CDDL HEADER START
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson *
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The contents of this file are subject to the terms of the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Common Development and Distribution License (the "License").
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * You may not use this file except in compliance with the License.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson *
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * or http://www.opensolaris.org/os/licensing.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * See the License for the specific language governing permissions
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * and limitations under the License.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson *
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * When distributing Covered Code, include this CDDL HEADER in each
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * If applicable, add the following below this CDDL HEADER, with the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * fields enclosed by brackets "[]" replaced with your own identifying
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * information: Portions Copyright [yyyy] [name of copyright owner]
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson *
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * CDDL HEADER END
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#ifndef _SRPT_STP_H
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#define _SRPT_STP_H
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson/*
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Prototypes and data structures providing the SRP SCSI
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * target port COMSTAR port provider function.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#ifdef __cplusplus
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonextern "C" {
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#endif
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson/*
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Prototypes
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonint srpt_stp_start_srp(srpt_target_port_t *tgt);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonvoid srpt_stp_stop_srp(srpt_target_port_t *tgt);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonsrpt_target_port_t *srpt_stp_alloc_port(srpt_ioc_t *ioc, ib_guid_t guid);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonstmf_status_t srpt_stp_free_port(srpt_target_port_t *tgt);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonstmf_status_t srpt_stp_destroy_port(srpt_target_port_t *tgt);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonsrpt_session_t *srpt_stp_alloc_session(srpt_target_port_t *tgt,
191c289b86668766245f78ec1f87557319bc46a1Charles Ting uint8_t *i_id, uint8_t *t_id, uint8_t port,
191c289b86668766245f78ec1f87557319bc46a1Charles Ting char *local_gid, char *remote_gid);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonvoid srpt_stp_free_session(srpt_session_t *session);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonsrpt_channel_t *srpt_stp_login(srpt_target_port_t *tgt,
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson srp_login_req_t *login, srp_login_rsp_t *login_rsp,
191c289b86668766245f78ec1f87557319bc46a1Charles Ting srp_login_rej_t *login_rej, uint8_t login_port,
191c289b86668766245f78ec1f87557319bc46a1Charles Ting char *local_gid, char *remote_gid);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonvoid srpt_stp_logout(srpt_channel_t *ch);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonstmf_status_t srpt_stp_send_status(struct scsi_task *task,
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson uint32_t ioflags);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonibt_status_t srpt_stp_send_response(srpt_iu_t *iu, uint8_t scsi_status,
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson uint8_t flags, uint32_t resid, uint16_t sense_length,
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson uint8_t *sense_data, uint_t fence);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonibt_status_t srpt_stp_send_mgmt_response(srpt_iu_t *iu, uint8_t srp_rsp,
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson uint_t fence);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonvoid srpt_stp_add_task(srpt_session_t *session, srpt_iu_t *iu);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonvoid srpt_stp_remove_task(srpt_session_t *session, srpt_iu_t *iu);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonuint64_t srpt_stp_u8array2u64(uint8_t *array);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#ifdef __cplusplus
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson}
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#endif
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#endif /* _SRPT_STP_H */