summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Prakash <varun@chelsio.com>2016-04-19 21:30:12 +0300
committerNicholas Bellinger <nab@linux-iscsi.org>2016-05-10 09:12:08 +0300
commit42bc3e57877f2357ccbbc3ad6e6c7d9be44579f9 (patch)
treef8866f9683073031554ec3e7ff1f28741734c14f
parente8205cca0abd126418c18030fb8c9ef272080d70 (diff)
downloadlinux-42bc3e57877f2357ccbbc3ad6e6c7d9be44579f9.tar.xz
iscsi-target: add int (*iscsit_validate_params)()
Add int (*iscsit_validate_params)() to struct iscsit_transport, iscsi-target uses this callback for validating conn operational parameters. cxgbit.ko needs this callback to check and update the value of MAXXMITDATASEGMENTLENGTH. Signed-off-by: Varun Prakash <varun@chelsio.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r--drivers/target/iscsi/iscsi_target_login.c10
-rw-r--r--include/target/iscsi/iscsi_transport.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
index 8436d56c5f0c..83574eea0be7 100644
--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -1387,6 +1387,16 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
goto old_sess_out;
}
+ if (conn->conn_transport->iscsit_validate_params) {
+ ret = conn->conn_transport->iscsit_validate_params(conn);
+ if (ret < 0) {
+ if (zero_tsih)
+ goto new_sess_out;
+ else
+ goto old_sess_out;
+ }
+ }
+
ret = iscsi_target_start_negotiation(login, conn);
if (ret < 0)
goto new_sess_out;
diff --git a/include/target/iscsi/iscsi_transport.h b/include/target/iscsi/iscsi_transport.h
index ccc68a0334c2..46aa219be1ae 100644
--- a/include/target/iscsi/iscsi_transport.h
+++ b/include/target/iscsi/iscsi_transport.h
@@ -26,6 +26,7 @@ struct iscsit_transport {
struct iscsi_datain_req *, const void *, u32);
void (*iscsit_release_cmd)(struct iscsi_conn *, struct iscsi_cmd *);
void (*iscsit_get_rx_pdu)(struct iscsi_conn *);
+ int (*iscsit_validate_params)(struct iscsi_conn *);
enum target_prot_op (*iscsit_get_sup_prot_ops)(struct iscsi_conn *);
};