There's no question, I'm just posting this here in the hopes that it helps someone else out.
After I upgraded my Keil packs to the newest SDK (v8.1.0), my OTA FWU bootloader mysteriously stopped working (originally based on example project). I was using Master Control Panel v3.9.0.6 to test it out, and I would get an error as soon as it started. I looked at the MCP log and found this:
Response received for Request Op Code = 3
Ultimately, I traced down the source of the problem by setting a breakpoint in dfu_error_notify() in dfu_transport_ble.c and seeing where it was getting called from, which was this snippet in app_data_process():
err_code = hci_mem_pool_rx_produce(length, (void **) &mp_rx_buffer);
if (err_code != NRF_SUCCESS)
{
dfu_error_notify(p_dfu, err_code);
return;
}
It turns out that upgrading the Keil Packs overwrote the contents of hci_mem_pool_internal.h from this (the correct version):
#define TX_BUF_SIZE 4u /**< TX buffer size in bytes. */
#define RX_BUF_SIZE 32u /**< RX buffer size in bytes. */
#define RX_BUF_QUEUE_SIZE 8u /**< RX buffer element size. */
to this (the incorrect version and the default if you don't change it):
#define TX_BUF_SIZE 600u /**< TX buffer size in bytes. */
#define RX_BUF_SIZE TX_BUF_SIZE /**< RX buffer size in bytes. */
#define RX_BUF_QUEUE_SIZE 4u /**< RX buffer element size. */
Moral of the story: be careful when updating Keil Packs!