#include <linux/slab.h>
#include <linux/random.h>
#include <target/iscsi/iscsi_target_core.h>
#include "iscsi_target_util.h"
#include "iscsi_target_tpg.h"
#include "iscsi_target_seq_pdu_list.h"
#ifdef DEBUG
static void iscsit_dump_seq_list(struct iscsit_cmd *cmd)
{
int i;
struct iscsi_seq *seq;
pr_debug("Dumping Sequence List for ITT: 0x%08x:\n",
cmd->init_task_tag);
for (i = 0; i < cmd->seq_count; i++) {
seq = &cmd->seq_list[i];
pr_debug("i: %d, pdu_start: %d, pdu_count: %d,"
" offset: %d, xfer_len: %d, seq_send_order: %d,"
" seq_no: %d\n", i, seq->pdu_start, seq->pdu_count,
seq->offset, seq->xfer_len, seq->seq_send_order,
seq->seq_no);
}
}
static void iscsit_dump_pdu_list(struct iscsit_cmd *cmd)
{
int i;
struct iscsi_pdu *pdu;
pr_debug("Dumping PDU List for ITT: 0x%08x:\n",
cmd->init_task_tag);
for (i = 0; i < cmd->pdu_count; i++) {
pdu = &cmd->pdu_list[i];
pr_debug("i: %d, offset: %d, length: %d,"
" pdu_send_order: %d, seq_no: %d\n", i, pdu->offset,
pdu->length, pdu->pdu_send_order, pdu->seq_no);
}
}
#else
static void iscsit_dump_seq_list(struct iscsit_cmd *cmd) { … }
static void iscsit_dump_pdu_list(struct iscsit_cmd *cmd) { … }
#endif
static void iscsit_ordered_seq_lists(
struct iscsit_cmd *cmd,
u8 type)
{ … }
static void iscsit_ordered_pdu_lists(
struct iscsit_cmd *cmd,
u8 type)
{ … }
static void iscsit_create_random_array(u32 *array, u32 count)
{ … }
static int iscsit_randomize_pdu_lists(
struct iscsit_cmd *cmd,
u8 type)
{ … }
static int iscsit_randomize_seq_lists(
struct iscsit_cmd *cmd,
u8 type)
{ … }
static void iscsit_determine_counts_for_list(
struct iscsit_cmd *cmd,
struct iscsi_build_list *bl,
u32 *seq_count,
u32 *pdu_count)
{ … }
static int iscsit_do_build_pdu_and_seq_lists(
struct iscsit_cmd *cmd,
struct iscsi_build_list *bl)
{ … }
int iscsit_build_pdu_and_seq_lists(
struct iscsit_cmd *cmd,
u32 immediate_data_length)
{ … }
struct iscsi_pdu *iscsit_get_pdu_holder(
struct iscsit_cmd *cmd,
u32 offset,
u32 length)
{ … }
struct iscsi_pdu *iscsit_get_pdu_holder_for_seq(
struct iscsit_cmd *cmd,
struct iscsi_seq *seq)
{ … }
struct iscsi_seq *iscsit_get_seq_holder(
struct iscsit_cmd *cmd,
u32 offset,
u32 length)
{ … }