|
@@ -1407,9 +1407,16 @@ wlan_mgmt_rx_reo_algo_calculate_wait_count(
|
|
/* Get the MLO link ID of incoming frame */
|
|
/* Get the MLO link ID of incoming frame */
|
|
in_frame_link = wlan_get_mlo_link_id_from_pdev(in_frame_pdev);
|
|
in_frame_link = wlan_get_mlo_link_id_from_pdev(in_frame_pdev);
|
|
grp_id = wlan_get_mlo_grp_id_from_pdev(in_frame_pdev);
|
|
grp_id = wlan_get_mlo_grp_id_from_pdev(in_frame_pdev);
|
|
- qdf_assert_always(in_frame_link >= 0);
|
|
|
|
- qdf_assert_always(in_frame_link < MAX_MLO_LINKS);
|
|
|
|
- qdf_assert_always(mgmt_rx_reo_is_valid_link(in_frame_link, grp_id));
|
|
|
|
|
|
+ if (in_frame_link < 0 || in_frame_link >= MAX_MLO_LINKS) {
|
|
|
|
+ mgmt_rx_reo_err("Invalid frame link = %d", in_frame_link);
|
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!mgmt_rx_reo_is_valid_link(in_frame_link, grp_id)) {
|
|
|
|
+ mgmt_rx_reo_err("Invalid link = %d and group = %d",
|
|
|
|
+ in_frame_link, grp_id);
|
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
|
+ }
|
|
|
|
|
|
in_frame_rx_reo_pdev_ctx =
|
|
in_frame_rx_reo_pdev_ctx =
|
|
wlan_mgmt_rx_reo_get_priv_object(in_frame_pdev);
|
|
wlan_mgmt_rx_reo_get_priv_object(in_frame_pdev);
|
|
@@ -2338,9 +2345,6 @@ mgmt_rx_reo_debug_print_egress_frame_info(struct mgmt_rx_reo_context *reo_ctx,
|
|
num_entries_to_print +
|
|
num_entries_to_print +
|
|
egress_frame_debug_info->frame_list_size)
|
|
egress_frame_debug_info->frame_list_size)
|
|
% egress_frame_debug_info->frame_list_size;
|
|
% egress_frame_debug_info->frame_list_size;
|
|
-
|
|
|
|
- qdf_assert_always(start_index >= 0 &&
|
|
|
|
- start_index < egress_frame_debug_info->frame_list_size);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
mgmt_rx_reo_alert_no_fl("Egress Frame Info:-");
|
|
mgmt_rx_reo_alert_no_fl("Egress Frame Info:-");
|
|
@@ -2610,15 +2614,24 @@ mgmt_rx_reo_list_entry_send_up(struct mgmt_rx_reo_context *reo_context,
|
|
QDF_STATUS status;
|
|
QDF_STATUS status;
|
|
QDF_STATUS temp;
|
|
QDF_STATUS temp;
|
|
|
|
|
|
- qdf_assert_always(reo_context);
|
|
|
|
- qdf_assert_always(entry);
|
|
|
|
|
|
+ if (!reo_context) {
|
|
|
|
+ mgmt_rx_reo_err("Reo context is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!entry) {
|
|
|
|
+ mgmt_rx_reo_err("Entry is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
entry_global_ts = mgmt_rx_reo_get_global_ts(entry->rx_params);
|
|
entry_global_ts = mgmt_rx_reo_get_global_ts(entry->rx_params);
|
|
|
|
|
|
release_reason = mgmt_rx_reo_list_entry_get_release_reason(entry);
|
|
release_reason = mgmt_rx_reo_list_entry_get_release_reason(entry);
|
|
-
|
|
|
|
- qdf_assert_always(release_reason != 0);
|
|
|
|
|
|
+ if (!release_reason) {
|
|
|
|
+ mgmt_rx_reo_err("Release reason is zero");
|
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
|
+ }
|
|
|
|
|
|
entry->is_delivered = false;
|
|
entry->is_delivered = false;
|
|
entry->is_dropped = false;
|
|
entry->is_dropped = false;
|
|
@@ -2683,7 +2696,10 @@ exit:
|
|
static bool
|
|
static bool
|
|
mgmt_rx_reo_is_entry_ready_to_send_up(struct mgmt_rx_reo_list_entry *entry)
|
|
mgmt_rx_reo_is_entry_ready_to_send_up(struct mgmt_rx_reo_list_entry *entry)
|
|
{
|
|
{
|
|
- qdf_assert_always(entry);
|
|
|
|
|
|
+ if (!entry) {
|
|
|
|
+ mgmt_rx_reo_err("Entry is null");
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
|
|
return LIST_ENTRY_IS_REMOVED_DUE_TO_INGRESS_LIST_OVERFLOW(entry) ||
|
|
return LIST_ENTRY_IS_REMOVED_DUE_TO_INGRESS_LIST_OVERFLOW(entry) ||
|
|
LIST_ENTRY_IS_REMOVED_DUE_TO_EGRESS_LIST_OVERFLOW(entry) ||
|
|
LIST_ENTRY_IS_REMOVED_DUE_TO_EGRESS_LIST_OVERFLOW(entry) ||
|
|
@@ -2818,7 +2834,10 @@ mgmt_rx_reo_defer_delivery(struct mgmt_rx_reo_list_entry *entry,
|
|
uint8_t mlo_grp_id;
|
|
uint8_t mlo_grp_id;
|
|
struct wlan_objmgr_pdev *pdev;
|
|
struct wlan_objmgr_pdev *pdev;
|
|
|
|
|
|
- qdf_assert_always(entry);
|
|
|
|
|
|
+ if (!entry) {
|
|
|
|
+ mgmt_rx_reo_err("Entry is null");
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
mlo_grp_id = entry->rx_params->reo_params->mlo_grp_id;
|
|
mlo_grp_id = entry->rx_params->reo_params->mlo_grp_id;
|
|
@@ -2872,7 +2891,6 @@ mgmt_rx_reo_schedule_delivery(struct mgmt_rx_reo_context *reo_context,
|
|
}
|
|
}
|
|
|
|
|
|
scheduled_count = qdf_atomic_inc_return(&entry->scheduled_count);
|
|
scheduled_count = qdf_atomic_inc_return(&entry->scheduled_count);
|
|
- qdf_assert_always(scheduled_count > 0);
|
|
|
|
|
|
|
|
reschedule = (scheduled_count > 1);
|
|
reschedule = (scheduled_count > 1);
|
|
status = mgmt_rx_reo_log_scheduler_debug_info(reo_context, entry,
|
|
status = mgmt_rx_reo_log_scheduler_debug_info(reo_context, entry,
|
|
@@ -2888,7 +2906,6 @@ mgmt_rx_reo_schedule_delivery(struct mgmt_rx_reo_context *reo_context,
|
|
}
|
|
}
|
|
|
|
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
link_id = mgmt_rx_reo_get_link_id(entry->rx_params);
|
|
- qdf_assert_always(link_id >= 0 && link_id < MAX_MLO_LINKS);
|
|
|
|
mlo_grp_id = entry->rx_params->reo_params->mlo_grp_id;
|
|
mlo_grp_id = entry->rx_params->reo_params->mlo_grp_id;
|
|
pdev = wlan_get_pdev_from_mlo_link_id(link_id, mlo_grp_id,
|
|
pdev = wlan_get_pdev_from_mlo_link_id(link_id, mlo_grp_id,
|
|
WLAN_MGMT_RX_REO_ID);
|
|
WLAN_MGMT_RX_REO_ID);
|
|
@@ -2975,7 +2992,10 @@ mgmt_rx_reo_release_egress_list_entries(struct mgmt_rx_reo_context *reo_context,
|
|
}
|
|
}
|
|
|
|
|
|
ready = mgmt_rx_reo_is_entry_ready_to_send_up(first_entry);
|
|
ready = mgmt_rx_reo_is_entry_ready_to_send_up(first_entry);
|
|
- qdf_assert_always(ready);
|
|
|
|
|
|
+ if (!ready) {
|
|
|
|
+ status = QDF_STATUS_E_FAILURE;
|
|
|
|
+ goto exit_unlock_egress_list_lock;
|
|
|
|
+ }
|
|
|
|
|
|
first_entry->ctx_info = *ctx;
|
|
first_entry->ctx_info = *ctx;
|
|
defer = mgmt_rx_reo_defer_delivery(first_entry, link_bitmap);
|
|
defer = mgmt_rx_reo_defer_delivery(first_entry, link_bitmap);
|
|
@@ -3139,7 +3159,10 @@ mgmt_rx_reo_check_sanity_list(struct mgmt_rx_reo_list *reo_list)
|
|
uint32_t ts_prev;
|
|
uint32_t ts_prev;
|
|
uint32_t ts_cur;
|
|
uint32_t ts_cur;
|
|
|
|
|
|
- qdf_assert_always(reo_list);
|
|
|
|
|
|
+ if (!reo_list) {
|
|
|
|
+ mgmt_rx_reo_err("Reo list is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
|
|
if (qdf_list_empty(&reo_list->list))
|
|
if (qdf_list_empty(&reo_list->list))
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
@@ -3147,7 +3170,10 @@ mgmt_rx_reo_check_sanity_list(struct mgmt_rx_reo_list *reo_list)
|
|
first = qdf_list_first_entry_or_null(&reo_list->list,
|
|
first = qdf_list_first_entry_or_null(&reo_list->list,
|
|
struct mgmt_rx_reo_list_entry,
|
|
struct mgmt_rx_reo_list_entry,
|
|
node);
|
|
node);
|
|
- qdf_assert_always(first);
|
|
|
|
|
|
+ if (!first) {
|
|
|
|
+ mgmt_rx_reo_err("First entry is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
|
|
cur = first;
|
|
cur = first;
|
|
ts_prev = mgmt_rx_reo_get_global_ts(first->rx_params);
|
|
ts_prev = mgmt_rx_reo_get_global_ts(first->rx_params);
|
|
@@ -3193,8 +3219,15 @@ mgmt_rx_reo_check_sanity_lists(struct mgmt_rx_reo_list *reo_egress_list,
|
|
struct mgmt_rx_reo_list_entry *first_entry_ingress_list;
|
|
struct mgmt_rx_reo_list_entry *first_entry_ingress_list;
|
|
uint32_t ts_ingress_first_entry;
|
|
uint32_t ts_ingress_first_entry;
|
|
|
|
|
|
- qdf_assert_always(reo_egress_list);
|
|
|
|
- qdf_assert_always(reo_ingress_list);
|
|
|
|
|
|
+ if (!reo_egress_list) {
|
|
|
|
+ mgmt_rx_reo_err("Egress list is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!reo_ingress_list) {
|
|
|
|
+ mgmt_rx_reo_err("Ingress list is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
|
|
status = mgmt_rx_reo_check_sanity_list(reo_egress_list);
|
|
status = mgmt_rx_reo_check_sanity_list(reo_egress_list);
|
|
if (QDF_IS_STATUS_ERROR(status)) {
|
|
if (QDF_IS_STATUS_ERROR(status)) {
|
|
@@ -3413,8 +3446,15 @@ mgmt_rx_reo_ageout_entries_ingress_list
|
|
struct mgmt_rx_reo_list_entry *cur_entry;
|
|
struct mgmt_rx_reo_list_entry *cur_entry;
|
|
uint64_t cur_ts;
|
|
uint64_t cur_ts;
|
|
|
|
|
|
- qdf_assert_always(ingress_list);
|
|
|
|
- qdf_assert_always(latest_aged_out_entry);
|
|
|
|
|
|
+ if (!ingress_list) {
|
|
|
|
+ mgmt_rx_reo_err("Ingress list is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!latest_aged_out_entry) {
|
|
|
|
+ mgmt_rx_reo_err("Latest aged out entry is null");
|
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
|
+ }
|
|
|
|
|
|
*latest_aged_out_entry = NULL;
|
|
*latest_aged_out_entry = NULL;
|
|
reo_ingress_list = &ingress_list->reo_list;
|
|
reo_ingress_list = &ingress_list->reo_list;
|
|
@@ -3471,9 +3511,16 @@ mgmt_rx_reo_ingress_list_ageout_timer_handler(void *arg)
|
|
struct mgmt_rx_reo_list_entry *latest_aged_out_entry = NULL;
|
|
struct mgmt_rx_reo_list_entry *latest_aged_out_entry = NULL;
|
|
struct mgmt_rx_reo_context_info ctx_info = {0};
|
|
struct mgmt_rx_reo_context_info ctx_info = {0};
|
|
|
|
|
|
- qdf_assert_always(ingress_list);
|
|
|
|
|
|
+ if (!ingress_list) {
|
|
|
|
+ mgmt_rx_reo_err("Ingress list is null");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
reo_ctx = mgmt_rx_reo_get_context_from_ingress_list(ingress_list);
|
|
reo_ctx = mgmt_rx_reo_get_context_from_ingress_list(ingress_list);
|
|
- qdf_assert_always(reo_ctx);
|
|
|
|
|
|
+ if (!reo_ctx) {
|
|
|
|
+ mgmt_rx_reo_err("Reo context is null");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
egress_list = &reo_ctx->egress_list;
|
|
egress_list = &reo_ctx->egress_list;
|
|
|
|
|
|
qdf_timer_mod(&ingress_list->ageout_timer,
|
|
qdf_timer_mod(&ingress_list->ageout_timer,
|
|
@@ -3523,7 +3570,10 @@ mgmt_rx_reo_egress_inactivity_timer_handler(void *arg)
|
|
struct mgmt_rx_reo_list *reo_egress_list;
|
|
struct mgmt_rx_reo_list *reo_egress_list;
|
|
struct mgmt_rx_reo_frame_info *last_delivered_frame;
|
|
struct mgmt_rx_reo_frame_info *last_delivered_frame;
|
|
|
|
|
|
- qdf_assert_always(egress_list);
|
|
|
|
|
|
+ if (!egress_list) {
|
|
|
|
+ mgmt_rx_reo_err("Egress list is null");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
reo_egress_list = &egress_list->reo_list;
|
|
reo_egress_list = &egress_list->reo_list;
|
|
last_delivered_frame = &reo_egress_list->last_released_frame;
|
|
last_delivered_frame = &reo_egress_list->last_released_frame;
|