Hello Colin,
Good to hear. Was this done with the changes I made to the supplicant interface? I'm curious if those break the existing wifi functionality, which I can't test other than to say it compiles successfully.
No, in this case I simply enabled the driver in the vanilla 'pc_wifi_drv' driver component.
At some point I believe this was re-named by me to pc_lx_ath9k_extras. You should find it in world/lib/mk and the import file in world/lib/import. The only point as I remember is to add the necessary files from the linux contrib dir. Since the ath9k driver sits in world, rather than in "pc", the corresponding source.list and dep.list files are not imported automatically by pc_linux API, hence the need for the pc_lx_ath9k_extras API for depot builds, and the import-pc_lx_ath9k_extras file to correctly locate the imported files. But, I am a genode build/depot build newbie, so perhaps I made this too complicated? If you want to build in the "pc" repo itself I suppose it isn't needed.
Nevermind, I did not pay close attention and misread the 'LX_SOURCE_EXTRAS' usage. (For additional changes see the Ralink comment below.)
[…] Admittedly I was also thinking of some unusual scenarios, such as multiple wifi adapters where it makes sense to have one supplicant and multiple drivers. But that's strange enough maybe it doesn't need to be supported.
At least from my perspective I would rather treat the supplicant as a “minor” detail of the driver itself. So each instance has its own supplicant and a management component could take care of the overall configuration on the system level for multiple wireless devices.
BTW, were you able to build the wifi_ath9k_drv component? I hope that I have a version that is suitable for others to try. Well, if anyone has the hardware, which maybe is not as common as I thought since i bought it a while ago.
After adapting your commit - my 'world' repo is symlinked rather cloned in place - I was able to build the driver. Due to the lack of HW I did not test it though.
However, I enabled the RT2800USB driver [0], added a 'wifi_ath9k.run' run script based on 'pc/run/wifi.run' to ease testing and will use this for further testing and development before tackling the Sculpt integration. I also had to adapt the test-bed somewhat [1] as the driver still requires the Platform session - removing this hard dependency is one of the tasks I implied by the PCI/USB split.
[0] https://github.com/cnuke/genode/commits/ath9k_driver_support-2023-01-22 [1] https://github.com/cnuke/genode-world/commits/ath9k_driver_support-2023-01-2...
So far the RT2800USB driver is non-working and the next step is figuring out why. For that I will take a closer look at your USB back-end work and its integration into the kernel.
(Bare with me as this is done in my spare time, it might take a while.)
Regards Josef