You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ja...@apache.org on 2020/01/27 19:16:28 UTC

[mynewt-nimble] 01/04: nimble/ll: Don't put TxPower into AUX_CHAIN_IND PDU

This is an automated email from the ASF dual-hosted git repository.

janc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 5705d6f606206f4c8c0cb9c14e91e3c3e68f21ec
Author: Szymon Janc <sz...@codecoup.pl>
AuthorDate: Fri Jan 24 08:54:38 2020 +0100

    nimble/ll: Don't put TxPower into AUX_CHAIN_IND PDU
    
    This is not recommended for extended advertising chains and forbidden
    for periodic advertising chains.
    
    This was affecting LL/DDI/ADV/BV-61-C qualification test case.
---
 nimble/controller/src/ble_ll_adv.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/nimble/controller/src/ble_ll_adv.c b/nimble/controller/src/ble_ll_adv.c
index 5617d98..01da1a3 100644
--- a/nimble/controller/src/ble_ll_adv.c
+++ b/nimble/controller/src/ble_ll_adv.c
@@ -1385,8 +1385,11 @@ ble_ll_adv_aux_calculate(struct ble_ll_adv_sm *advsm,
         hdr_len += BLE_LL_EXT_ADV_TARGETA_SIZE;
     }
 
-    /* TxPower if configured */
-    if (advsm->props & BLE_HCI_LE_SET_EXT_ADV_PROP_INC_TX_PWR) {
+    /* TxPower if configured.
+     * Note: TxPower should not be be present in AUX_CHAIN_IND
+     */
+    if (aux_data_offset == 0 &&
+        (advsm->props & BLE_HCI_LE_SET_EXT_ADV_PROP_INC_TX_PWR)) {
         aux->ext_hdr |= (1 << BLE_LL_EXT_ADV_TX_POWER_BIT);
         hdr_len += BLE_LL_EXT_ADV_TX_POWER_SIZE;
     }
@@ -2181,8 +2184,11 @@ ble_ll_adv_sync_calculate(struct ble_ll_adv_sm *advsm,
 
     hdr_len = BLE_LL_EXT_ADV_HDR_LEN + BLE_LL_EXT_ADV_FLAGS_SIZE;
 
-    /* TxPower if configured */
-    if (advsm->periodic_adv_props & BLE_HCI_LE_SET_PERIODIC_ADV_PROP_INC_TX_PWR) {
+    /* TxPower if configured
+     * Note: TxPower shall not be present in chain PDU for SYNC
+     */
+    if (sync_data_offset == 0 &&
+        (advsm->periodic_adv_props & BLE_HCI_LE_SET_PERIODIC_ADV_PROP_INC_TX_PWR)) {
         sync->ext_hdr |= (1 << BLE_LL_EXT_ADV_TX_POWER_BIT);
         hdr_len += BLE_LL_EXT_ADV_TX_POWER_SIZE;
     }