Lines Matching defs: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
91 * @intentless: flag to indicate that there is no intent
147 * @intent_req_lock: Synchronises multiple intent requests
148 * @intent_req_result: Result of intent request
149 * @intent_received: flag indicating that an intent has been received
253 struct glink_core_rx_intent *intent;
263 list_for_each_entry_safe(intent, tmp, &channel->done_intents, node) {
264 if (!intent->reuse) {
265 kfree(intent->data);
266 kfree(intent);
528 struct glink_core_rx_intent *intent, *tmp;
541 list_for_each_entry_safe(intent, tmp, &channel->done_intents, node) {
542 list_del(&intent->node);
544 iid = intent->id;
545 reuse = intent->reuse;
553 kfree(intent->data);
554 kfree(intent);
563 struct glink_core_rx_intent *intent)
567 kfree(intent->data);
568 kfree(intent);
573 if (!intent->reuse) {
575 idr_remove(&channel->liids, intent->id);
581 list_add_tail(&intent->node, &channel->done_intents);
645 * qcom_glink_send_intent_req_ack() - convert an rx intent request ack cmd to
669 * qcom_glink_advertise_intent - convert an rx intent cmd to wire format and
673 * @intent: The intent to pass on to remote.
679 struct glink_core_rx_intent *intent)
693 cmd.size = cpu_to_le32(intent->size);
694 cmd.liid = cpu_to_le32(intent->id);
707 struct glink_core_rx_intent *intent;
711 intent = kzalloc(sizeof(*intent), GFP_KERNEL);
712 if (!intent)
715 intent->data = kzalloc(size, GFP_KERNEL);
716 if (!intent->data)
720 ret = idr_alloc_cyclic(&channel->liids, intent, 1, -1, GFP_ATOMIC);
727 intent->id = ret;
728 intent->size = size;
729 intent->reuse = reuseable;
731 return intent;
734 kfree(intent->data);
736 kfree(intent);
744 struct glink_core_rx_intent *intent;
757 intent = idr_find(&channel->riids, iid);
759 if (!intent) {
761 dev_err(glink->dev, "invalid intent id received\n");
765 intent->in_use = false;
768 idr_remove(&channel->riids, intent->id);
769 kfree(intent);
784 * @size: size of the intent
792 struct glink_core_rx_intent *intent;
805 intent = qcom_glink_alloc_intent(glink, channel, size, false);
806 if (intent)
807 qcom_glink_advertise_intent(glink, channel, intent);
809 qcom_glink_send_intent_req_ack(glink, channel, !!intent);
843 struct glink_core_rx_intent *intent;
885 intent = kzalloc(sizeof(*intent), GFP_ATOMIC);
886 if (!intent)
889 intent->data = kmalloc(chunk_size + left_size,
891 if (!intent->data) {
892 kfree(intent);
896 intent->id = 0xbabababa;
897 intent->size = chunk_size + left_size;
898 intent->offset = 0;
900 channel->buf = intent;
902 intent = channel->buf;
908 intent = idr_find(&channel->liids, liid);
911 if (!intent) {
913 "no intent found for channel %s intent %d",
920 if (intent->size - intent->offset < chunk_size) {
921 dev_err(glink->dev, "Insufficient space in intent\n");
927 qcom_glink_rx_peek(glink, intent->data + intent->offset,
929 intent->offset += chunk_size;
936 intent->data,
937 intent->offset,
943 intent->offset = 0;
946 qcom_glink_rx_done(glink, channel, intent);
960 struct glink_core_rx_intent *intent;
998 intent = kzalloc(sizeof(*intent), GFP_ATOMIC);
999 if (!intent)
1002 intent->id = le32_to_cpu(msg->intents[i].iid);
1003 intent->size = le32_to_cpu(msg->intents[i].size);
1006 ret = idr_alloc(&channel->riids, intent,
1007 intent->id, intent->id + 1, GFP_ATOMIC);
1011 dev_err(glink->dev, "failed to store remote intent\n");
1282 struct glink_core_rx_intent *intent;
1304 intent = qcom_glink_alloc_intent(glink, channel, size,
1306 if (!intent)
1309 qcom_glink_advertise_intent(glink, channel, intent);
1361 dev_err(glink->dev, "intent request timed out\n");
1376 struct glink_core_rx_intent *intent = NULL;
1390 while (!intent) {
1394 if (!intent)
1395 intent = tmp;
1396 else if (intent->size > tmp->size)
1397 intent = tmp;
1398 if (intent->size == len)
1402 if (intent)
1403 intent->in_use = true;
1406 /* We found an available intent */
1407 if (intent)
1418 iid = intent->id;
1434 /* Mark intent available if we failed */
1435 if (intent)
1436 intent->in_use = false;
1858 /* Abort any senders waiting for intent requests */