zephyr/drivers/bluetooth/nble
Johan Hedberg b76426de6f Bluetooth: Fix never yielding if rx_queue always contains data
It's common for the rx_queue to be written to in ISR context (by the
HCI driver). This means that if there's lots of data coming in from
the driver the rx_queue might get empty very rarely. With the current
code this means that the rx fiber might end up not yielding to other
higher priority runnable fibers for long durations (as long as there's
data in the rx_queue).

To solve the issue, call fiber_yield() explicitly after each processed
buffer from the rx_queue. This way we give other fibers a chance to
run even if there's a heavy flow of data from the Bluetooth
controller.

Change-Id: Ib3dbe6536a62360ad5153ed12eee8489645e4109
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-06-07 21:38:20 +03:00
..
conn_internal.h
conn.c drivers/nble: Use flags for state tracking 2016-05-31 11:04:41 +00:00
conn.h
gap_internal.h Bluetooth: Allow to call enable function only once 2016-05-31 11:37:12 +00:00
gap.c drivers/nble: Add buffer pool for prepare writes 2016-06-06 12:28:35 +00:00
gatt_internal.h drivers/nble: Add buffer pool for prepare writes 2016-06-06 12:28:35 +00:00
gatt.c drivers/nble: Add buffer pool for prepare writes 2016-06-06 12:28:35 +00:00
Kconfig drivers/nble: Add buffer pool for prepare writes 2016-06-06 12:28:35 +00:00
Makefile drivers/nble: Sync smp code for firmware compatibility 2016-05-31 09:39:25 +00:00
rpc_deserialize.c drivers/nble: Use flags for state tracking 2016-05-31 11:04:41 +00:00
rpc_functions_to_ble_core.h drivers/nble: Update RPC to version 0527 2016-05-30 09:07:50 +00:00
rpc_functions_to_quark.h drivers/nble: Update RPC to version 0527 2016-05-30 09:07:50 +00:00
rpc_serialize.c drivers/nble: Use flags for state tracking 2016-05-31 11:04:41 +00:00
rpc.h
smp.c drivers/nble: Implement on_nble_sm_security_request_evt() 2016-06-02 12:08:54 +03:00
smp.h drivers/nble: Call right function in bt_conn_auth_cancel() 2016-05-31 11:04:03 +00:00
stubs.c drivers/nble: Use flags for state tracking 2016-05-31 11:04:41 +00:00
uart.c Bluetooth: Fix never yielding if rx_queue always contains data 2016-06-07 21:38:20 +03:00
uart.h