/* if last transition into FF (Fully Featured) state */ int isert_login_rsp_tx(struct iscsi_cmnd *login_rsp, int last, int discovery) { struct isert_connection *isert_conn = container_of(login_rsp->conn, struct isert_connection, iscsi); int err; if (last && !discovery) { err = isert_alloc_conn_resources(isert_conn); if (unlikely(err)) { pr_err("Failed to init conn resources\n"); return err; } isert_pdu_free(isert_conn->login_req_pdu); isert_conn->login_req_pdu = NULL; } else { err = isert_post_recv(isert_conn, &isert_conn->login_req_pdu->wr[0], 1); if (unlikely(err)) { pr_err("Failed to post recv login req rx buf, err:%d\n", err); return err; } } return isert_pdu_tx(login_rsp); }
static int isert_process_all_writes(struct iscsi_conn *conn) { struct iscsi_cmnd *cmnd; int res = 0; TRACE_ENTRY(); while ((cmnd = iscsi_get_send_cmnd(conn)) != NULL) { isert_update_len_sn(cmnd); conn_get(conn); isert_pdu_tx(cmnd); } TRACE_EXIT_RES(res); return res; }
static void isert_send_data_rsp(struct iscsi_cmnd *req, u8 *sense, int sense_len, u8 status, int is_send_status) { struct iscsi_cmnd *rsp; TRACE_ENTRY(); sBUG_ON(!is_send_status); rsp = create_status_rsp(req, status, sense, sense_len); isert_update_len_sn(rsp); conn_get(rsp->conn); if (status != SAM_STAT_CHECK_CONDITION) isert_send_data_in(req, rsp); else isert_pdu_tx(rsp); TRACE_EXIT(); }