]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[iscsi] Limit maximum transfer size to MaxBurstLength 898/head
authorMichael Brown <mcb30@ipxe.org>
Thu, 16 Feb 2023 12:54:47 +0000 (12:54 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 16 Feb 2023 13:27:25 +0000 (13:27 +0000)
commit2733c4763a50b9eb0c206e7430d4d0638451e5e9
tree7424d7a6708b8435aac95fe27cd477c68f897a10
parentcff857461be443339aa39d614635d9a4eae8f8b2
[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>
src/drivers/block/scsi.c
src/include/ipxe/iscsi.h
src/net/tcp/iscsi.c