From 98f9292690da50e866cf6ec901334a19c2716c58 Mon Sep 17 00:00:00 2001 From: Uwe Seimet <48174652+uweseimet@users.noreply.github.com> Date: Tue, 14 Nov 2023 16:13:14 +0100 Subject: [PATCH] NetBSD compatibility: Increase daynaport minimum packet size to 128 bytes (#1334) (#1335) * NetBSD compatibility: Increase daynaport minimum packet size to 128 bytes --- cpp/devices/scsi_daynaport.cpp | 17 ++++++++++------- cpp/devices/scsi_daynaport.h | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cpp/devices/scsi_daynaport.cpp b/cpp/devices/scsi_daynaport.cpp index 0629ccae..7c1c390f 100644 --- a/cpp/devices/scsi_daynaport.cpp +++ b/cpp/devices/scsi_daynaport.cpp @@ -6,6 +6,7 @@ // Copyright (C) 2020 akuker // Copyright (C) 2014-2020 GIMONS // Copyright (C) 2001-2006 PI.(ytanaka@ipc-tokai.or.jp) +// Copyright (C) 2023 Uwe Seimet // // Licensed under the BSD 3-Clause License. // See LICENSE file in the project root folder. @@ -212,13 +213,15 @@ int SCSIDaynaPort::Read(cdb_t cdb, vector& buf, uint64_t) // response->flags = e_no_more_data; // } int size = rx_packet_size; - if (size < 64) { - // A frame must have at least 64 bytes (see https://github.com/PiSCSI/piscsi/issues/619) - // Note that this work-around breaks the checksum. As currently there are no known drivers - // that care for the checksum, and the Daynaport driver for the Atari expects frames of - // 64 bytes it was decided to accept the broken checksum. If a driver should pop up that - // breaks because of this, the work-around has to be re-evaluated. - size = 64; + if (size < 128) { + // A frame must have at least 64 bytes for the Atari driver, see https://github.com/PiSCSI/piscsi/issues/619, + // but also works with 128 bytes. + // The NetBSD driver requires at least 128 bytes, see https://github.com/PiSCSI/piscsi/issues/1098. + // The Mac driver is also fine with 128 bytes. + // Note that this work-around breaks the checksum. As currently there are no known drivers + // that care for the checksum it was decided to accept the broken checksum. + // If a driver should pop up that breaks because of this, the work-around has to be re-evaluated. + size = 128; } SetInt16(buf, 0, size); SetInt32(buf, 2, tap.HasPendingPackets() ? 0x10 : 0x00); diff --git a/cpp/devices/scsi_daynaport.h b/cpp/devices/scsi_daynaport.h index 94f45551..6074e081 100644 --- a/cpp/devices/scsi_daynaport.h +++ b/cpp/devices/scsi_daynaport.h @@ -6,6 +6,7 @@ // Copyright (C) 2020 akuker // Copyright (C) 2014-2020 GIMONS // Copyright (C) 2001-2006 PI.(ytanaka@ipc-tokai.or.jp) +// Copyright (C) 2023 Uwe Seimet // // Licensed under the BSD 3-Clause License. // See LICENSE file in the project root folder.