aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/isert/ib_isert.c
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2013-08-18 19:35:46 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2013-09-09 17:27:21 -0400
commit6faaa85f375543ea0d49a27e953ed18aec05ae56 (patch)
tree072dce0ff0f78c936a80968999e4ec5b05f21ea6 /drivers/infiniband/ulp/isert/ib_isert.c
parentea3a179abee6792b2b08f8710e19adbc75e866b1 (diff)
iser-target: Updates for login negotiation multi-plexing support
This patch updates iser-target code to support login negotiation multi-plexing. This includes only using isert_conn->conn_login_comp for the first login request PDU, pushing the subsequent processing to iscsi_conn->login_work -> iscsi_target_do_login_rx(), and turning isert_get_login_rx() into a NOP. v3 changes: - Drop unnecessary LOGIN_FLAGS_READ_ACTIVE bit set in isert_rx_login_req() Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/infiniband/ulp/isert/ib_isert.c')
-rw-r--r--drivers/infiniband/ulp/isert/ib_isert.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index 3f62041222f2..c42748b3b257 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -869,7 +869,11 @@ isert_rx_login_req(struct iser_rx_desc *rx_desc, int rx_buflen,
869 size, rx_buflen, MAX_KEY_VALUE_PAIRS); 869 size, rx_buflen, MAX_KEY_VALUE_PAIRS);
870 memcpy(login->req_buf, &rx_desc->data[0], size); 870 memcpy(login->req_buf, &rx_desc->data[0], size);
871 871
872 complete(&isert_conn->conn_login_comp); 872 if (login->first_request) {
873 complete(&isert_conn->conn_login_comp);
874 return;
875 }
876 schedule_delayed_work(&conn->login_work, 0);
873} 877}
874 878
875static void 879static void
@@ -2224,6 +2228,14 @@ isert_get_login_rx(struct iscsi_conn *conn, struct iscsi_login *login)
2224 int ret; 2228 int ret;
2225 2229
2226 pr_debug("isert_get_login_rx before conn_login_comp conn: %p\n", conn); 2230 pr_debug("isert_get_login_rx before conn_login_comp conn: %p\n", conn);
2231 /*
2232 * For login requests after the first PDU, isert_rx_login_req() will
2233 * kick schedule_delayed_work(&conn->login_work) as the packet is
2234 * received, which turns this callback from iscsi_target_do_login_rx()
2235 * into a NOP.
2236 */
2237 if (!login->first_request)
2238 return 0;
2227 2239
2228 ret = wait_for_completion_interruptible(&isert_conn->conn_login_comp); 2240 ret = wait_for_completion_interruptible(&isert_conn->conn_login_comp);
2229 if (ret) 2241 if (ret)