The SSL handshake was fail in step MBEDTLS_SSL_CLIENT_FINISHED, the return code of mbedtls_ssl_write_finished(ssl) was -7 which means SOCKET_CLOSED by Sn_SR.
The call stack was as following:
send() WIZnetSend() mbedtls_ssl_flush_output() mbedtls_ssl_write_record() mbedtls_ssl_write_handshake_msg() mbedtls_ssl_write_finished() mbedtls_ssl_handshake_client_step() mbedtls_ssl_handshake() wiz_tls_connect()
I also check the other registers when send fail
Sn_SR = 0x00; 2Sn_IR = 0x17; //It’s odd all the interrupt status set to 1
Sn_IMR = 0x1F; //all kinds of interrupt enabled
Sn_CR = 0x0; //no hint from command register
SIR = 0x1; // socket 0 has interrupt occurred
RTR = 0xFFFF; //max timeout
RCR = 0x09; //retry count
I doubt it’s caused by timeout. But still the same after increase the RTR to the max value before handshake. And, it also mentioned in datasheet:
If a RST packet is received from a peer during communication, Sn_SR is unconditionally changed to SOCK_CLOSED
How to make sure the RST packet was received?
Is there any hint from the registers’ value?
How to debug fail in this step and go further?