I try to run samples/bluetooth/scan_adv on nRF52840/nRF5340 using nRF BLE Controller..
Result is
nRF52840/active scan: 498 packet/s
nRF52840/passive scan: 507 packet/s
nRF5340(NetCore)/active scan: 69 packet/s
nRF5340(NetCore)/passive scan: 421 packet/s
Why nRF5340(NetCore)/active scan is poor?
sample source
/* main.c - Application main entry point */ /* * Copyright (c) 2015-2016 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr/types.h> #include <stddef.h> #include <sys/printk.h> #include <sys/util.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> static u8_t mfg_data[] = { 0xff, 0xff, 0x00 }; static const struct bt_data ad[] = { BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, 3), }; volatile uint32_t s_recv_count; static void scan_cb(const bt_addr_le_t *addr, s8_t rssi, u8_t adv_type, struct net_buf_simple *buf) { mfg_data[2]++; s_recv_count++; } void main(void) { struct bt_le_scan_param scan_param = { .type = BT_HCI_LE_SCAN_ACTIVE, // .type = BT_HCI_LE_SCAN_PASSIVE, .filter_dup = BT_HCI_LE_SCAN_FILTER_DUP_DISABLE, .interval = 0x0010, .window = 0x0010, }; int err; printk("Starting Scanner/Advertiser Demo\n"); /* Initialize the Bluetooth Subsystem */ err = bt_enable(NULL); if (err) { printk("Bluetooth init failed (err %d)\n", err); return; } printk("Bluetooth initialized\n"); err = bt_le_scan_start(&scan_param, scan_cb); if (err) { printk("Starting scanning failed (err %d)\n", err); return; } do { k_sleep(K_MSEC(400)); #if 0 /* Start advertising */ err = bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad), NULL, 0); if (err) { printk("Advertising failed to start (err %d)\n", err); return; } k_sleep(K_MSEC(400)); err = bt_le_adv_stop(); if (err) { printk("Advertising failed to stop (err %d)\n", err); return; } #endif } while (1); }