Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

About the multiple ACKs in ATT MTU Throughput Example

Hi there

I am testing the ATT MTU throughput test provided by nRF5 SDK and I found the throughput could not reach the theoretical maximum 1.4Mbps.

Hence, I used the nRF Sniffer to analyze, and what I found was that after a certain stage there would be multiple ACKs after an ATT MTU data package.

The thing is that when there was only one ACK, the throughput was about 1.37Mbps ≈ 1.4Mbps. However, when there were multiple ACKs, the throughput was only about 0.6Mbps.

Right now, I suppose that these redundant ACKs were causing a reduction in the throughput, and they were happening almost every time. What could be the cause?

The screenshot of Wireshark is pasted below, and the connection parameters were shown in the following:

#define DATA_LENGTH_DEFAULT             27                                              /**< The stack default data length. */
#define DATA_LENGTH_MAX                 251                                             /**< The stack maximum data length. */

#define CONN_INTERVAL_DEFAULT           (uint16_t)(MSEC_TO_UNITS(400, UNIT_1_25_MS))    /**< Default connection interval used at connection establishment by central side. */

#define CONN_INTERVAL_MIN               (uint16_t)(MSEC_TO_UNITS(7.5, UNIT_1_25_MS))    /**< Minimum acceptable connection interval, in units of 1.25 ms. */
#define CONN_INTERVAL_MAX               (uint16_t)(MSEC_TO_UNITS(500, UNIT_1_25_MS))    /**< Maximum acceptable connection interval, in units of 1.25 ms. */
#define CONN_SUP_TIMEOUT                (uint16_t)(MSEC_TO_UNITS(4000,  UNIT_10_MS))    /**< Connection supervisory timeout (4 seconds). */
#define SLAVE_LATENCY                   0                                               /**< Slave latency. */

Here is how I calculate the max throughput and also other throughput:

Really appreciate it if this could be helped.

Best regards

Ethan

Related