1c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#ifndef TARGET_CORE_PSCSI_H 2c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define TARGET_CORE_PSCSI_H 3c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 4c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PSCSI_VERSION "v4.0" 5c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 6c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger/* used in pscsi_find_alloc_len() */ 7c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#ifndef INQUIRY_DATA_SIZE 8c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define INQUIRY_DATA_SIZE 0x24 9c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#endif 10c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 11c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger/* used in pscsi_add_device_to_list() */ 12c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PSCSI_DEFAULT_QUEUEDEPTH 1 13c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 14c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PS_RETRY 5 15c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PS_TIMEOUT_DISK (15*HZ) 16c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PS_TIMEOUT_OTHER (500*HZ) 17c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 18c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#include <linux/device.h> 19c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#include <scsi/scsi_driver.h> 20c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#include <scsi/scsi_device.h> 21c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#include <linux/kref.h> 22c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#include <linux/kobject.h> 23c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 24c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellingerstruct pscsi_plugin_task { 25c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger unsigned char pscsi_sense[SCSI_SENSE_BUFFERSIZE]; 26c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pscsi_direction; 27c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pscsi_result; 28c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger u32 pscsi_resid; 296708bb27bb2703da238f21f516034263348af5beAndy Grover unsigned char pscsi_cdb[0]; 30c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger} ____cacheline_aligned; 31c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 32c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_CHANNEL_ID 0x01 33c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_TARGET_ID 0x02 34c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_LUN_ID 0x04 35c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_VPD_UNIT_SERIAL 0x08 36c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_VPD_DEV_IDENT 0x10 37c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#define PDF_HAS_VIRT_HOST_ID 0x20 38c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 39c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellingerstruct pscsi_dev_virt { 400fd97ccf45be26fb01b3a412f1f6c6b5044b2f16Christoph Hellwig struct se_device dev; 41c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pdv_flags; 42c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pdv_host_id; 43c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pdv_channel_id; 44c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pdv_target_id; 45c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int pdv_lun_id; 46c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger struct block_device *pdv_bd; 47c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger struct scsi_device *pdv_sd; 48c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger} ____cacheline_aligned; 49c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 50c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellingertypedef enum phv_modes { 51e6a8a41a30489bcb775b505f75bced550aeaa4f1Stefan Hajnoczi PHV_VIRTUAL_HOST_ID, 52c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger PHV_LLD_SCSI_HOST_NO 53c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger} phv_modes_t; 54c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 55c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellingerstruct pscsi_hba_virt { 56c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger int phv_host_id; 57c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger phv_modes_t phv_mode; 58c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger struct Scsi_Host *phv_lld_host; 59c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger} ____cacheline_aligned; 60c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger 61c66ac9db8d4ad9994a02b3e933ea2ccc643e1fe5Nicholas Bellinger#endif /*** TARGET_CORE_PSCSI_H ***/ 62