Prism2 Host AP - new release 2002-04-05
From: Jouni Malinen (jkmaline_at_cc.hut.fi)
Date: 2002-04-05 15:44:47 UTC
A new version of Prism2 Host AP driver was just released and it is now
available from http://people.ssh.com/jkm/Prism2/
This version includes quite a lot of small changes and preliminary WDS
support. You should note, that it uses non-standard-compliant
four-address frame and does not thus interoperate with other AP
devices. See README.prism2 for more information about WDS and frame
format.
Please also note, that I have not tested the new code very
thoroughly. I mainly checked that the WDS links can be configured and
frames look correct. I successfully tested a simple bridging setup
(WDS example in README.prism2), but that's about it. I updated
documentation, but not everything is yet explained thoroughly (well,
you get the source code.. ;-).
2002-04-05
- implemented radio (both RX and TX) enable/disable to iwconfig
'txpower' command ('iwconfig wlan0 txpower off' to turn radio off
and 'iwconfig wlan0 txpower auto' to turn in on)
- added 'iwpriv wlan0 writemif <CR*2> <value>' command (see HFA386x
baseband processor datasheet (http://www.intersil.com/data/FN/FN4/
FN4856/FN4856.pdf) for information about configuration registers)
- private ioctl() (used with iwpriv) reorganization:
- replaced separate private ioctls with one generic routine to save
ioctl numbers
- some ioctl numbers were changed; from now on, PRISM2_IOCTL_*
definitions in prism2_wlan.h should be used
- new command 'iwpriv wlan# prism2_param <param#> <value>'
- changed 'iwpriv wlan# ...':
'ptype <value>' -> 'prism2_param 1 <value>'
'txratectrl <value>' -> 'prism2_param 2 <value>'
'beacon_int <value>' -> 'prism2_param 3 <value>'
'pseudo_ibss <value>' -> 'prism2_param 4 <value>'
'alc <value>' -> 'prism2_param 5 <value>'
'txpower <value>' -> 'prism2_param 6 <value>'
'dump <value>' -> 'prism2_param 7 <value>'
- new configurable parameters:
8: other AP policy for received beacon handling:
0 = skip all beacons, 1 = accept beacons with our SSID,
2 = accept beacons from all APs,
3 = accept all beacons (even from IBSS)
(default 0)
9: AP max station inactivity time in seconds
(default 1800 seconds = 30 minutes)
- AP bridge packets directly between associated stations (0 or 1)
(default 1=yes)
- DTIM period (default 1)
- data::nullfunc ACK workaround
(default 1 with STA f/w 0.8.0 and 0 otherwise)
- max number of WDS connections (default 16)
- automatic WDS connections for neighboring APs
(default 0 = do not add automatically)
- added utils/prism2_param: a wrapper for 'iwpriv wlan# prism2_param'
command (shows usage information when run without any arguments;
allows symbolic names to be used for setting parameters)
- new module parameters:
'beacon_int': initial beacon interval (1 = 1024 usec), default 100
'dtim_period': DTIM period, i.e., number of beacon intervals between
successive delivery traffic identification maps (DTIMs),
used for power saving and multicast/broadcast delivery,
default 1 (this was previously always hardcoded to 3)
- optimizations to interrupt handling:
- masked TX events since they cause an extra interrupt for each TX
frame and Alloc event can be used to increment tx_packets counter
(old behavior can be restored by defining PRISM2_USE_TX_INTERRUPT)
- use WTERR (Wait Time-out) only if final_version is not defined
- removed DTIM and Tick event handling since they were not used for
anything (and DTIM event would require AP f/w anyway)
- these changes should make the interrupt handler somewhat faster
and reduce the number of interrupts; this should help especially
on platforms with low performance and/or high interrupt latency
- fixed HW shutdown not to disable HFA384x just after sreset (it would
not succeed) or when the card is going to be enabled immediately
(e.g., reset after timeout).
- converted workaround for data::nullfunc ACKs with stations using PS
mode to be run-time configurable (previously, it was set with
compile time definition PRISM2_NULLFUNC_ACK); current default is to
use this workaround with station firmware version 0.8.0, but rely on
firmware on all other versions; 'iwpriv wlan0 prism2_param 12 1' can
be used to enable this workaround with other versions
- AP now rejects nullfunc frames with no ToDS flag from not associated
stations to speed up re-association after AP restart (this seems to
help at least when stations are using Lucent firmware; previously,
these frames were silently dropped)
- fixed prism2_rx() to decrease sta->users on couple of error
conditions
- fixed prism2_interrupt() to first check whether hardware is ready
before trying to reset the card in order to avoid bogus
initialization when using 'cardctl eject'
- added preliminary WDS (wireless distribution system) support
- this is loosely based on driver modifications done by
Simon Barber <simon_at_instant802.com> of Instant802 Networks Inc.
for AP-AP mesh used in OpenAP project
(http://opensource.instant802.com/)
- the driver can now parse received beacon frames and keep records
about neighboring APs (similarily to associated stations)
- 'other AP policy' ('iwpriv wlan# prism2_param 8 <val>', see above)
is used to select, which beacons are processed
- WDS connections can be added with 'iwpriv wlan# wds_add <other end
hwaddr>' and removed with similar wds_del command. hwaddr
00:00:00:00:00:00 can be used as a special address to pre-allocate
netdevices. These entries are used when adding the real WDS link,
e.g., when a new AP is detected. Pre-allocated devices can be
included in a bridging configuration and set into UP state before
knowing the real AP address.
- each WDS connection creates a new netdevice (wlan0wds0,
wlan0wds1, ..) and every frame received from that WDS connection
is seen coming from that device and not wlan0; all frames destined
to the WDS connection, are to be sent to the corresponding
netdevice (either by using a proper routing table entry or
bridging configuration)
- /proc/net/prism2/wlan#/wds lists configured WDS connections
(device name and remote end hwaddr)
- WDS frames use 4-address 802.11 frames which allow the original
source and destination hwaddresses to be preserved over the
connection;
Note! Due to a bug in Prism2 station firmware real IEEE 802.11
frame format cannot be used in Host AP mode. This version of the
driver uses a bit different (i.e., incompatible) format in which
the fourth address is sent after the frame payload to overcome
this problem. In other words, this works only if the other end
knows how to use this kind of frames. The frame format should be
identical to one used in OpenAP project. ode for using real format
is present in prism2.c, but it is commented out since there is no
working version of the station firmware available.
- new prism2_param parameter 13 is used to set maximum number of
allowed WDS connections (i.e., it can be set during normal
operations)
- new prism2_param parameter 14 is used to control whether WDS
connections are automatically established for neighboring APs
(removing these entries automatically when AP information expires
does not work in this version, i.e., the entries need to be
removed manually with 'iwpriv wlan0 wds_del <addr>')
- added support for setting retry limit manually, e.g., with
'iwconfig wlan0 retry 3'); initially, driver uses firmware defaults
and this mode can be restored by setting retry value to -1;
value 0 means that packets are sent only once (i.e., 0 retries)
--
Jouni Malinen PGP id EFC895FA
This archive was generated by
hypermail 2.1.4.