diff --git a/umac/cmn_services/serialization/src/wlan_serialization_main.c b/umac/cmn_services/serialization/src/wlan_serialization_main.c index f663a8d096c0..2f865fc9c495 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_main.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_main.c @@ -252,6 +252,8 @@ static QDF_STATUS wlan_serialization_pdev_create_handler( max_active_cmds = WLAN_SER_MAX_ACTIVE_CMDS; max_pending_cmds = WLAN_SER_MAX_PENDING_CMDS; cmd_pool_size = max_active_cmds + max_pending_cmds; + ser_debug("max_active_cmds %d max_pending_cmds %d", + max_active_cmds, max_pending_cmds); break; } qdf_list_create(&pdev_queue->active_list, @@ -406,8 +408,16 @@ wlan_serialization_vdev_create_handler(struct wlan_objmgr_vdev *vdev, case SER_VDEV_QUEUE_COMP_NON_SCAN: max_active_cmds = WLAN_SER_MAX_ACTIVE_CMDS / WLAN_SER_MAX_VDEVS; - max_pending_cmds = WLAN_SER_MAX_PENDING_CMDS / - WLAN_SER_MAX_VDEVS; + if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE || + wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_GO_MODE) + max_pending_cmds = WLAN_SER_MAX_PENDING_CMDS_AP; + else + max_pending_cmds = + WLAN_SER_MAX_PENDING_CMDS_STA; + + ser_debug("Vdev type %d max_pending_cmds %d", + wlan_vdev_mlme_get_opmode(vdev), + max_pending_cmds); break; } diff --git a/umac/cmn_services/serialization/src/wlan_serialization_main_i.h b/umac/cmn_services/serialization/src/wlan_serialization_main_i.h index 3d6343077fe6..d2c95addade1 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_main_i.h +++ b/umac/cmn_services/serialization/src/wlan_serialization_main_i.h @@ -28,10 +28,22 @@ #include #include -#define WLAN_SER_MAX_VDEVS 17 +#define WLAN_SER_MAX_VDEVS WLAN_UMAC_PDEV_MAX_VDEVS #define WLAN_SER_MAX_ACTIVE_CMDS WLAN_SER_MAX_VDEVS + +#ifndef WLAN_SER_MAX_PENDING_CMDS #define WLAN_SER_MAX_PENDING_CMDS (WLAN_SER_MAX_VDEVS * 4) +#endif + +#ifndef WLAN_SER_MAX_PENDING_CMDS_AP +#define WLAN_SER_MAX_PENDING_CMDS_AP \ + (WLAN_SER_MAX_PENDING_CMDS / WLAN_SER_MAX_VDEVS) +#endif +#ifndef WLAN_SER_MAX_PENDING_CMDS_STA +#define WLAN_SER_MAX_PENDING_CMDS_STA \ + (WLAN_SER_MAX_PENDING_CMDS / WLAN_SER_MAX_VDEVS) +#endif #define WLAN_SER_MAX_ACTIVE_SCAN_CMDS 8 #define WLAN_SER_MAX_PENDING_SCAN_CMDS 24 @@ -59,6 +71,13 @@ #define ser_err_no_fl(params...) \ QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_SERIALIZATION, params) + +/* + * Rate limited serialization logging api + */ +#define ser_err_rl(params...) \ + QDF_TRACE_ERROR_RL(QDF_MODULE_ID_SERIALIZATION, params) + /** * struct serialization_legacy_callback - to handle legacy serialization cb * @serialization_purge_cmd_list: function ptr to be filled by serialization diff --git a/umac/cmn_services/serialization/src/wlan_serialization_non_scan.c b/umac/cmn_services/serialization/src/wlan_serialization_non_scan.c index e451edae4464..30001aa69e6b 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_non_scan.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_non_scan.c @@ -142,6 +142,8 @@ enum wlan_serialization_status wlan_ser_add_non_scan_cmd( ser_pdev_obj, cmd_list, is_cmd_for_active_queue); if (vdev_status == WLAN_SER_CMD_DENIED_LIST_FULL) { + ser_err_rl("List is full cannot add CMD %d cmd id %d", + cmd_list->cmd.cmd_type, cmd_list->cmd.cmd_id); status = vdev_status; goto vdev_error; } diff --git a/umac/cmn_services/serialization/src/wlan_serialization_utils.c b/umac/cmn_services/serialization/src/wlan_serialization_utils.c index 8395ec572220..003baa50d585 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_utils.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_utils.c @@ -550,6 +550,8 @@ wlan_serialization_add_cmd_to_queue( if (qdf_list_size(queue) == qdf_list_max_size(queue)) { status = WLAN_SER_CMD_DENIED_LIST_FULL; + ser_err("qdf_list_size: %d is already max %d", + qdf_list_size(queue), qdf_list_max_size(queue)); goto error; }