DaynaPort SCSI/Link target (--features daynaport) - #81
Merged
Conversation
Ethernet over the SCSI bus: a type-3 Processor target selectable per SCSI id, giving the guest a second network path independent of the onboard SEEQ. Off by default — it is only useful with a guest driver (IRIX: irixdayna -> dp0). src/daynaport.rs owns two rtrb rings and hands the far ends to its own NatEngine (or PcapEngine) on a daynaN-nat thread, exactly as seeq8003 does; the front end is the five vendor 6-byte CDBs instead of DMA descriptor rings. 0x08/0x0A collide with READ(6)/WRITE(6), which needs handling in two places: ScsiDevice now carries a DeviceKind and dispatches DaynaPort ahead of the storage match, and the WD33C93A sizes a DaynaPort WRITE(6) data-out phase from the byte count in CDB 3..4 rather than blocks x 512. Each target runs its own NAT gateway on its own subnet (default 192.168.10.0/24), inheriting NAT-vs-PCAP mode and the NFS export but not host port forwards. Config: kind = "daynaport" in [scsi.N] with optional mac / subnet; cdrom = true keeps working unchanged. Monitor: scsi dayna. GUI: target type dropdown on the Disks tab with MAC and subnet fields. Verified: 21 unit tests over the record format, filtering and dispatch precedence; the PROM bus scan finds the target (hinv -v -> SCSI Device: Controller 0 ID 3), so INQUIRY works over real DMA. The rest of the acceptance ladder (ARP/ping/TCP) needs the guest driver and is not yet run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ethernet over the SCSI bus: a type-3 Processor target selectable per SCSI id, giving the guest a second network path independent of the onboard SEEQ. Off by default — it is only useful with a guest driver (IRIX: irixdayna -> dp0).
src/daynaport.rs owns two rtrb rings and hands the far ends to its own NatEngine (or PcapEngine) on a daynaN-nat thread, exactly as seeq8003 does; the front end is the five vendor 6-byte CDBs instead of DMA descriptor rings.
0x08/0x0A collide with READ(6)/WRITE(6), which needs handling in two places: ScsiDevice now carries a DeviceKind and dispatches DaynaPort ahead of the storage match, and the WD33C93A sizes a DaynaPort WRITE(6) data-out phase from the byte count in CDB 3..4 rather than blocks x 512.
Each target runs its own NAT gateway on its own subnet (default 192.168.10.0/24), inheriting NAT-vs-PCAP mode and the NFS export but not host port forwards. Config: kind = "daynaport" in [scsi.N] with optional mac / subnet; cdrom = true keeps working unchanged. Monitor: scsi dayna. GUI: target type dropdown on the Disks tab with MAC and subnet fields.
Verified: 21 unit tests over the record format, filtering and dispatch precedence; the PROM bus scan finds the target (hinv -v -> SCSI Device: Controller 0 ID 3), so INQUIRY works over real DMA. The rest of the acceptance ladder (ARP/ping/TCP) needs the guest driver and is not yet run.