From 91267f5aaaaf705d4bb3a690dcba4eb7fb1c91b9 Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Thu, 18 Oct 2012 09:21:54 +0200 Subject: [PATCH] Limit immediate and unsolicited data to FirstBurstLength RFC3270 describes in section 12.14 that immediate and unsolicited data sent from the initiator to the target must not exceed FristBurstLength bytes in total. --- lib/scsi-command.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/scsi-command.c b/lib/scsi-command.c index 7c6770e..3122b52 100644 --- a/lib/scsi-command.c +++ b/lib/scsi-command.c @@ -242,8 +242,8 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun, if (iscsi->use_immediate_data == ISCSI_IMMEDIATE_DATA_YES) { uint32_t len = data.size; - if (len > iscsi->target_max_recv_data_segment_length) { - len = iscsi->target_max_recv_data_segment_length; + if (len > iscsi->first_burst_length) { + len = iscsi->first_burst_length; } if (iscsi_pdu_add_data(iscsi, pdu, data.data, len) @@ -302,7 +302,7 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun, } /* Can we send some unsolicited data ? */ - if (pdu->nidata.size != 0 && iscsi->use_initial_r2t == ISCSI_INITIAL_R2T_NO) { + if (pdu->nidata.size != 0 && iscsi->use_initial_r2t == ISCSI_INITIAL_R2T_NO && iscsi->use_immediate_data == ISCSI_IMMEDIATE_DATA_NO) { uint32_t len = pdu->nidata.size - offset; if (len > iscsi->first_burst_length) {