bluetooth: controller: Added function to support RX link quota update
Added ll_rx_link_inc_quota to allow vendor to manipulate mem_link_rx.quota_pdu when cleaning up nodes via ull_vendor.h. Signed-off-by: Morten Priess <mtpr@oticon.com>
This commit is contained in:
parent
07b942f689
commit
d62ad4117c
1 changed files with 11 additions and 7 deletions
|
@ -211,6 +211,7 @@ static void rx_demux(void *param);
|
||||||
static inline int rx_demux_rx(memq_link_t *link, struct node_rx_hdr *rx);
|
static inline int rx_demux_rx(memq_link_t *link, struct node_rx_hdr *rx);
|
||||||
static inline void rx_demux_event_done(memq_link_t *link,
|
static inline void rx_demux_event_done(memq_link_t *link,
|
||||||
struct node_rx_hdr *rx);
|
struct node_rx_hdr *rx);
|
||||||
|
static inline void ll_rx_link_inc_quota(int8_t delta);
|
||||||
static void disabled_cb(void *param);
|
static void disabled_cb(void *param);
|
||||||
|
|
||||||
#if defined(CONFIG_BT_CONN)
|
#if defined(CONFIG_BT_CONN)
|
||||||
|
@ -431,8 +432,7 @@ ll_rx_get_again:
|
||||||
&memq_ll_rx.head, NULL);
|
&memq_ll_rx.head, NULL);
|
||||||
mem_release(link, &mem_link_rx.free);
|
mem_release(link, &mem_link_rx.free);
|
||||||
|
|
||||||
LL_ASSERT(mem_link_rx.quota_pdu < RX_CNT);
|
ll_rx_link_inc_quota(1);
|
||||||
mem_link_rx.quota_pdu++;
|
|
||||||
|
|
||||||
mem_release(rx, &mem_pdu_rx.free);
|
mem_release(rx, &mem_pdu_rx.free);
|
||||||
|
|
||||||
|
@ -556,9 +556,7 @@ void ll_rx_dequeue(void)
|
||||||
* since prio_recv_thread() peeked in memq_ll_rx via
|
* since prio_recv_thread() peeked in memq_ll_rx via
|
||||||
* ll_rx_get() before.
|
* ll_rx_get() before.
|
||||||
*/
|
*/
|
||||||
LL_ASSERT(mem_link_rx.quota_pdu < RX_CNT);
|
ll_rx_link_inc_quota(1);
|
||||||
|
|
||||||
mem_link_rx.quota_pdu++;
|
|
||||||
break;
|
break;
|
||||||
#endif /* CONFIG_BT_OBSERVER ||
|
#endif /* CONFIG_BT_OBSERVER ||
|
||||||
* CONFIG_BT_CTLR_SCAN_REQ_NOTIFY ||
|
* CONFIG_BT_CTLR_SCAN_REQ_NOTIFY ||
|
||||||
|
@ -820,6 +818,12 @@ void ll_rx_mem_release(void **node_rx)
|
||||||
rx_alloc(UINT8_MAX);
|
rx_alloc(UINT8_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void ll_rx_link_inc_quota(int8_t delta)
|
||||||
|
{
|
||||||
|
LL_ASSERT(delta <= 0 || mem_link_rx.quota_pdu < RX_CNT);
|
||||||
|
mem_link_rx.quota_pdu += delta;
|
||||||
|
}
|
||||||
|
|
||||||
void *ll_rx_link_alloc(void)
|
void *ll_rx_link_alloc(void)
|
||||||
{
|
{
|
||||||
return mem_acquire(&mem_link_rx.free);
|
return mem_acquire(&mem_link_rx.free);
|
||||||
|
@ -1263,7 +1267,7 @@ static inline void rx_alloc(u8_t max)
|
||||||
|
|
||||||
MFIFO_BY_IDX_ENQUEUE(ll_pdu_rx_free, idx, rx);
|
MFIFO_BY_IDX_ENQUEUE(ll_pdu_rx_free, idx, rx);
|
||||||
|
|
||||||
mem_link_rx.quota_pdu--;
|
ll_rx_link_inc_quota(-1);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_BT_CONN */
|
#endif /* CONFIG_BT_CONN */
|
||||||
|
|
||||||
|
@ -1290,7 +1294,7 @@ static inline void rx_alloc(u8_t max)
|
||||||
|
|
||||||
MFIFO_BY_IDX_ENQUEUE(pdu_rx_free, idx, rx);
|
MFIFO_BY_IDX_ENQUEUE(pdu_rx_free, idx, rx);
|
||||||
|
|
||||||
mem_link_rx.quota_pdu--;
|
ll_rx_link_inc_quota(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue