summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2023-02-16 13:54:47 +0100
committerMichael Brown2023-02-16 14:27:25 +0100
commit2733c4763a50b9eb0c206e7430d4d0638451e5e9 (patch)
tree7424d7a6708b8435aac95fe27cd477c68f897a10 /src/include
parent[rng] Add RDRAND as an entropy source (diff)
downloadipxe-2733c4763a50b9eb0c206e7430d4d0638451e5e9.tar.gz
ipxe-2733c4763a50b9eb0c206e7430d4d0638451e5e9.tar.xz
ipxe-2733c4763a50b9eb0c206e7430d4d0638451e5e9.zip
[iscsi] Limit maximum transfer size to MaxBurstLength
We currently specify only the iSCSI default value for MaxBurstLength and ignore any negotiated value, since our internal block device API allows only for receiving directly into caller-allocated buffers and so we have no intrinsic limit on burst length. A conscientious target may however refuse to attempt a transfer that we request for a number of blocks that would exceed the negotiated maximum burst length. Fix by recording the negotiated maximum burst length and using it to limit the maximum number of blocks per transfer as reported by the SCSI layer. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/iscsi.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/include/ipxe/iscsi.h b/src/include/ipxe/iscsi.h
index 966cf52b..a25eec25 100644
--- a/src/include/ipxe/iscsi.h
+++ b/src/include/ipxe/iscsi.h
@@ -22,6 +22,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** Default iSCSI port */
#define ISCSI_PORT 3260
+/** Default iSCSI first burst length */
+#define ISCSI_FIRST_BURST_LEN 65536
+
+/** Default iSCSI maximum burst length */
+#define ISCSI_MAX_BURST_LEN 262144
+
+/** Default iSCSI maximum receive data segment length */
+#define ISCSI_MAX_RECV_DATA_SEG_LEN 8192
+
/**
* iSCSI segment lengths
*
@@ -577,6 +586,9 @@ struct iscsi_session {
/** CHAP response (used for both initiator and target auth) */
struct chap_response chap;
+ /** Maximum burst length */
+ size_t max_burst_len;
+
/** Initiator session ID (IANA format) qualifier
*
* This is part of the ISID. It is generated randomly