Flow control mechanism of WIZnet serial to ethernet module

Recently, I got a question from one of customers.
That is what they found out WIZ107SR’s flow control has something wrong while evaluating it.

As a result, I can say that WIZ107SR’s flow control works well but they had a different expectation.

Below is their network configuration for test.

Working scenario is like below.

  1. When one activates RTS signal of Computer A, it informs that Computer A has no buffer for data from WIZ107SR A.
  2. Then, WIZ107SR A doesn’t send any data received from its peer, WIZ107SR B, to Compter A via Serial I/F. (Decreasing windows size of WIZ107SR A shows that RTS/CTS flow control of WIZ107SR works well)
  3. But, WIZ107SR A has 2KB Rx data buffer inside its TCP/IP core logic so it accepts data from WIZ107SR B and stores it into its internal buffer.
  4. It means that Computer B can send data to WIZ107SR A via WIZ107SR B, even though Computer A activated RTS signal to inform that it has no room to store data.
  5. However, data which Computer B sent isn’t lost because WIZ107SR A stores it in its internal buffer.
  6. If one deactivates RTS signal of Computer A then all data which stored in Rx buffer of WIZ107SR A will be transferred to Computer A.

And to conclude,

  1. WIZ107SR’s RTS/CTS Flow control works well under the condition which we designed.
  2. With above network configuration, if ones want for Computer B not to send any data while Computer A activates RTS signal, then that is not WIZnet’s design goal.
  3. If someone wants that Computer B knows it instantly when Computer A activates RTS signal, then it’s an customization issue.

Thank you.