What happens if serialization queue is full?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Serialization queue from the LE stack to application is 16 entries deep by default.

I have confirmed it by reading bleappevt_srzn_q_depth.

Our use case use CPU almost full, so I am concerned of serialization queue full case.

1) Is there any way for the application to check if serialization queue full has happened,

    so that to determine whether to increase bleappevt_srzn_q_depth?

2) What is the behavior of LE stack if queue is full at the time of queueing a callback?

    Watchdog reset has been observed sometimes, by any chance, does it trip watchdog?

3) What is the behavior of queueing AdvReportCb by LE stack?

    For example, if Master receives a burst of advertisements (let's say from 30~40 slaves in the room),

    the LE stack tries to queue up all advertisement packet received?

    Or is there any throttling mechanism to avoid queue full?

Thanks!!

1 Solution
VictorZ_46
Employee
Employee
5 comments on blog 25 sign-ins 250 likes received

You can check the warning flag.

   extern UINT32 dbfw_warning_flag;

Following bits are defined

#define DBFW_WARNING_OS_QUEUE_ALLOC_FAIL 0x00000001

#define DBFW_WARNING_OS_QUEUE_FREE_FAIL 0x00000002

#define DBFW_WARNING_OS_QUEUE_SEND_FAIL 0x00000004

#define DBFW_WARNING_OS_QUEUE_SEND_FRONT_FAIL 0x00000008

#define DBFW_WARNING_OS_BLOCK_POOL_FREE_FAIL 0x00000010

#define DBFW_WARNING_OS_EXCEPTION 0x00000100

View solution in original post

2 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

My apologies for the delayed response.  I will ask one of the developers whether or not this level of detail is available for the stack we provide onboard the 2073X device.

79rpm

0 Likes
VictorZ_46
Employee
Employee
5 comments on blog 25 sign-ins 250 likes received

You can check the warning flag.

   extern UINT32 dbfw_warning_flag;

Following bits are defined

#define DBFW_WARNING_OS_QUEUE_ALLOC_FAIL 0x00000001

#define DBFW_WARNING_OS_QUEUE_FREE_FAIL 0x00000002

#define DBFW_WARNING_OS_QUEUE_SEND_FAIL 0x00000004

#define DBFW_WARNING_OS_QUEUE_SEND_FRONT_FAIL 0x00000008

#define DBFW_WARNING_OS_BLOCK_POOL_FREE_FAIL 0x00000010

#define DBFW_WARNING_OS_EXCEPTION 0x00000100