OneCore⢠Storage SDK Release 11.2
User Space iSCSI Target RAMD Driver (Uspace ocs_iscsi_ramd)
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
ocs_scsi_ini.h
Go to the documentation of this file.
1
/**
2
* Copyright (C) 2013,2014 Emulex
3
* All rights reserved.
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License version 2
7
* as published by the Free Software Foundation. The full GNU General
8
* Public License can be found at <http://www.gnu.org/licenses/>.
9
*
10
* Written by: Chris Moore (chris.moore@emulex.com)
11
*
12
* Emulex
13
* 3333 Susan Street
14
* Costa Mesa, CA 92626
15
*/
16
17
18
/**
19
* @file
20
* OCS SCSI Open-iSCSI include file
21
*/
22
#if !defined(__OCS_SCSI_INI_H__)
23
#define __OCS_SCSI_INI_H__
24
25
#define OCS_INCLUDE_OPEN_ISCSI
26
27
#include <scsi/scsi_host.h>
28
#include <scsi/scsi_netlink.h>
29
#include <scsi/scsi_transport_iscsi.h>
30
#include "
ocs_scsi.h
"
31
#include "ocs_ini_template.h"
32
33
#define OCS_NL_VENDOR_ID (SCSI_NL_VID_TYPE_PCI | PCI_VENDOR_EMULEX)
34
#define OCS_DEFAULT_SG_SEG_CNT 64
/* sg element count per scsi cmnd */
35
#define OCS_CMD_PER_LUN 32
/* max outstanding cmds per lun */
36
#define OCS_BHS_ALLOC_SIZE 128
37
38
39
typedef
struct
ocs_conn_s
ocs_conn_t;
40
41
typedef
enum
{
42
OCS_IO_TASK_STATE_INIT
,
43
OCS_IO_TASK_STATE_IN_CHIP
,
44
OCS_IO_TASK_STATE_CLEANUP
,
45
OCS_IO_TASK_STATE_FREE
,
46
}
ocs_io_task_state_e
;
47
48
49
typedef
struct
{
50
//ocs_t *ocs;
51
struct
iscsi_endpoint *
openiscsi_ep
;
52
ocs_cxn_t *
cxn
;
53
ocs_conn_t *
ocs_conn
;
54
}
ocs_ep_t
;
55
56
struct
ocs_conn_s
{
57
ocs_ep_t
*
ocs_ep
;
58
struct
iscsi_conn *
conn
;
59
ocs_session_t *
ocs_sess
;
60
};
61
62
typedef
struct
ocs_io_task_s {
63
ocs_io_task_state_e
task_state
;
64
ocs_io_t *
io
;
65
struct
scsi_cmnd *
scsi_cmnd
;
66
struct
iscsi_task *
task
;
67
uint32_t
original_itt
;
68
}
ocs_io_task_t
;
69
70
typedef
struct
ocs_rport_data_s {
71
}
ocs_rport_data_t
;
72
73
typedef
struct
{
74
}
ocs_scsi_ini_domain_t
;
75
76
typedef
struct
{
77
}
ocs_scsi_ini_sport_t
;
78
79
/* Note: The ocs_scsi_ini_t is stored in the ocs structure.
80
The ocs structure we work with is the one we get
81
when we call ocs_get_instance(), which is created by the
82
driver we're hooking in to (ocs_iscsi_ramd). Because of
83
that, the definition here of ocs_scsi_ini_t must be the
84
same as the one for ocs_iscsi_ramd. */
85
typedef
struct
ocs_scsi_ini_s {
86
struct
Scsi_Host *
shost
;
87
ocs_scsi_ini_template_t
ini_template
;
88
}
ocs_scsi_ini_t
;
89
90
typedef
struct
{
91
struct
scsi_cmnd *
scsi_cmd
;
92
void (*done) (
struct
scsi_cmnd *);
93
ocs_io_task_t
*
io_task
;
94
int32_t (*unassisted_cb)(ocs_io_t *io, uint32_t expCmdSN, uint32_t maxCmdSN, uint8_t response);
95
}
ocs_scsi_ini_io_t
;
96
97
/**
98
* @brief initiator private node structure
99
*/
100
typedef
struct
{
101
ocs_ep_t
*
ocs_ep
;
102
}
ocs_scsi_ini_node_t
;
103
104
typedef
struct
{
105
ocs_t *
ocs
;
106
struct
iscsi_iface *
iface
;
107
}
ocs_iscsi_host_private_t
;
108
109
#endif // __OCS_SCSI_INI_H__
ocs_scsi.h
ocs_iscsi_host_private_t::iface
struct iscsi_iface * iface
Definition:
ocs_scsi_ini.h:106
ocs_io_task_t::task
struct iscsi_task * task
Definition:
ocs_scsi_ini.h:66
ocs_scsi_ini_io_t
Definition:
ocs_scsi_ini.h:90
ocs_conn_s::conn
struct iscsi_conn * conn
Definition:
ocs_scsi_ini.h:58
ocs_ep_t::openiscsi_ep
struct iscsi_endpoint * openiscsi_ep
Definition:
ocs_scsi_ini.h:51
ocs_scsi_ini_t
Definition:
ocs_scsi_ini.h:85
ocs_scsi_ini_t::shost
struct Scsi_Host * shost
Definition:
ocs_scsi_ini.h:86
ocs_ep_t::cxn
ocs_cxn_t * cxn
Definition:
ocs_scsi_ini.h:52
ocs_iscsi_host_private_t::ocs
ocs_t * ocs
Definition:
ocs_scsi_ini.h:105
ocs_iscsi_host_private_t
Definition:
ocs_scsi_ini.h:104
ocs_io_task_t
Definition:
ocs_scsi_ini.h:62
OCS_IO_TASK_STATE_INIT
Definition:
ocs_scsi_ini.h:42
ocs_conn_s
Definition:
ocs_scsi_ini.h:56
ocs_conn_s::ocs_ep
ocs_ep_t * ocs_ep
Definition:
ocs_scsi_ini.h:57
ocs_ep_t::ocs_conn
ocs_conn_t * ocs_conn
Definition:
ocs_scsi_ini.h:53
ocs_ep_t
Definition:
ocs_scsi_ini.h:49
ocs_io_task_t::task_state
ocs_io_task_state_e task_state
Definition:
ocs_scsi_ini.h:63
ocs_io_task_t::scsi_cmnd
struct scsi_cmnd * scsi_cmnd
Definition:
ocs_scsi_ini.h:65
ocs_conn_s::ocs_sess
ocs_session_t * ocs_sess
Definition:
ocs_scsi_ini.h:59
ocs_scsi_ini_io_t::io_task
ocs_io_task_t * io_task
Definition:
ocs_scsi_ini.h:93
ocs_io_task_t::original_itt
uint32_t original_itt
Definition:
ocs_scsi_ini.h:67
ocs_scsi_ini_domain_t
Definition:
ocs_scsi_ini.h:73
OCS_IO_TASK_STATE_FREE
Definition:
ocs_scsi_ini.h:45
ocs_scsi_ini_sport_t
Definition:
ocs_scsi_ini.h:76
ocs_scsi_ini_node_t::ocs_ep
ocs_ep_t * ocs_ep
Definition:
ocs_scsi_ini.h:101
ocs_scsi_ini_t::ini_template
ocs_scsi_ini_template_t ini_template
Definition:
ocs_scsi_ini.h:87
ocs_io_task_t::io
ocs_io_t * io
Definition:
ocs_scsi_ini.h:64
ocs_io_task_state_e
ocs_io_task_state_e
Definition:
ocs_scsi_ini.h:41
ocs_scsi_ini_node_t
initiator private node structure
Definition:
ocs_scsi_ini.h:100
OCS_IO_TASK_STATE_IN_CHIP
Definition:
ocs_scsi_ini.h:43
ocs_scsi_ini_io_t::scsi_cmd
struct scsi_cmnd * scsi_cmd
Definition:
ocs_scsi_ini.h:91
ocs_rport_data_t
Definition:
ocs_scsi_ini.h:70
OCS_IO_TASK_STATE_CLEANUP
Definition:
ocs_scsi_ini.h:44
linux
ocs_openiscsi
ocs_scsi_ini.h