Re: Prism2 Host AP - new release 2002-04-05


From: Bjørn Mork (bjorn_at_mork.no)
Date: 2002-04-07 17:01:21 UTC



Jouni Malinen <jkmaline_at_cc.hut.fi> writes:

> * 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

This made me optimistic since I've had a small performance problem with the latest releases (losing packets when transmitting many of them, causing TX speed to drop and reducing TX performance to a fraction of the theoretical). I'm using the driver on a 66 MHz 486 with a Vadem ISA-PCMCIA controller, so interrupt latency is probably as high as it can get.

Even with good signal quality I get lots of errors like this:

Apr  7 18:46:01 canardo kernel: wlan0: TXEXC - fid=0x051f - status=0x0008 ([FormErr]) tx_control=000e
Apr  7 18:46:01 canardo kernel:    retry_count=0 tx_rate=110 fc=0x0208 (Data::0)
Apr  7 18:46:01 canardo kernel:    addr1=00:a0:c5:15:07:43 addr2=00:a0:c5:15:06:c0 addr3=c5:15:06:c0:00:00
Apr  7 18:46:01 canardo kernel: wlan0: STA 00:a0:c5:15:07:43 TX rate lowered to 55
Apr  7 18:46:01 canardo kernel: wlan0: TXEXC - fid=0x0100 - status=0x0008 ([FormErr]) tx_control=000e
Apr  7 18:46:01 canardo kernel:    retry_count=0 tx_rate=55 fc=0x0208 (Data::0)
Apr  7 18:46:01 canardo kernel:    addr1=00:a0:c5:15:07:43 addr2=00:a0:c5:15:06:c0 addr3=c5:15:06:c0:00:00
Apr  7 18:46:01 canardo kernel: wlan0: STA 00:a0:c5:15:07:43 TX rate lowered to 20
Apr  7 18:46:02 canardo kernel: wlan0: TXEXC - fid=0x02c8 - status=0x0008 ([FormErr]) tx_control=000e
Apr  7 18:46:02 canardo kernel:    retry_count=0 tx_rate=20 fc=0x0208 (Data::0)
Apr  7 18:46:02 canardo kernel:    addr1=c5:15:07:43:00:a0 addr2=c5:15:06:c0:00:a0 addr3=c5:15:06:c0:00:00
Apr  7 18:46:02 canardo kernel: Could not find STA for this TX error
Apr  7 18:46:03 canardo kernel: wlan0: STA 00:a0:c5:15:07:43 TX rate raised to 55
Apr  7 18:48:13 canardo kernel: wlan0: STA 00:a0:c5:15:07:43 TX rate raised to 110

I guess the problem is that the platform is too slow handling the packets, not really that they are lost in the air. Probably not much that can be done about that. Your changelog made me a bit optimistic, but I couldn't really notice any improvement. The TX performance is still terrible (~500 kbits/s as opposed to the RX speed of ~5 Mbits/s).

And the 2002-04-05 version seems to cause another problem I'm having on this platform more often (I've seen this on all releases so far, but rarely on the 2002-x-x versions so far): Something causes the driver to try resetting the card, but the reset fails. When this happens I have to do a "ifconfig wlan0 down; cardctl eject; cardctl insert" to make things work again. Just toggling the interface down and up is not sufficient.

Here are the logs from a couple of such errors using the 2002-04-05 release:

Apr  6 20:33:33 canardo kernel: wlan0: hfa384x_cmd - timeout2 - reg=0x8001
Apr  6 20:33:33 canardo kernel: wlan0: prism2_transmit: CMDCODE_TRANSMIT failed (res=-110, resp0=0x0000)
Apr  6 20:33:33 canardo kernel: wlan0: prism2_tx - to BAP0 failed
Apr  6 20:33:33 canardo kernel: prism2: wlan0: resetting card
Apr  6 20:33:33 canardo kernel: prism2: card initialization timed out
Apr  6 20:33:33 canardo kernel: prism2: Initialization failed
Apr  6 20:33:33 canardo kernel: prism2_cor_sreset: original COR 41
Apr  6 20:33:33 canardo kernel: prism2_hw_config()
Apr  6 20:33:33 canardo kernel: wlan0: prism2_tx: hw not ready - skipping
Apr  6 20:34:04 canardo last message repeated 20 times
Apr  6 20:35:06 canardo last message repeated 15 times
Apr  6 20:35:18 canardo last message repeated 5 times

Apr  6 21:09:31 canardo kernel: wlan0: hfa384x_cmd - timeout2 - reg=0x8001
Apr  6 21:09:31 canardo kernel: Already released txfid found at idx 1
Apr  6 21:09:31 canardo kernel: wlan0: prism2_transmit: CMDCODE_TRANSMIT failed (res=-110, resp0=0x0000)
Apr  6 21:09:31 canardo kernel: wlan0: prism2_tx - to BAP0 failed
Apr  6 21:09:31 canardo kernel: prism2: wlan0: resetting card
Apr  6 21:09:31 canardo kernel: SWSUPPORT0 write/read failed: 0000 != 8A32
Apr  6 21:09:31 canardo kernel: prism2: Initialization failed
Apr  6 21:09:31 canardo kernel: prism2_cor_sreset: original COR 41
Apr  6 21:09:31 canardo kernel: prism2_hw_config()
Apr  6 21:09:31 canardo kernel: prism2_hw_config: initialized in 12359 iterations
Apr 6 21:09:31 canardo kernel: wlan0: prism2_tx: hw not ready - skipping Apr 6 21:10:01 canardo last message repeated 6 times

I'm not entirely sure whether it's the driver or the PCMCIA subsystem that really causes the failure, but my life would have been a lot easier if the driver could somehow detect it and do a successful reset instead of the endless failing one.

Bjørn



This archive was generated by hypermail 2.1.4.