iwlwifi for 7260 card: DMA memory allocation fails
christian.menard at ...104...
Tue Dec 2 19:07:48 CET 2014
> I see — in this case you might want to try using the tcp_terminal in
> combination with terminal_log and route the LOG session of the wifi_drv
> accordingly. This atleast enables you to get the wifi_drv messages via
> TCP :-)
I used this configuration on a different device, but on my target device
(Tablet) all I have for the moment is USB.... I also have an usb-nic but it is
not detected by Genode's driver.
> Yeah, the problem is related to how DMA memory is handled in Linux and
> with how we deal with it in dde_linux. Almost all memory allocations in
> the vanilla source, even the ones that are used later on for DMA, are
> done with GFP_KERNEL. In dde_linux we employ two memory pools. One for
> “normal” memory and one for memory which may be used for DMA. We
> introduced a flag (GFP_LX_DMA) to distinguish between the two.
> Unfortunatly, you have to patch the vanilla sources for this to work
> (you may take a look at the wifi_mem.patch). Since the wifi_drv was
> only tested on 6xxx cards only the dvm source is patched. To enable the
> 7260 card you would have to trace all memory allocations done by this
> part of the iwlwifi driver and change the flags on all allocations that
> might end up being used in an DMA transaction.
Thank you for the explanation. I traced down two such allocs and changed the
flag accordingly. Now the log is error free (besides the "slab too
large" messages mentioned before). However, as it appears the driver is not
working. I get the message "iwl driver loaded" but then nothing happens
anymore. I guess there should be more output for searching the network,
establishing connection etc?
I tried to track down the problem, but so far I only found that wpa_supplicant
blocks on it's socket in netlink_init(). The _handle() function which would
unblock wpa_supplicant is never called. Oddly, this part seems to work fine
without my changes to the DMA memory allocations. Do you have any ideas what
might be wrong?
More information about the users