Bluetooth: Controller: Use bt_buf_get_rx for buffer allocation
The controller uses K_FOREVER for the allocations so there's no benefit in trying to use specialized pools (which exist to try to guarantee availability of buffers for critical data). Change-Id: I130f2c44a2f28af1284290e6a0b17dcba438862f Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
3fb654ecd1
commit
d79bdd74e9
1 changed files with 13 additions and 27 deletions
|
@ -218,16 +218,11 @@ static void recv_thread(void *p1, void *p2, void *p3)
|
||||||
|
|
||||||
while ((num_cmplt = radio_rx_get(&node_rx, &handle))) {
|
while ((num_cmplt = radio_rx_get(&node_rx, &handle))) {
|
||||||
|
|
||||||
buf = bt_buf_get_evt(BT_HCI_EVT_NUM_COMPLETED_PACKETS,
|
buf = bt_buf_get_rx(K_FOREVER);
|
||||||
K_FOREVER);
|
bt_buf_set_type(buf, BT_BUF_EVT);
|
||||||
if (buf) {
|
hci_num_cmplt_encode(buf, handle, num_cmplt);
|
||||||
hci_num_cmplt_encode(buf, handle, num_cmplt);
|
BT_DBG("Num Complete: 0x%04x:%u", handle, num_cmplt);
|
||||||
BT_DBG("Num Complete: 0x%04x:%u", handle,
|
bt_recv(buf);
|
||||||
num_cmplt);
|
|
||||||
bt_recv(buf);
|
|
||||||
} else {
|
|
||||||
BT_ERR("Cannot allocate Num Complete");
|
|
||||||
}
|
|
||||||
|
|
||||||
k_yield();
|
k_yield();
|
||||||
}
|
}
|
||||||
|
@ -241,20 +236,14 @@ static void recv_thread(void *p1, void *p2, void *p3)
|
||||||
if (node_rx->hdr.type != NODE_RX_TYPE_DC_PDU ||
|
if (node_rx->hdr.type != NODE_RX_TYPE_DC_PDU ||
|
||||||
pdu_data->ll_id == PDU_DATA_LLID_CTRL) {
|
pdu_data->ll_id == PDU_DATA_LLID_CTRL) {
|
||||||
/* generate a (non-priority) HCI event */
|
/* generate a (non-priority) HCI event */
|
||||||
buf = bt_buf_get_evt(0, K_FOREVER);
|
buf = bt_buf_get_rx(K_FOREVER);
|
||||||
if (buf) {
|
bt_buf_set_type(buf, BT_BUF_EVT);
|
||||||
hci_evt_encode(node_rx, buf);
|
hci_evt_encode(node_rx, buf);
|
||||||
} else {
|
|
||||||
BT_ERR("Cannot allocate RX event");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* generate ACL data */
|
/* generate ACL data */
|
||||||
buf = bt_buf_get_acl(K_FOREVER);
|
buf = bt_buf_get_rx(K_FOREVER);
|
||||||
if (buf) {
|
bt_buf_set_type(buf, BT_BUF_ACL_IN);
|
||||||
hci_acl_encode(node_rx, buf);
|
hci_acl_encode(node_rx, buf);
|
||||||
} else {
|
|
||||||
BT_ERR("Cannot allocate RX ACL");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf) {
|
if (buf) {
|
||||||
|
@ -293,11 +282,8 @@ static int cmd_handle(struct net_buf *buf)
|
||||||
* actual point is to retrieve the event from the priority
|
* actual point is to retrieve the event from the priority
|
||||||
* queue
|
* queue
|
||||||
*/
|
*/
|
||||||
evt = bt_buf_get_evt(BT_HCI_EVT_CMD_COMPLETE, K_FOREVER);
|
evt = bt_buf_get_rx(K_FOREVER);
|
||||||
if (!evt) {
|
bt_buf_set_type(evt, BT_BUF_EVT);
|
||||||
BT_ERR("No available event buffers");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
err = hci_cmd_handle(buf, evt);
|
err = hci_cmd_handle(buf, evt);
|
||||||
if (!err && evt->len) {
|
if (!err && evt->len) {
|
||||||
BT_DBG("Replying with event of %u bytes", evt->len);
|
BT_DBG("Replying with event of %u bytes", evt->len);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue