Dell D830 Broadcom 432AGN WiFi mini PCI-Express

With v5 ndis I can get max speed in both cases (over encrypted and unencrypted wifi connection), but it likes to panic ATM.
If wpa isn't used (open wifi), then I can get max speed with v4 ndis too.
Does this fact, gives you any indication, where problem might be?

Will you implement a MONITOR mode too, besides 'sta' only mode?
 
Seeker said:
With v5 ndis I can get max speed in both cases (over encrypted and unencrypted wifi connection), but it likes to panic ATM.
If wpa isn't used (open wifi), then I can get max speed with v4 ndis too.
Does this fact, gives you any indication, where problem might be?

Will you implement a MONITOR mode too, besides 'sta' only mode?

Got backtrace of panic? It would be very useful.

MONITOR mode could be possible only with 6.20 NDIS API.
 
richardpl said:
Got backtrace of panic? It would be very useful.
First v5 panic
Second v5 panic
richardpl said:
MONITOR mode could be possible only with 6.20 NDIS API.
When will that happen?

Upon ndis0 detach I get:
Code:
ndis0: detached
Freed UMA keg was not empty (98 items).  Lost 5 pages of memory.
Warning: memory type ndis_ntoskrnl leaked memory on destroy (24 allocations, 1536 bytes leaked).
 
The 6.X NDIS API support is not trivial and I work on it when I can.

ntoskrnl memory leaks are known and currently not really important.

UMA leaks means we probably should flush queued workitems before halting/detaching.
 
Without WPA with v4 ndis (open WiFi) connection newer break(need to destroy/create wlan0) and can reach full speed!
So problem occurs when wpa_supplicant is being used with v4 ndis.
Do you have any kind of advice for me, based on provided info?
 
Well here is a breaktgrough ...
By using v4 ndis, I've managed to reach almost max speeds and no connection breaks('EAPOL-Key Replay Counter did not increase - dropping packet'), when wlan0 is idle, by commenting out:
Code:
#eapol_version=2
In which case it defaults to 1.

Looks like v4 likes older eapol_version 1, while v5 works with eapol_version 2.
 
Wait, wait, my previous post was related to ndisulator code, dating from 22th
I see you did a job, on it, last night.

So now I've download that latest code from 5th and now, situation is quite the contrary:
Tested v4 only:
With default eapol_version 1 I get ~33% of speed, reaching max of 50% of max speed.
By using
Code:
eapol_version=2
, now I finally reach true max speed! ;)

Idle connection not tested, yet...

Great job!
 
I doubt that any of latest changes improved anything (expect in some strange, unexplored cases) so I believe that your testing environment is always different.

Drivers handle encryption themselves (maybe in hardware) and I yet have to make performance tests and confirm that problem can be fixed.

Note that on SMP there is big mess with locking stuff so it can hurt performance.
 
Unfortunately idle connection now again causes 'EAPOL-Key Replay Counter did not increase - dropping packet' with both eapol_versions 1 and 2

richardpl said:
I doubt that any of latest changes improved anything (expect in some strange, unexplored cases) so I believe that your testing environment is always different.

Nope! I'm using script which completely shuts down wpa, ndis_events, destroys wlan0 device and unloads modules, THEN reverts those steps and configures everything, always in a same ways as it is scripted and verbose.

I'm just stating cold facts.
richardpl said:
Drivers handle encryption themselves (maybe in hardware) and I yet have to make performance tests and confirm that problem can be fixed.

Note that on SMP there is big mess with locking stuff so it can hurt performance.

I'll go again for 22th code, well ... 23th.
 
So you have idle problems with any AP or with just specific configuration?

Can you change power management settings of AP?

You can change power management setting for client via ifconfig(8) but I'm not sure if net80211 handle this correctly.

Try to ping something behind AP every minute and this should be reliable workaround.
 
My AP is a FreeBSD box, configured via hostapd on ral0 device (Well ..., wlan0)
In response to yours
I doubt that any of latest changes improved anything (expect in some strange, unexplored cases) so I believe that your testing environment is always different.
I've run my script, several times(completely shuts down wpa, ndis_events, destroys wlan0 device and unloads modules, THEN reverts those steps and configures everything, always in a same ways as it is scripted and verbose.) and each time I've 5 times downloaded 80MB file from my AP(always getting same average speed).
So, conclusion is very ...
With v4 ndis I always get transfer speed of ~230 kB/s, BUT approx EACH 6th time I run my script, I get ~745 kB/s
I've tested this with both eapol_versions 1 and 2 and concluded that those don't affect this in any way!
I simply have to run my script and test speed each time, UNTIL I get max speed, without changing ANY config.

NOTE however, that I dualboot WinXP and while in WinXP I don't have ANY issues with that same AP, only in FreeBSD over ndis.
 
There is also a LAG, whenever I initiate connection over wlan0.
Even if just resolving domain, it hangs for a while and sometimes results in "unable to resolve host address"

As my AP is 'ral', in which's man pages, section BUG, states:
Host AP mode doesn't support client power save.
Clients using power save mode will experience packet loss (disabling power saving on the client will fix this).
I can confirm this, as I had to do it under WinXP, long ago, to get max speed

'list scan' at my client, shows that AP is using Short Preamble and Power Save mode
Code:
My_AP       00:0e:2e:e5:0b:b9    6   54M -52:-96  100 EPS  WPA

At ndis-ed client, script sets power save to off:
Code:
# sysctl -d dev.ndis.0 | grep -i power
dev.ndis.0.MPC: Minimum Power Consumption [0=Disabled] [1=Enabled]
dev.ndis.0.PowerSaveMode: Power Save Mode [0=Disabled] [1=Enabled] [2=Fast]
cruiser# sysctl dev.ndis.0.MPC dev.ndis.0.PowerSaveMode
dev.ndis.0.MPC: 0
dev.ndis.0.PowerSaveMode: 0

At AP: 'list sta' states that client's CAPS are: EPS
Does this means 'sysctl dev.ndis.0.*' hooks don't work?

How do I make AP get rid of P flag in it's CAPS?
How do I force client into changing ndis properties? (manually editing drivers, before using ndisgen on them? TESTED->FAIL!)
 
For changing power save mode of AP you have ifconfig. For changing dev.ndis.0 you have sysctl and/or editor (edit in inf file default value for specific registry entry, note that you need to change all of them, not just first one, unless first one is actually your device and after that you must rebuild module and use this new module) but that one is irrelevant because they are overridden with OID from if_ndis anyway (by default it is always CAM).

I think it is better to have default registry values in file instead of module...
 
When on AP I issue:
[cmd=]ifconfig wlan0 -powersavemode[/cmd]
ndis-ed client still sees AP's CAPS: EPS
I simply can't turn P off on AP. I even looked into hostapd.conf for relevant entry, but nada!

I already tried changing .inf file before using ndisulator, so I wouldn't have to use [cmd=]sysctl dev.ndis.0[/cmd]

After module has been built, [cmd=]sysctl dev.ndis.0[/cmd] showed it was successful, but all issues remained: 1/3 of speed and broken connection when idle.

What should I do?
 
It can't be disabled on AP, even when I issue that command via ifocnfig.

Code:
# ifconfig wlan0 powersave
I get lines powersavemode CAM powersavesleep 100
Speed remains 1/3, but during download, it start to diminish till it reaches 0 and download hangs.

Ignoring AP, under WinXP I gain full speed, when I turn off PowerSave, so to me, it looks like, ndis always uses drivers default and sysctl has no effect/is ignored.
 
There is no such a function, but I've found ndis_set_powersave() and in it replaced everything with return (0);

Now ifconfig constantly shows powersavemode CAM powersavesleep 100, even when I did set again return (1);
I didn't recompile win_driver kernel module.

At first 3 shoots, I thought it worked as speed improved 2.5 times, but as I continued to test, speed remained at 1/3 as usual, when I repeatedly run my script (this time avoided "effect of eapol_versions")
 
What are results of pinging AP for 1 minute?

Well, use newer broadcom driver (do not initiate scan via ifconfig, wpa_supplicant will care for this).

If panic still happens (I had report that they do if CPUs are heavily used, compiling stuff) I will change how stuff is locked in sched queue and this should resolve such panics.

Also bugs at boot with newer drivers is gooing to be fixed soon. Actually driver does not cause panic any more but it also does not produce useful interface - forcing user to reload driver.
 
Panic occurs as soon as I run my script.
It happens when scan is being done via ifconfig to see which networks are available.
As this is laptop which roams, this is necessary, to know to which network is to be connected, based on written allowed/choosen SSIDs.
I.e; at caffe it would not start wpa and use dhcp, but at home it would be wpa + manual IP settings.

I reverted to v4 ndis, until this is fixed and will try make my AP unencrypted ...
 
wpa_supplicant supports both open and encrypted networks. Also you can use "list scan" because scan is done by kernel anyway (untill associated).
 
No encryption test

It is interesting to say that 'P' flag dissapeared from AP, when I commented out 'wpa=1' from hostapd.conf
Code:
...    6   54M -64:-96  100 ES
AP also reported client's caps as ES

Speed remained same, at 1/3, same as over encryption, but there were no breaks, just lags, so now I can compare it to:
In caffe, over unencrypted wifi, I get max speed without breaks.
 
With v4 I get ~220 Kb/s, but with v5, it drops to ~100 Kb/s + panic

I've also tried this patch, but nada.
I'm sick and tired of this wlan.

The fact is, when I boot via WinXP, I can get max speed, via it's v5 ndis.


Also, I suspect that ral0, might be buggy itself, as very rarely, I need to reboot AP, as ral0 stops responding.
And subjectively, even on WinXP, there seems to be lag, upon request and response

v4 driver ping times for 1 minute

One of this crashes was upon using v4
Also looks like I have problem with dumping(hangs)+NFS(I mount /usr/ports/distfiles from server on laptop and crash occurs when ports sources are being downloaded - initiated from laptop)+ndis
Third is VERY interesting!
1, 2, 3, 4
 
Just for fun, I wanted to find a way, to prove that sysctl dev.ndis.0.* directives are in effect, once set.
So, I picked sysctl dev.ndis.0.led*, as it is very visible one.
Doesn't work! Just a placebo effect!
Which explains why under ndisulator, I get a crappy sppeed - powersave mode remains ON.
This is what you should code now. Ensure that sysctl dev.ndis.0.* is being really enforced.
 
You really do not know what you are talking about. Search in windows registry for those entries. Such entries are not documented at all and you need to reset device (so that entries are read again)...

Actually sysctl stuff is half-broken in such a way to no eat bunch of memory. Entries should be really read from files because sysctl entries are not alowed to have variable memory size ...
 
Back
Top