I currently have a Braveridge device which uses an advertising rate of 50 Hz (connection interval is 20ms)
CONNECTABLE_ADV_INTERVAL is set to 0x0020
sd_ble_gap_adv_start(&m_adv_params);
In the advert packet I have a counter(1byte), so I can determine when packets are lost at the receiver end (In this case a PC or Android). Packets are lost. This isn't an issue.
Using the counter, and a timer at the PC end, I have estimated the average transmission rate. The actual transmission rate comes out at a about 40Hz(39Hz->41Hz). The application is very basic, it simply sends the counter data in the advertisment packet. The app has no other functionality.
The Nordic API is very clear, so I can see no issues there. At lower frequencies, I can also see the actual transmission frequency is lower than that set in software.
I'm not sure of the cause, perhaps it is hardware, or perhaps the software can't keep up.