Hello,
I got the driver running! Thanks for the help. The problem turned out to be a page fault due to nullpointer access, witch I did not see as I was only focused on the wifi_drv log... Furthermore I had to fix more DMA memory allocations and another page fault. However, now it's working fine and netperf shows very reasonable performance :)
I will clean up my patches and create a pull request on github, so you can have a look at my changes and decide if you want to merge them in.
Cheers Christian
On Tuesday 02 December 2014 23:24:49 Josef Söntgen wrote:
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
-- Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.cl... _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main