qcacmn: Use qdf_flex_mem for scheduler messages

Currently, the scheduler thread keeps a large, pre-allocated array of
messages for use in message posting. The vast majority of the time,
however, the scheduler thread has zero or one messages pending in the
queue. This leads to a huge memory overhead for nominal driver
operation.

Replace the current pre-allocated scheduler message pool with a
hybrid static/dynamic approach.

Change-Id: Ie942bacfef43edf142a9f35ad0309069096cda90
CRs-Fixed: 2204172
This commit is contained in:
Dustin Brown
2018-03-09 17:45:40 -08:00
committed by nshrivas
parent d78dedc9dd
commit c7ee85c4a8
5 changed files with 177 additions and 296 deletions

View File

@@ -67,6 +67,7 @@ typedef enum {
* like PSOC, PDEV, VDEV and PEER. A component needs to populate flush
* callback in message body pointer for those messages which have taken ref
* count for above mentioned common objects.
* @node: list node for queue membership
*/
struct scheduler_msg {
uint16_t type;
@@ -75,6 +76,7 @@ struct scheduler_msg {
void *bodyptr;
void *callback;
void *flush_callback;
qdf_list_node_t node;
};
typedef QDF_STATUS (*scheduler_msg_process_fn_t) (struct scheduler_msg *msg);