> What setinfo is it. Avoid anything non-important at the moment for
> example WEP.
> > The use of events instead of a loop prevents the total system lockup, but
> > it blocks the driver and the keyboard.
I have tested with some setinfo called by the driver right after querying the
mac. The mac is correctly quered, NdisUnchainBufferAtBack called and then
dosetinfo() locks the system.
Here are the logs from the calls called after finishing init and the lockup,
the image was located at e5837000.
Dec 11 16:19:46 laptop kernel: past init res: 00000000
Dec 11 16:19:46 laptop kernel:
Dec 11 16:19:46 laptop kernel: setup_dev: Querying for mac
Dec 11 16:19:46 laptop kernel: Calling query at e583cd40 rva(00015d40)
Dec 11 16:19:46 laptop kernel: mac:00:04:23:59:37:92
Dec 11 16:19:46 laptop kernel: NdisUnchainBufferAtBack
Dec 11 16:19:46 laptop last message repeated 22 times
Dec 11 16:19:46 laptop kernel: scan_bh
Dec 11 16:19:46 laptop kernel: Calling setinfo at e583cd40 rva(00015d40)
Dec 11 16:19:46 laptop kernel: NdisScheduleWorkItem
Dec 11 16:19:46 laptop kernel: NdisScheduleWorkItem: scheduling work
Dec 11 16:19:46 laptop kernel: NdisScheduleWorkItem: scheduled work
Dec 11 16:19:46 laptop kernel: res=00000103, calling wait_event
--Keyboard blocked, no more messaged--
> Why is the worker function not called? Can you illustrate with a dmesg?
The log ends with calling wait_event. See above. I added some more debug
> > Any ideas how to solve this?
> In the future we can use our own thread for this and now the kernels
> worker-thread (which is shared with the keyboard handler).
Is there a call which allows other threads to be executed? I think of
something like the doevents() in Visual Basic if you know VB. It allows the
rest of the application to handle events and redraw the window when called in
Is there some similar call in the Linux Kernel API? We could call it from our
waiting loop, or if possible from wait_event to make the worker work again?
The dosetinfo function is called quite often, not only if I set something with
iwconfig. I implemented a simple timeout for the wait and noticed a 1 secound
system block every 10-15 secounds. When I turned on the interface by setting
an AP the blocks came more often. While pinging my access point they came
every secound - one secound block, one secound no block, and so on until I
stopped pinging. I will try again tomorrow when the outher computers are not
in use, so I can exclude other network trafic.
Which Centrino Notebook do you have to try with? There are some differences
between the centrino drivers. I use an Acer Travelmate 803.