Skip to content

Commit

Permalink
ipc4: msg: simplify ipc message check for notification
Browse files Browse the repository at this point in the history
Use list_is_empty to check the message is queued or not. The notify
message is initialized to empty after deleting from the ipc msg list.
We use the same idea in ipc_msg_send.

Signed-off-by: Rander Wang <[email protected]>
  • Loading branch information
RanderWang committed Sep 5, 2023
1 parent 5a67152 commit 793cd28
Showing 1 changed file with 5 additions and 19 deletions.
24 changes: 5 additions & 19 deletions src/ipc/ipc4/handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ static struct ipc4_msg_data msg_data;
/* fw sends a fw ipc message to send the status of the last host ipc message */
static struct ipc_msg msg_reply = {0, 0, 0, 0, LIST_INIT(msg_reply.list)};

static struct ipc_msg msg_notify;
static struct ipc_msg msg_notify = {0, 0, 0, 0, LIST_INIT(msg_notify.list)};

/*
* Global IPC Operations.
Expand Down Expand Up @@ -1235,28 +1235,15 @@ void ipc_send_panic_notification(void)

#ifdef CONFIG_LOG_BACKEND_ADSP_MTRACE

static bool is_notification_queued(void)
static bool is_notification_queued(struct ipc_msg *msg)
{
struct ipc *ipc = ipc_get();
struct list_item *slist;
struct ipc_msg *msg;
k_spinlock_key_t key;
bool queued = false;

key = k_spin_lock(&ipc->lock);
if (list_is_empty(&ipc->msg_list))
goto out;

list_for_item(slist, &ipc->msg_list) {
msg = container_of(slist, struct ipc_msg, list);

if (msg == &msg_notify) {
queued = true;
break;
}
}

out:
if (!list_is_empty(&msg->list))
queued = true;
k_spin_unlock(&ipc->lock, key);

return queued;
Expand All @@ -1265,13 +1252,12 @@ static bool is_notification_queued(void)
void ipc_send_buffer_status_notify(void)
{
/* a single msg_notify object is used */
if (is_notification_queued())
if (is_notification_queued(&msg_notify))
return;

msg_notify.header = SOF_IPC4_NOTIF_HEADER(SOF_IPC4_NOTIFY_LOG_BUFFER_STATUS);
msg_notify.extension = 0;
msg_notify.tx_size = 0;
list_init(&msg_notify.list);

tr_dbg(&ipc_tr, "tx-notify\t: %#x|%#x", msg_notify.header, msg_notify.extension);

Expand Down

0 comments on commit 793cd28

Please sign in to comment.