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
|
@ -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…
Reference in New Issue