39 #ifndef _OCS_SESSION_H
40 #define _OCS_SESSION_H
85 static inline uint32_t
88 ocs_session_t *session = cxn->session;
91 if (session != NULL &&
100 static inline uint64_t
103 ocs_session_t *session = cxn->session;
105 return (session == NULL ? 0 : session->isid);
108 static inline uint32_t
111 ocs_session_t *session = cxn->session;
114 if (session != NULL) {
115 rc = session->cmd_sn;
116 session->cmd_sn += inc;
121 static inline uint32_t
124 ocs_session_t *session = cxn->session;
126 return (session == NULL ? 0 : session->exp_cmd_sn);
129 static inline uint32_t
132 ocs_session_t *session = cxn->session;
134 return (session == NULL ? 0 : session->max_cmd_sn);
137 static inline uint32_t
140 ocs_session_t *session = cxn->session;
142 return (session == NULL ? 0 : session->cmd_window);
145 static inline uint16_t
148 ocs_session_t *session = cxn->session;
150 return (session == NULL ? 0 : session->tsih);
156 ocs_session_t *session = cxn->session;
158 if (session != NULL) {
159 session->cmd_sn = cmd_sn;
166 ocs_session_t *session = cxn->session;
168 if (session != NULL) {
169 session->exp_cmd_sn = exp_cmd_sn;
176 ocs_session_t *session = cxn->session;
178 if (session != NULL) {
179 session->max_cmd_sn = max_cmd_sn;
186 ocs_session_t *session = cxn->session;
188 if (session != NULL) {
189 session->cmd_window = cmd_window;
196 ocs_session_t *session = cxn->session;
198 if (session != NULL) {
199 if (
GT_NOTWRAPPED(session->max_cmd_sn, session->exp_cmd_sn)) {
200 session->cmd_window = session->max_cmd_sn - session->exp_cmd_sn;
202 session->cmd_window = (0xFFFFFFFF - session->exp_cmd_sn) + session->max_cmd_sn;
210 ocs_session_t *session = cxn->session;
212 if (session != NULL) {
213 session->tsih = tsih;
static void ocs_session_max_cmd_sn_set(ocs_cxn_t *cxn, uint32_t max_cmd_sn)
static uint32_t ocs_session_max_cmd_sn_get(ocs_cxn_t *cxn)
void ocs_session_max_cmd_sn_upd(ocs_session_t *session)
Updates the max_cmd_sn based on the number IOs available.
#define GT_NOTWRAPPED(a, b)
static void ocs_session_calc_cmd_window(ocs_cxn_t *cxn)
int32_t ocs_session_initialize(ocs_iscsi_t *iscsi)
Initialize the session management by allocating objects for sessions.
static void ocs_session_cmd_sn_set(ocs_cxn_t *cxn, uint32_t cmd_sn)
int32_t ocs_session_cxn_del(ocs_cxn_t *cxn)
Removes a connection from its session.
void ocs_ddump_sessions(ocs_textbuf_t *textbuf, ocs_iscsi_t *iscsi)
Generate node ddump data.
int32_t ocs_session_tgt_unsol_pdu_recv(ocs_cxn_t *cxn, ocs_hal_rq_buffer_t *hdr, uint32_t hdr_len, ocs_hal_rq_buffer_t *data, uint32_t data_len, uint8_t code)
Function to handle unsolicited PDUs on a target.
Defines a wrapper for the RQ payload buffers so that we can place it back on the proper queue...
static void ocs_session_exp_cmd_sn_set(ocs_cxn_t *cxn, uint32_t exp_cmd_sn)
void ocs_session_close(ocs_session_t *session, uint8_t reset)
Closes all connections on a session.
static uint32_t ocs_session_exp_cmd_sn_get(ocs_cxn_t *cxn)
void ocs_session_all_abort_cmdsn(ocs_iscsi_t *iscsi, uint32_t cmdsn)
Abort a specific IO based on the cmdSN of the abort request.
static uint64_t ocs_session_isid_get(ocs_cxn_t *cxn)
static uint32_t ocs_session_cmd_sn_get(ocs_cxn_t *cxn, uint32_t inc)
static uint16_t ocs_session_tsih_get(ocs_cxn_t *cxn)
static void ocs_session_tsih_set(ocs_cxn_t *cxn, uint16_t tsih)
static uint32_t ocs_session_cmd_window_get(ocs_cxn_t *cxn)
int32_t ocs_session_cxn_new(ocs_cxn_t *cxn, char *tgt_name, char *ini_name, uint64_t isid, uint16_t tsih, uint16_t cid, uint32_t cmd_sn)
Find an existing session or create a new one based on the login parameters.
void ocs_session_teardown(ocs_iscsi_t *iscsi)
Releases the session objects used within the login module.
int32_t ocs_session_abort_itt(ocs_session_t *session, uint32_t itt)
Abort a specific IO based on the ITT.
ocs_cxn_t * ocs_session_cxn_find(ocs_session_t *session, uint16_t cid)
Locate a connection within a session based on the cid.
static void ocs_session_cmd_window_set(ocs_cxn_t *cxn, uint32_t cmd_window)
static uint32_t ocs_session_is_window_open(ocs_cxn_t *cxn)
void ocs_session_abort_cmdsn(ocs_session_t *session, uint32_t cmdsn)
Abort a specific IO based on the cmdSN of the abort request.