- Operating system Linux, Kernel 3.4.7
- WiLink™ WL183x single antenna
- WiLink™ firmware version R8.6SP1
- Network capture link
- Ini file link
- wlconf dump link
- wl18xx-conf.bin link
Dear TI Wilink Forum
We have encountered a problems with the TI WL1835 module that we think are related to the F/W implementation.
We would like to share with our observations and hope it can be resolved via a F/W patch
Fault in Block ACK implementation
The issues comes up with Linksys E-900/E-1200 AP (we assume it would be common to other designs that share the same chipset.
The problem is with an erroneous interpretation of the block ACK bit field by the TI design.
The Linksys AP sets bit for received packets in the last received burst but does not set bits for packets that were previously received and already acknowledged in previous BA packets.
The TI device interprets the fact that bits are not set to indicate the packets have not been received and retries sending them even if they were previously acknowledged. More over the TI device considers these ‘lost’ packets in its PER calculation and therefore starts lowering the transmission modulation.
The net effect is a complete collapse in many cases and discontinuation of block ACK operation scheme.
To clarify this, here is a short example:
TI sends packet burst with SN 750 – 759
Linksys responds with BA indicating packets 750,752-757,759 received (i.e. 751 and 758 have not been received
TI sends packet burst with SN 751,758,760 – 767
Linksys responds with BA indication packets 751,758,760-767 all have been received, but does not mark the packets 750,752-757 as they were already acknowledged and not part of last burst.
TI interprets this as loss of packets 750,752-757 and sends the following burst SN 750,752-757,768-770
Linksys responds with marking 750,752-757,768-770 but not marking 751,758-767
TI interprets this as loss of 751 etc….
It should be noted that other implementations (several wifi sticks) tested for WiFi devices were able to interpret the Block ACK response correctly, and did not repeat transmission of a packet that has been already been acknowledged.
We are not in the position to say if the Linksys implementation is in violation of the spec, but even if it is, we are facing major interop issue that can easily be avoided with fix the BA implementation (i.e. do not re-transmit packets previously acknowledged)