diff --git a/subsys/bluetooth/host/scan.c b/subsys/bluetooth/host/scan.c index 2afcb9bc716..8fa7332b785 100644 --- a/subsys/bluetooth/host/scan.c +++ b/subsys/bluetooth/host/scan.c @@ -607,7 +607,7 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) */ create_ext_adv_info(evt, &scan_info); le_adv_recv(&evt->addr, &scan_info, &buf->b, evt->length); - continue; + goto cont; } is_new_advertiser = reassembling_advertiser.state == FRAG_ADV_INACTIVE || @@ -620,7 +620,7 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) */ create_ext_adv_info(evt, &scan_info); le_adv_recv(&evt->addr, &scan_info, &buf->b, evt->length); - continue; + goto cont; } if (is_new_advertiser && reassembling_advertiser.state == FRAG_ADV_REASSEMBLING) { @@ -629,8 +629,7 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) "report is discarded and future scan results may be incomplete. " "Interleaving of fragmented advertising reports from different " "advertisers is not yet supported."); - (void)net_buf_pull_mem(buf, evt->length); - continue; + goto cont; } if (data_status == BT_HCI_LE_ADV_EVT_TYPE_DATA_STATUS_INCOMPLETE) { @@ -638,9 +637,8 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) * We do not need to keep track of this advertiser. * Discard this report. */ - (void)net_buf_pull_mem(buf, evt->length); reset_reassembling_advertiser(); - continue; + goto cont; } if (is_new_advertiser) { @@ -660,14 +658,13 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) } if (reassembling_advertiser.state == FRAG_ADV_DISCARDING) { - (void)net_buf_pull_mem(buf, evt->length); if (!more_to_come) { /* We do no longer need to keep track of this advertiser as * all the expected data is received. */ reset_reassembling_advertiser(); } - continue; + goto cont; } net_buf_simple_add_mem(&ext_scan_buf, buf->data, evt->length); @@ -686,6 +683,7 @@ void bt_hci_le_adv_ext_report(struct net_buf *buf) /* We do no longer need to keep track of this advertiser. */ reset_reassembling_advertiser(); +cont: net_buf_pull(buf, evt->length); } }