Here is v2 of the split packet result into actual_length + status patchset, as requested this version makes sb_handle_packet and the device's handle_control and handle_data methods return void, to make the sync/async packet handling more alike.
This turned out to be quite a bit of work! But is all done now, and it has been thoroughly tested (although with a subset of all supported / emulated qemu usb devices, see the commit message). Please add these to your tree for Anthony. Thanks & Regards, Hans