Re: [Ndiswrapper-general] Async setinfo
Status: Beta
Brought to you by:
pgiri
From: Stefan <ste...@gm...> - 2003-12-11 16:46:10
|
> 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 lines. > > 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 a loop. 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. /Stefan |