Host AP driver - Frequently Asked Questions
===========================================

1. What does "GetNextTuple: No more items" mean in hostap_cs initialization?
2. Why RX does not work?
   What does "NETDEV WATCHDOG: wlan0: transmit timed out" mean?
   (interrupt delivery problems)
3. What is wrong with Host AP mode in secondary (station) firmware v1.4.2?
4. What is causing 'Unresolved symbols' in depmod/modprobe?



1. What does "GetNextTuple: No more items" mean in hostap_cs initialization?

This is one of the most often reported problems in getting the
hostap_cs.o driver working. It is usually reported for D-Link DWL-650
PC Card, e.g., on ISA-to-PCMCIA adapter. Later versions of the driver
report this also with "Vcc mismatch - skipping this entry".

Most common reason for getting this is a mismatch in voltage
configuration. The driver tries to make sure that the voltage (Vcc)
configuration in CIS and the slot match each other. It refuses to
initialize the card if the card CIS does not include a CFTABLE entry
with a matching Vcc value. This seems to be a problem for some cases
since the CIS is invalid or the reported voltage is incorrect.

As a workaround, the driver supports a module parameter ignore_cis_vcc
that can be used to skip this verification. This can be enabled by
setting ignore_cis_vcc=1 in /etc/pcmcia/hostap_cs.conf (commented
example line in the end of file). This can also be tested by manually
loading the module with 'modprobe hostap_cs ignore_cis_vcc=1' before
inserting the card).



2. Why RX does not work?
   What does "NETDEV WATCHDOG: wlan0: transmit timed out" mean?
   (interrupt delivery problems)

If the driver does not seem to receive any packets or sending packets
results in "NETDEV WATCHDOG: wlan0: transmit timed out", the reason is
probably in interrupt delivery problems. This is quite common with
PCI-to-PCMCIA adapters. Newer than 2002-05-19 of the driver have a
test that will report this after the initialization ("wlan: Possible
interrupt delivery problem"). Another method for checking this is to
observer whether interrupt counters in /proc/interrupts increase for
hostap_cs/wlan0 entry.

Adding suitable irq_mode=# setting in PCIC_OPTS line of
pcmcia-configuration is the most common fix for this. pcmcia-cs HOWTO
has more information on how to debug and fix interrupt delivery
problems at
http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO-5.html#irqmode



3. What is wrong with Host AP mode in secondary (station) firmware v1.4.2?

It looks like secondary firmware v1.4.2 sends beacon frames properly,
but does not respond to probe requests. With most station cards, this
prevents authentication and association and thus, in practice, no data
frames can be sent. It has been reported that at least some Cisco
Aironet 350 cards can associate with Host AP mode even with firmware
v1.4.2 (i.e., without receiving probe response), but Prism2 and
Lucent/ORiNOCO/Agere seem to require probe response and they do not
thus associate with AP using v1.4.2 firmware.

This is fixed in later secondary firmware versions; probably already
in 1.4.3, but at least 1.4.9 has been tested to work. In other words,
this problem can be fixed by upgrading card firmware.



4. What is causing 'Unresolved symbols' in depmod/modprobe?

Installation of Host AP driver (e.g, 'make install_pccard') may report
unresolved symbols when running depmod. These are usually caused with
mismatch in kernel configuration for modversions.

Example:

depmod reports unresolved symbol 'eth_type_trans' (this is without
modversions):
depmod:         eth_type_trans

but kernel was really configured with CONFIG_MODVERSIONS:

# grep eth_type_trans /proc/ksyms
c01b66c0 eth_type_trans_Rdb9cd26f

(notice the _R... postfix)

This happens if the kernel configuration given to Host AP driver's
Makefile (.config in KERNEL_PATH) has not CONFIG_MODVERSIONS, but the
running kernel is compiled with it.
If the kernel were configured without modversions, /proc/ksyms would
show the symbols with _R... postfix:


Mismatches in kernel configuration can be fixed by using the same
configuration (i.e., Linux kernel .config) for both the kernel and the
driver. If you are using a kernel from a distribution installation
(i.e., you have not compiled it yourself), you will need to create a
matching .config file somehow. This depends on the distribution you
are using, but 'make oldconfig' in kernel source directory might work
with some distributions. If you compile the kernel yourself, it will
be easier, since you already have to have created the correct .config
file.
