Commit | Line | Data |
---|---|---|
3703b2c5 NB |
1 | #define TCM_LOOP_VERSION "v2.1-rc1" |
2 | #define TL_WWN_ADDR_LEN 256 | |
3 | #define TL_TPGS_PER_HBA 32 | |
4 | /* | |
5 | * Defaults for struct scsi_host_template tcm_loop_driver_template | |
6 | * | |
7 | * We use large can_queue and cmd_per_lun here and let TCM enforce | |
8 | * the underlying se_device_t->queue_depth. | |
9 | */ | |
10 | #define TL_SCSI_CAN_QUEUE 1024 | |
11 | #define TL_SCSI_CMD_PER_LUN 1024 | |
12 | #define TL_SCSI_MAX_SECTORS 1024 | |
13 | #define TL_SCSI_SG_TABLESIZE 256 | |
14 | /* | |
15 | * Used in tcm_loop_driver_probe() for struct Scsi_Host->max_cmd_len | |
16 | */ | |
17 | #define TL_SCSI_MAX_CMD_LEN 32 | |
18 | ||
3703b2c5 NB |
19 | struct tcm_loop_cmd { |
20 | /* State of Linux/SCSI CDB+Data descriptor */ | |
21 | u32 sc_cmd_state; | |
22 | /* Pointer to the CDB+Data descriptor from Linux/SCSI subsystem */ | |
23 | struct scsi_cmnd *sc; | |
24 | struct list_head *tl_cmd_list; | |
25 | /* The TCM I/O descriptor that is accessed via container_of() */ | |
26 | struct se_cmd tl_se_cmd; | |
27 | /* Sense buffer that will be mapped into outgoing status */ | |
28 | unsigned char tl_sense_buf[TRANSPORT_SENSE_BUFFER]; | |
29 | }; | |
30 | ||
31 | struct tcm_loop_tmr { | |
32 | atomic_t tmr_complete; | |
33 | wait_queue_head_t tl_tmr_wait; | |
34 | }; | |
35 | ||
36 | struct tcm_loop_nexus { | |
37 | int it_nexus_active; | |
38 | /* | |
39 | * Pointer to Linux/SCSI HBA from linux/include/scsi_host.h | |
40 | */ | |
41 | struct scsi_host *sh; | |
42 | /* | |
43 | * Pointer to TCM session for I_T Nexus | |
44 | */ | |
45 | struct se_session *se_sess; | |
46 | }; | |
47 | ||
48 | struct tcm_loop_nacl { | |
49 | struct se_node_acl se_node_acl; | |
50 | }; | |
51 | ||
52 | struct tcm_loop_tpg { | |
53 | unsigned short tl_tpgt; | |
54 | atomic_t tl_tpg_port_count; | |
55 | struct se_portal_group tl_se_tpg; | |
56 | struct tcm_loop_hba *tl_hba; | |
57 | }; | |
58 | ||
59 | struct tcm_loop_hba { | |
60 | u8 tl_proto_id; | |
61 | unsigned char tl_wwn_address[TL_WWN_ADDR_LEN]; | |
62 | struct se_hba_s *se_hba; | |
63 | struct se_lun *tl_hba_lun; | |
64 | struct se_port *tl_hba_lun_sep; | |
65 | struct se_device_s *se_dev_hba_ptr; | |
66 | struct tcm_loop_nexus *tl_nexus; | |
67 | struct device dev; | |
68 | struct Scsi_Host *sh; | |
69 | struct tcm_loop_tpg tl_hba_tpgs[TL_TPGS_PER_HBA]; | |
70 | struct se_wwn tl_hba_wwn; | |
71 | }; |