diff --git a/subsys/bluetooth/controller/ll_sw/ull.c b/subsys/bluetooth/controller/ll_sw/ull.c index 490e529ac7f..b6da94f4ec1 100644 --- a/subsys/bluetooth/controller/ll_sw/ull.c +++ b/subsys/bluetooth/controller/ll_sw/ull.c @@ -154,11 +154,20 @@ static MFIFO_DEFINE(ll_pdu_rx_free, sizeof(void *), LL_PDU_RX_CNT); #define PDU_RX_OCTETS_MAX 0 #endif -#define PDU_RX_POOL_SIZE (MROUND(offsetof(struct node_rx_pdu, pdu) + \ - sizeof(struct node_rx_ftr) + \ - MAX((PDU_AC_SIZE_MAX + PDU_AC_SIZE_EXTRA), \ - (offsetof(struct pdu_data, lldata) + \ - PDU_RX_OCTETS_MAX))) * RX_CNT) +#define NODE_RX_HEADER_SIZE (offsetof(struct node_rx_pdu, pdu)) +#define NODE_RX_FOOTER_SIZE (sizeof(struct node_rx_ftr)) +#define NODE_RX_STRUCT_OVERHEAD (NODE_RX_HEADER_SIZE + NODE_RX_FOOTER_SIZE) + +#define PDU_ADVERTIZE_SIZE (PDU_AC_SIZE_MAX + PDU_AC_SIZE_EXTRA) +#define PDU_DATA_SIZE (PDU_DC_LL_HEADER_SIZE + PDU_RX_OCTETS_MAX) + +#define PDU_RX_NODE_POOL_ELEMENT_SIZE \ + MROUND( \ + NODE_RX_STRUCT_OVERHEAD \ + + MAX(PDU_ADVERTIZE_SIZE, PDU_DATA_SIZE) \ + ) + +#define PDU_RX_POOL_SIZE (PDU_RX_NODE_POOL_ELEMENT_SIZE * RX_CNT) static struct { u16_t size; /* Runtime (re)sized info */