Lines Matching refs:intent

56  * struct glink_core_rx_intent - RX intent
57 * RX intent
60 * @id: remote or local intent ID
61 * @size: size of the original intent (do not modify)
62 * @reuse: To mark if the intent can be reused after first use
63 * @in_use: To mark if intent is already in use for the channel
94 * @intentless: flag to indicate that there is no intent
150 * @intent_req_lock: Synchronises multiple intent requests
151 * @intent_req_result: Result of intent request
248 struct glink_core_rx_intent *intent;
258 list_for_each_entry_safe(intent, tmp, &channel->done_intents, node) {
259 if (!intent->reuse) {
260 kfree(intent->data);
261 kfree(intent);
482 struct glink_core_rx_intent *intent, *tmp;
495 list_for_each_entry_safe(intent, tmp, &channel->done_intents, node) {
496 list_del(&intent->node);
498 iid = intent->id;
499 reuse = intent->reuse;
507 kfree(intent->data);
508 kfree(intent);
517 struct glink_core_rx_intent *intent)
521 kfree(intent->data);
522 kfree(intent);
527 if (!intent->reuse) {
529 idr_remove(&channel->liids, intent->id);
535 list_add_tail(&intent->node, &channel->done_intents);
599 * qcom_glink_send_intent_req_ack() - convert an rx intent request ack cmd to
623 * qcom_glink_advertise_intent - convert an rx intent cmd to wire format and
627 * @intent: The intent to pass on to remote.
633 struct glink_core_rx_intent *intent)
647 cmd.size = cpu_to_le32(intent->size);
648 cmd.liid = cpu_to_le32(intent->id);
661 struct glink_core_rx_intent *intent;
665 intent = kzalloc(sizeof(*intent), GFP_KERNEL);
666 if (!intent)
669 intent->data = kzalloc(size, GFP_KERNEL);
670 if (!intent->data)
674 ret = idr_alloc_cyclic(&channel->liids, intent, 1, -1, GFP_ATOMIC);
681 intent->id = ret;
682 intent->size = size;
683 intent->reuse = reuseable;
685 return intent;
688 kfree(intent->data);
690 kfree(intent);
698 struct glink_core_rx_intent *intent;
711 intent = idr_find(&channel->riids, iid);
713 if (!intent) {
715 dev_err(glink->dev, "invalid intent id received\n");
719 intent->in_use = false;
722 idr_remove(&channel->riids, intent->id);
723 kfree(intent);
733 * @size: size of the intent
741 struct glink_core_rx_intent *intent;
754 intent = qcom_glink_alloc_intent(glink, channel, size, false);
755 if (intent)
756 qcom_glink_advertise_intent(glink, channel, intent);
758 qcom_glink_send_intent_req_ack(glink, channel, !!intent);
792 struct glink_core_rx_intent *intent;
834 intent = kzalloc(sizeof(*intent), GFP_ATOMIC);
835 if (!intent)
838 intent->data = kmalloc(chunk_size + left_size,
840 if (!intent->data) {
841 kfree(intent);
845 intent->id = 0xbabababa;
846 intent->size = chunk_size + left_size;
847 intent->offset = 0;
849 channel->buf = intent;
851 intent = channel->buf;
857 intent = idr_find(&channel->liids, liid);
860 if (!intent) {
862 "no intent found for channel %s intent %d",
869 if (intent->size - intent->offset < chunk_size) {
870 dev_err(glink->dev, "Insufficient space in intent\n");
876 qcom_glink_rx_peak(glink, intent->data + intent->offset,
878 intent->offset += chunk_size;
885 intent->data,
886 intent->offset,
892 intent->offset = 0;
895 qcom_glink_rx_done(glink, channel, intent);
909 struct glink_core_rx_intent *intent;
947 intent = kzalloc(sizeof(*intent), GFP_ATOMIC);
948 if (!intent)
951 intent->id = le32_to_cpu(msg->intents[i].iid);
952 intent->size = le32_to_cpu(msg->intents[i].size);
955 ret = idr_alloc(&channel->riids, intent,
956 intent->id, intent->id + 1, GFP_ATOMIC);
960 dev_err(glink->dev, "failed to store remote intent\n");
1179 struct glink_core_rx_intent *intent;
1201 intent = qcom_glink_alloc_intent(glink, channel, size,
1203 if (!intent)
1206 qcom_glink_advertise_intent(glink, channel, intent);
1254 dev_err(glink->dev, "intent request timed out\n");
1269 struct glink_core_rx_intent *intent = NULL;
1281 while (!intent) {
1285 if (!intent)
1286 intent = tmp;
1287 else if (intent->size > tmp->size)
1288 intent = tmp;
1289 if (intent->size == len)
1293 if (intent)
1294 intent->in_use = true;
1297 /* We found an available intent */
1298 if (intent)
1309 iid = intent->id;
1320 /* Mark intent available if we failed */
1321 if (ret && intent)
1322 intent->in_use = false;