0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <target/target_core_base.h>
0013 #include <target/target_core_fabric.h>
0014
0015 #include <target/iscsi/iscsi_target_core.h>
0016 #include "iscsi_target_device.h"
0017 #include "iscsi_target_tpg.h"
0018 #include "iscsi_target_util.h"
0019
0020 void iscsit_determine_maxcmdsn(struct iscsit_session *sess)
0021 {
0022 struct se_node_acl *se_nacl;
0023
0024
0025
0026
0027
0028
0029
0030 if (sess->sess_ops->SessionType)
0031 return;
0032
0033 se_nacl = sess->se_sess->se_node_acl;
0034
0035
0036
0037
0038
0039
0040
0041 sess->cmdsn_window = se_nacl->queue_depth;
0042 atomic_add(se_nacl->queue_depth - 1, &sess->max_cmd_sn);
0043 }
0044
0045 void iscsit_increment_maxcmdsn(struct iscsit_cmd *cmd, struct iscsit_session *sess)
0046 {
0047 u32 max_cmd_sn;
0048
0049 if (cmd->immediate_cmd || cmd->maxcmdsn_inc)
0050 return;
0051
0052 cmd->maxcmdsn_inc = 1;
0053
0054 max_cmd_sn = atomic_inc_return(&sess->max_cmd_sn);
0055 pr_debug("Updated MaxCmdSN to 0x%08x\n", max_cmd_sn);
0056 }
0057 EXPORT_SYMBOL(iscsit_increment_maxcmdsn);