From a45c7ba9db7dfe420634fcec3e16aa3f7807a0f5 Mon Sep 17 00:00:00 2001 From: Maurizio Lombardi <mlombard@redhat.com> Date: Sat, 15 Oct 2022 17:29:27 +0200 Subject: [PATCH 2/4] target: iscsi: remove boilerplate code Add a function that initializes the iscsi_login values from the login request PDU and remove the duplicated code. Signed-off-by: Maurizio Lombardi <mlombard@redhat.com> --- drivers/infiniband/ulp/isert/ib_isert.c | 16 +--------------- drivers/target/iscsi/cxgbit/cxgbit_target.c | 12 +----------- drivers/target/iscsi/iscsi_target_login.c | 11 +---------- drivers/target/iscsi/iscsi_target_util.c | 20 ++++++++++++++++++++ include/target/iscsi/iscsi_transport.h | 3 +++ 5 files changed, 26 insertions(+), 36 deletions(-) diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index 9dc581dd1321..4cab5d8c378d 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c @@ -987,21 +987,7 @@ isert_rx_login_req(struct isert_conn *isert_conn) if (login->first_request) { struct iscsi_login_req *login_req = (struct iscsi_login_req *)isert_get_iscsi_hdr(rx_desc); - /* - * Setup the initial iscsi_login values from the leading - * login request PDU. - */ - login->leading_connection = (!login_req->tsih) ? 1 : 0; - login->current_stage = ISCSI_LOGIN_CURRENT_STAGE( - login_req->flags); - login->version_min = login_req->min_version; - login->version_max = login_req->max_version; - memcpy(login->isid, login_req->isid, 6); - login->cmd_sn = be32_to_cpu(login_req->cmdsn); - login->init_task_tag = login_req->itt; - login->initial_exp_statsn = be32_to_cpu(login_req->exp_statsn); - login->cid = be16_to_cpu(login_req->cid); - login->tsih = be16_to_cpu(login_req->tsih); + iscsit_setup_login_from_req_pdu(login, login_req); } memcpy(&login->req[0], isert_get_iscsi_hdr(rx_desc), ISCSI_HDR_LEN); diff --git a/drivers/target/iscsi/cxgbit/cxgbit_target.c b/drivers/target/iscsi/cxgbit/cxgbit_target.c index acfc39683c87..640dce3d882b 100644 --- a/drivers/target/iscsi/cxgbit/cxgbit_target.c +++ b/drivers/target/iscsi/cxgbit/cxgbit_target.c @@ -1339,17 +1339,7 @@ static int cxgbit_rx_login_pdu(struct cxgbit_sock *csk) */ if (login->first_request) { login_req = (struct iscsi_login_req *)login->req; - login->leading_connection = (!login_req->tsih) ? 1 : 0; - login->current_stage = ISCSI_LOGIN_CURRENT_STAGE( - login_req->flags); - login->version_min = login_req->min_version; - login->version_max = login_req->max_version; - memcpy(login->isid, login_req->isid, 6); - login->cmd_sn = be32_to_cpu(login_req->cmdsn); - login->init_task_tag = login_req->itt; - login->initial_exp_statsn = be32_to_cpu(login_req->exp_statsn); - login->cid = be16_to_cpu(login_req->cid); - login->tsih = be16_to_cpu(login_req->tsih); + iscsit_setup_login_from_req_pdu(login, login_req); } if (iscsi_target_check_login_request(conn, login) < 0) diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 27e448c2d066..56b87964dcad 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -1040,16 +1040,7 @@ int iscsit_get_login_rx(struct iscsit_conn *conn, struct iscsi_login *login) */ if (login->first_request) { login_req = (struct iscsi_login_req *)login->req; - login->leading_connection = (!login_req->tsih) ? 1 : 0; - login->current_stage = ISCSI_LOGIN_CURRENT_STAGE(login_req->flags); - login->version_min = login_req->min_version; - login->version_max = login_req->max_version; - memcpy(login->isid, login_req->isid, 6); - login->cmd_sn = be32_to_cpu(login_req->cmdsn); - login->init_task_tag = login_req->itt; - login->initial_exp_statsn = be32_to_cpu(login_req->exp_statsn); - login->cid = be16_to_cpu(login_req->cid); - login->tsih = be16_to_cpu(login_req->tsih); + iscsit_setup_login_from_req_pdu(login, login_req); } if (iscsi_target_check_login_request(conn, login) < 0) diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 8d9f21372b67..217966f9096a 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c @@ -1334,6 +1334,26 @@ void iscsit_collect_login_stats( spin_unlock(&ls->lock); } +void iscsit_setup_login_from_req_pdu(struct iscsi_login *login, + struct iscsi_login_req *login_req) +{ + /* + * Setup the initial iscsi_login values from the leading + * login request PDU. + */ + login->leading_connection = (!login_req->tsih) ? 1 : 0; + login->current_stage = ISCSI_LOGIN_CURRENT_STAGE(login_req->flags); + login->version_min = login_req->min_version; + login->version_max = login_req->max_version; + memcpy(login->isid, login_req->isid, 6); + login->cmd_sn = be32_to_cpu(login_req->cmdsn); + login->init_task_tag = login_req->itt; + login->initial_exp_statsn = be32_to_cpu(login_req->exp_statsn); + login->cid = be16_to_cpu(login_req->cid); + login->tsih = be16_to_cpu(login_req->tsih); +} +EXPORT_SYMBOL(iscsit_setup_login_from_req_pdu); + struct iscsi_tiqn *iscsit_snmp_get_tiqn(struct iscsit_conn *conn) { struct iscsi_portal_group *tpg; diff --git a/include/target/iscsi/iscsi_transport.h b/include/target/iscsi/iscsi_transport.h index 42cfe02ea909..c78f11d1794f 100644 --- a/include/target/iscsi/iscsi_transport.h +++ b/include/target/iscsi/iscsi_transport.h @@ -134,6 +134,9 @@ extern struct iscsit_cmd * iscsit_find_cmd_from_itt_or_dump(struct iscsit_conn *conn, itt_t init_task_tag, u32 length); +extern void iscsit_setup_login_from_req_pdu(struct iscsi_login *login, + struct iscsi_login_req *login_req); + /* * From iscsi_target_nego.c */ -- 2.31.1