Hi Josef,
We looked at the problem and could you give this commit [1] a try (it is
still WIP and not finalized). It might be helpful to add a diagnostic message to 'alloc' in 'usb/packet_handler.h' to see when the situation occurs.
I think I understand the logic of this commit, and in general it seems to me a better way of handling the scheduling. I used cherry-pick to add it to my branch [1], and it seemed to work the same as before. That said, I am unable to trigger the signal handler issue with my hardware, even using 'sudo ping -f'.
- Adapt your current version (that is based on the PC platform) by using the PC wifi driver as a template to the way the other drivers are by now implemented. That could involve making additions to the wireless stack but that's fine as merging your changes eventually would be the preferred way.
Ok, I think there won't need to be many changes to the wireless stack, but the USB emulation code needs to be somewhere. So I suppose I should add a lx_emul_usb.c to the dde_linux/lib/wifi directory, and besides that it will require the code from wlan_usb.cc and wlan_usb.h to be copied somewhere. As a most convenient option that can be in the same directory. Alternatively such code could live somewhere in lx_kit/lx_emul independent of wifi, if someone wanted to use it for porting another type of USB device driver, but for now that might be too optimistic.
-CP
[1] https://github.com/cvparker/genode/tree/usb_wifi-2023-06-18