Skip to content

OUT endpoint callback does not get called when the data size is less than maximum #35

@dogtopus

Description

@dogtopus

I'm trying to implement USB mass storage class in user mode so I could build upon that to experiment with proprietary SCSI CDBs. Reading seems to work well, except that when a write request is less than the maximum possible amount (usually out_aio_blocks_per_endpoint * out_aio_blocks_max_packet_count but when both are 1 it's somehow 1024 bytes instead of 512 when working under high speed mode) the EndpointOUTFile.onComplete callback will not get called.

I don't think EndpointOUTFile has any complex logic in it on its own so maybe this is an issue in libaio or an issue caused by some misconfiguration of libaio?

Some background: This is over USB HighSpeed with 512 bytes max packet size, default out_aio_blocks_per_endpoint and out_aio_blocks_max_packet_count, and with a custom build of libaio 0.3.113 targeting glibc 2.34.

Also all the CBWs seem to arrive just fine. It's only the data that got truncated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions