b1dd958f54f8bfa984d306bb8ca8264855761d7bcth/*
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * CDDL HEADER START
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth *
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * The contents of this file are subject to the terms of the
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * Common Development and Distribution License, Version 1.0 only
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * (the "License"). You may not use this file except in compliance
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * with the License.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth *
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * or http://www.opensolaris.org/os/licensing.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * See the License for the specific language governing permissions
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * and limitations under the License.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth *
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * When distributing Covered Code, include this CDDL HEADER in each
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * If applicable, add the following below this CDDL HEADER, with the
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * fields enclosed by brackets "[]" replaced with your own identifying
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * information: Portions Copyright [yyyy] [name of copyright owner]
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth *
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * CDDL HEADER END
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth/*
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * Use is subject to license terms.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#ifndef _SYS_SCSI_ADAPTERS_EMUL64CMD_H
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define _SYS_SCSI_ADAPTERS_EMUL64CMD_H
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#pragma ident "%Z%%M% %I% %E% SMI"
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#include <sys/scsi/scsi_types.h>
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#ifdef __cplusplus
b1dd958f54f8bfa984d306bb8ca8264855761d7bcthextern "C" {
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#endif
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define PKT2CMD(pkt) ((struct emul64_cmd *)(pkt)->pkt_ha_private)
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CMD2PKT(sp) ((sp)->cmd_pkt)
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth/*
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * Per-command EMUL64 private data
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth *
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * - Allocated at same time as scsi_pkt by scsi_hba_pkt_alloc(9E)
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * - Pointed to by pkt_ha_private field in scsi_pkt
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcthstruct emul64_cmd {
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth struct scsi_pkt *cmd_pkt; /* scsi_pkt reference */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth struct emul64_cmd *cmd_forw; /* queue link */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth unsigned char *cmd_addr; /* b_un.b_addr */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth clock_t cmd_deadline; /* cmd completion time */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth uint32_t cmd_flags; /* private flags */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth uint32_t cmd_count; /* b_bcount */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth uint_t cmd_cdblen; /* length of cdb */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth uint_t cmd_scblen; /* length of scb */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth struct emul64 *cmd_emul64;
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth};
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth/*
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth * These are the defined flags for this structure.
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_FINISHED 0x0001 /* command completed */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_COMPLETED 0x0002 /* completion routine called */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_IN_TRANSPORT 0x0004 /* in use by emul64 driver */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_TRANFLAG 0x000f /* transport part of flags */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_DMAVALID 0x0010 /* dma mapping valid */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_DMASEND 0x0020 /* data is going 'out' */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_CMDIOPB 0x0040 /* this is an 'iopb' packet */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_FREE 0x0080 /* packet is on free list */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#define CFLAG_DMA_PARTIAL 0x0100 /* partial xfer OK */
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#ifdef __cplusplus
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth}
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#endif
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth
b1dd958f54f8bfa984d306bb8ca8264855761d7bcth#endif /* _SYS_SCSI_ADAPTERS_EMUL64CMD_H */