From 154bdd46acadee8bb1fc6f28535fdf8a9fa61004 Mon Sep 17 00:00:00 2001 From: Jakub Rotkiewicz Date: Mon, 26 Sep 2022 10:12:55 +0200 Subject: [PATCH] btshell and blestress: update l2cap coc rx buffers Updated apps to support setting the RX SDU buffers number. --- apps/blestress/src/stress.c | 10 ++++++---- apps/blestress/syscfg.yml | 3 +++ apps/btshell/src/main.c | 16 +++++++++++----- apps/btshell/syscfg.yml | 3 +++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/apps/blestress/src/stress.c b/apps/blestress/src/stress.c index 1bdbafa9e..1a9cb0c0d 100644 --- a/apps/blestress/src/stress.c +++ b/apps/blestress/src/stress.c @@ -167,11 +167,13 @@ stress_l2cap_coc_accept(uint16_t peer_mtu, struct ble_l2cap_chan *chan) console_printf("LE CoC accepting, chan: 0x%08lx, peer_mtu %d\n", (uint32_t) chan, peer_mtu); - sdu_rx = os_msys_get_pkthdr(STRESS_COC_MTU, 0); - assert(sdu_rx != NULL); + for (int i = 0; i < MYNEWT_VAL(BLE_L2CAP_COC_SDU_BUFF_COUNT); i++) { + sdu_rx = os_msys_get_pkthdr(STRESS_COC_MTU, 0); + assert(sdu_rx != NULL); - rc = ble_l2cap_recv_ready(chan, sdu_rx); - assert(rc == 0); + rc = ble_l2cap_recv_ready(chan, sdu_rx); + assert(rc == 0); + } } void diff --git a/apps/blestress/syscfg.yml b/apps/blestress/syscfg.yml index 3acf280bb..ce50050c7 100644 --- a/apps/blestress/syscfg.yml +++ b/apps/blestress/syscfg.yml @@ -67,6 +67,9 @@ syscfg.vals: # BLE_L2CAP_COC_MAX_NUM: 2 + # L2CAP COC SDU buffers in RX endpoint + BLE_L2CAP_COC_SDU_BUFF_COUNT: 1 + # Enable 2M PHY BLE_LL_CFG_FEAT_LE_2M_PHY: 1 diff --git a/apps/btshell/src/main.c b/apps/btshell/src/main.c index 7bea9067f..2df371911 100644 --- a/apps/btshell/src/main.c +++ b/apps/btshell/src/main.c @@ -2224,19 +2224,25 @@ btshell_l2cap_coc_recv(struct ble_l2cap_chan *chan, struct os_mbuf *sdu) static int btshell_l2cap_coc_accept(uint16_t conn_handle, uint16_t peer_mtu, - struct ble_l2cap_chan *chan) + struct ble_l2cap_chan *chan) { struct os_mbuf *sdu_rx; + int rc; console_printf("LE CoC accepting, chan: 0x%08lx, peer_mtu %d\n", (uint32_t) chan, peer_mtu); - sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0); - if (!sdu_rx) { - return BLE_HS_ENOMEM; + for (int i = 0; i < MYNEWT_VAL(BLE_L2CAP_COC_SDU_BUFF_COUNT); i++) { + sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0); + if (!sdu_rx) { + return BLE_HS_ENOMEM; + } + + rc = ble_l2cap_recv_ready(chan, sdu_rx); + assert(rc == 0); } - return ble_l2cap_recv_ready(chan, sdu_rx); + return rc; } static void diff --git a/apps/btshell/syscfg.yml b/apps/btshell/syscfg.yml index 1535b336d..b9dfa875d 100644 --- a/apps/btshell/syscfg.yml +++ b/apps/btshell/syscfg.yml @@ -41,5 +41,8 @@ syscfg.vals: # Whether to save data to sys/config, or just keep it in RAM. BLE_STORE_CONFIG_PERSIST: 0 + # L2CAP COC SDU buffers in RX endpoint + BLE_L2CAP_COC_SDU_BUFF_COUNT: 1 + syscfg.vals.BLE_MESH: MSYS_1_BLOCK_COUNT: 16