ath9k usb Wi-Fi driver

Josef Söntgen josef.soentgen at genode-labs.com
Fri Jun 16 17:12:22 CEST 2023


Hi Colin,

> > D-Link dongle (running via USB passthrough in QEMU and flood pinging it
> > from the out-site). I encountered the I/O signal handling issue once
> > but since its a known problem I mostly ignored that for now.
> >
> 
> I had chased that away in "normal" use, but I'm not surprised you could
> trigger it with a ping flood.

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.

[1] https://github.com/cnuke/genode/commit/8b4896e7


> I switched to those branches, it works for both my dongles (I suppose the
> correct branch name is cnuke/ath9k_driver_support-2023-06-11 for
> genode-world).

Thanks for testing; I planned on renaming the branch but that evidently
slipped my mind.


> If I understand it right, the remaining suggestions are to switch to
> virt_linux and to re-implement USB with the "Connection" object. For the
> former I may take a look at it this weekend if I have time. I may also try
> to build a Sculpt configuration around usb_report_filter and supporting
> both dongles with the same configuration.

Yes. At the moment you are working with a copy of the wireless stack,
which is fine but makes the maintenance more involved. With the MNT
Reform2, PC and PinePhone driver we now reference the common parts of the
stack and each driver merely contains its specific portions (basically
the dummies and required source files that among others result from the
different Linux kernel configurations used for each platform).

From my point of view 'virt_linux' is the natural platform for USB
device drivers as they are somewhat platform agnostic and do not require
the use of the Platform session. So it makes sense to base your wifi driver
off of it and access the wireless stack like the other drivers do. Since
'virt_linux' has not been used for device drivers so far there is going
to be some friction but probably nothing you cannot handle.

So one way of going forward could be:

1. 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.

2. Switch the used platform by going from 'pc_lx_emul' to using
   'virt_lx_emul'. That will involve extending 'virt_linux'.

3. Re-implement the USB wrapper using the session directly.

> Regarding the latter there is supposed to be a change to Genode's USB
> structures pending so maybe I'll just wait to see what happens with
> that?

We plan on changing the USB session and the API you are currently
using but I don't know the time-frame. That would affect 3. but
I hope with the scheduler execution change in place the current
USB wrapper will work better for the time being and the focus could
be on 1. and 2.


Regards
Josef

-- 
Josef Söntgen
Genode Labs

http://www.genode-labs.com/ · http://genode.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.genode.org/pipermail/users/attachments/20230616/94f4de63/attachment.sig>


More information about the users mailing list