I'm building a wireless communication system between a computer and a FPGA board with the DigiConnect WiME module.
I bought this module on November 2006 on the web site of Mouser: www.mouser.com
The FPGA integrated on the board is a Xilinx Spartan 3-E. I use Xilinx's UART component to send data to the WiME module. The serial link between the FPGA board and the WiME module works very well [The parameters: Wires connected to port 2 - Speed: 230400 bits/s - 1 Start bit / No parity / 1 Stop bit - No flow control - Link works at full load: 230400bits/s on wire TX].
I configured the WiME module in TCP Sockets mode - to send the data received on the serial link to a TCP server running on my computer.
Here is the main configuration of the WiME module:
IP - @IP: 172.16.0.2 Netmask: 255.255.255.0 Gateway: 172.16.0.1
Wifi - IEEE 802.11b in Ad-Hoc mode - Excellent signal - Channel 6 [The WiME module is alone on this channel !] - 11 Mbits/s ... [No Identification / No Authentication / No Encryption]
TCP Sockets on port 2 - WiME module is configurated to send the data to my computer 172.16.0.1 on TCP port 12702 - No others options like: keep-alive, match string, send after, send socket id ...
I builded a TCP server running under Cygwin (last version) in Microsoft Windows XP Pro SP2.
The system doesn't work perfectly. Sometimes, I loose some TCP segments, and so, some data ...
I've done frame captures with Ethereal to understand what happened. I saw that sometimes another equipment, probably a Wifi Access Point, broadcast on my channel a LLC frame. This event cuts the link during 1 seconde, the WiME module doesn't send anything. After, the communication restarts, the WiME sends data, but +/- 20 TCP segments have been discarded, and these segments are not retransmitted ...
Moreover, when the serial transmission is finished, I always lost the last data. The WiME module never send the last 200 / 500 bytes (There is not enought data for TCP to send a segment !), and the TCP client close the connection ... [Or after 45 min / 1 hour, the WiME module sends all the time ARP request to my computer to obtain the MAC address of my Wifi board and transmission becomes impossible !]
How can I fix this problem of reliability ?