qcacmn: Change REO queue descriptor delete sequence
Change REO queue descriptor delete sequence to flush base and extension descriptors separately, since flushing base descriptor alone results in extensions flushed by HW much later, sometimes after freeing descriptor memory, causing use-after-free corruptions. Also increase REO command and status ring sizes since number of commands per RX TID flush has increased with this change. Fix interrupt batch count setting for non pkt/buffer rings, which includes REO status ring. Also remove callbacks during reo command list destroy, done as part of SOC detach. This should not be done since callbacks will access stale data structures that are freed as part of PDEV/SOC detach. Change-Id: I4337454d3f53cc0b3c3014ef07cc2ba13cfebb18 CRs-Fixed: 2175989
Этот коммит содержится в:

коммит произвёл
Gerrit - the friendly Code Review server

родитель
e1d7e0ecc9
Коммит
25f1b0434b
@@ -178,18 +178,12 @@ void dp_reo_cmdlist_destroy(struct dp_soc *soc)
|
||||
{
|
||||
struct dp_reo_cmd_info *reo_cmd = NULL;
|
||||
struct dp_reo_cmd_info *tmp_cmd = NULL;
|
||||
union hal_reo_status reo_status;
|
||||
|
||||
reo_status.queue_status.header.status =
|
||||
HAL_REO_CMD_FAILED;
|
||||
|
||||
qdf_spin_lock_bh(&soc->rx.reo_cmd_lock);
|
||||
TAILQ_FOREACH_SAFE(reo_cmd, &soc->rx.reo_cmd_list,
|
||||
reo_cmd_list_elem, tmp_cmd) {
|
||||
TAILQ_REMOVE(&soc->rx.reo_cmd_list, reo_cmd,
|
||||
reo_cmd_list_elem);
|
||||
reo_cmd->handler(soc, reo_cmd->data,
|
||||
&reo_status);
|
||||
qdf_mem_free(reo_cmd);
|
||||
}
|
||||
qdf_spin_unlock_bh(&soc->rx.reo_cmd_lock);
|
||||
|
Ссылка в новой задаче
Block a user