In my application, we regularly transmit a stream of notifications from a Peripheral Server to a Central Client. The general strategy for this is to enqueue a packet, and then wait for a BLE_GATTS_EVT_HVN_TX_COMPLETE to enqueue another one. I have noticed that if I synchronously enqueue three packets at the start of the stream before I wait for transmissions, then overall throughput is much faster (by about a factor of three) than if I only enqueue two at the start of the stream. Why is this?
I have kept hvn_tx_queue_size at 1, and my notifications and MTU are sized such that hvn_tx_complete.count is always 1. Why am I allowed to enqueue three packets at all?
I am using SoftDevice s132 v5.1.0.