mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-23 08:35:19 -05:00
rpmsg: glink: Use best fit intent during tx
Intents can vary in size, try to find the best fitting remote intent instead of first fit when sending a message to the remote proc. Signed-off-by: Chris Lew <clew@codeaurora.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
parent
073893778d
commit
290318702b
1 changed files with 8 additions and 3 deletions
|
@ -1257,11 +1257,16 @@ static int __qcom_glink_send(struct glink_channel *channel,
|
|||
spin_lock_irqsave(&channel->intent_lock, flags);
|
||||
idr_for_each_entry(&channel->riids, tmp, iid) {
|
||||
if (tmp->size >= len && !tmp->in_use) {
|
||||
tmp->in_use = true;
|
||||
intent = tmp;
|
||||
break;
|
||||
if (!intent)
|
||||
intent = tmp;
|
||||
else if (intent->size > tmp->size)
|
||||
intent = tmp;
|
||||
if (intent->size == len)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (intent)
|
||||
intent->in_use = true;
|
||||
spin_unlock_irqrestore(&channel->intent_lock, flags);
|
||||
|
||||
/* We found an available intent */
|
||||
|
|
Loading…
Add table
Reference in a new issue