The physical and Datalink layer handles the data transfer between the Server and Client. Due to environmental factors if the Central misses to receive the correct data (checksum is checked) then the server will send the notification again. This might take the additional time you are observing.
Can you keep the Server and Client devices close to each other and check if you are observing the same?
Are you seeing error in data received by the central?
What is the difference in current consumption you have observed?
The right incoming of data I've checked with a CYC8PROTO-Board configured as Central with my own written GUI and with the Cypress BLE-Dongle CY5677 and CySmart 1.3. The devices lay on my table with a distance of 30 cm.
I think the problem is the CM0 Core, configured as controller, should not enter into DeepSleep without checking the BLE-Controller state. I add the following to main loop in CM0:
if( Cy_BLE_ControllerLPM( CY_BLE_BLESS_DEEPSLEEP ) == CY_BLE_BLESS_DEEPSLEEP )
Cy_SysPm_DeepSleep( CY_SYSPM_WAIT_FOR_INTERRUPT );
With this the high current consumption seems eliminated. I add an Code example were it is realized like in my Project.