Hi Christian,
* Christian Menard <christian.menard@...104...> [2014-12-02 21:07:48 +0300]:
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?
Well, it is somewhat unfortunate that even if the driver fails to load properly there is still “iwl driver loaded” printed…
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?
My guess is that the wifi_drv_ep is currently blocked or rather there is a deadlock somewhere involving the task scheduling. A signal is send if the the socket_call interface is used and if the signal is not handled by the entrypoint wpa_supplicant will hang indefinitely as you have already observed.
It is probably worth a shot to look at the task scheduling by setting DEBUG_SCHEDULE to 1 in lx.h. You can also edit Scheduler::schedule() directly and add a print statement on line 175. Since the scheduling of tasks is done periodicly you should see some output in a good case scenario. If not, the wifi_drv_ep is not running properly which is the case if some task blocks w/o invoking the scheduling of another task.
It might work fine w/o your DMA changes because w/o them another code path in the driver code is taken because the DMA operations failed early.
Regards Josef