Lines Matching refs:intent
457 struct glink_core_rx_intent *intent, *tmp; in qcom_glink_rx_done_work() local
470 list_for_each_entry_safe(intent, tmp, &channel->done_intents, node) { in qcom_glink_rx_done_work()
471 list_del(&intent->node); in qcom_glink_rx_done_work()
473 iid = intent->id; in qcom_glink_rx_done_work()
474 reuse = intent->reuse; in qcom_glink_rx_done_work()
482 kfree(intent->data); in qcom_glink_rx_done_work()
483 kfree(intent); in qcom_glink_rx_done_work()
492 struct glink_core_rx_intent *intent) in qcom_glink_rx_done() argument
496 kfree(intent->data); in qcom_glink_rx_done()
497 kfree(intent); in qcom_glink_rx_done()
502 if (!intent->reuse) { in qcom_glink_rx_done()
504 idr_remove(&channel->liids, intent->id); in qcom_glink_rx_done()
510 list_add_tail(&intent->node, &channel->done_intents); in qcom_glink_rx_done()
608 struct glink_core_rx_intent *intent) in qcom_glink_advertise_intent() argument
622 cmd.size = cpu_to_le32(intent->size); in qcom_glink_advertise_intent()
623 cmd.liid = cpu_to_le32(intent->id); in qcom_glink_advertise_intent()
636 struct glink_core_rx_intent *intent; in qcom_glink_alloc_intent() local
640 intent = kzalloc(sizeof(*intent), GFP_KERNEL); in qcom_glink_alloc_intent()
641 if (!intent) in qcom_glink_alloc_intent()
644 intent->data = kzalloc(size, GFP_KERNEL); in qcom_glink_alloc_intent()
645 if (!intent->data) in qcom_glink_alloc_intent()
649 ret = idr_alloc_cyclic(&channel->liids, intent, 1, -1, GFP_ATOMIC); in qcom_glink_alloc_intent()
656 intent->id = ret; in qcom_glink_alloc_intent()
657 intent->size = size; in qcom_glink_alloc_intent()
658 intent->reuse = reuseable; in qcom_glink_alloc_intent()
660 return intent; in qcom_glink_alloc_intent()
663 kfree(intent->data); in qcom_glink_alloc_intent()
665 kfree(intent); in qcom_glink_alloc_intent()
673 struct glink_core_rx_intent *intent; in qcom_glink_handle_rx_done() local
686 intent = idr_find(&channel->riids, iid); in qcom_glink_handle_rx_done()
688 if (!intent) { in qcom_glink_handle_rx_done()
694 intent->in_use = false; in qcom_glink_handle_rx_done()
697 idr_remove(&channel->riids, intent->id); in qcom_glink_handle_rx_done()
698 kfree(intent); in qcom_glink_handle_rx_done()
716 struct glink_core_rx_intent *intent; in qcom_glink_handle_intent_req() local
729 intent = qcom_glink_alloc_intent(glink, channel, size, false); in qcom_glink_handle_intent_req()
730 if (intent) in qcom_glink_handle_intent_req()
731 qcom_glink_advertise_intent(glink, channel, intent); in qcom_glink_handle_intent_req()
733 qcom_glink_send_intent_req_ack(glink, channel, !!intent); in qcom_glink_handle_intent_req()
767 struct glink_core_rx_intent *intent; in qcom_glink_rx_data() local
809 intent = kzalloc(sizeof(*intent), GFP_ATOMIC); in qcom_glink_rx_data()
810 if (!intent) in qcom_glink_rx_data()
813 intent->data = kmalloc(chunk_size + left_size, in qcom_glink_rx_data()
815 if (!intent->data) { in qcom_glink_rx_data()
816 kfree(intent); in qcom_glink_rx_data()
820 intent->id = 0xbabababa; in qcom_glink_rx_data()
821 intent->size = chunk_size + left_size; in qcom_glink_rx_data()
822 intent->offset = 0; in qcom_glink_rx_data()
824 channel->buf = intent; in qcom_glink_rx_data()
826 intent = channel->buf; in qcom_glink_rx_data()
832 intent = idr_find(&channel->liids, liid); in qcom_glink_rx_data()
835 if (!intent) { in qcom_glink_rx_data()
843 if (intent->size - intent->offset < chunk_size) { in qcom_glink_rx_data()
850 qcom_glink_rx_peak(glink, intent->data + intent->offset, in qcom_glink_rx_data()
852 intent->offset += chunk_size; in qcom_glink_rx_data()
859 intent->data, in qcom_glink_rx_data()
860 intent->offset, in qcom_glink_rx_data()
866 intent->offset = 0; in qcom_glink_rx_data()
869 qcom_glink_rx_done(glink, channel, intent); in qcom_glink_rx_data()
883 struct glink_core_rx_intent *intent; in qcom_glink_handle_intent() local
920 intent = kzalloc(sizeof(*intent), GFP_ATOMIC); in qcom_glink_handle_intent()
921 if (!intent) in qcom_glink_handle_intent()
924 intent->id = le32_to_cpu(msg->intents[i].iid); in qcom_glink_handle_intent()
925 intent->size = le32_to_cpu(msg->intents[i].size); in qcom_glink_handle_intent()
928 ret = idr_alloc(&channel->riids, intent, in qcom_glink_handle_intent()
929 intent->id, intent->id + 1, GFP_ATOMIC); in qcom_glink_handle_intent()
1153 struct glink_core_rx_intent *intent; in qcom_glink_announce_create() local
1175 intent = qcom_glink_alloc_intent(glink, channel, size, in qcom_glink_announce_create()
1177 if (!intent) in qcom_glink_announce_create()
1180 qcom_glink_advertise_intent(glink, channel, intent); in qcom_glink_announce_create()
1243 struct glink_core_rx_intent *intent = NULL; in __qcom_glink_send() local
1255 while (!intent) { in __qcom_glink_send()
1259 if (!intent) in __qcom_glink_send()
1260 intent = tmp; in __qcom_glink_send()
1261 else if (intent->size > tmp->size) in __qcom_glink_send()
1262 intent = tmp; in __qcom_glink_send()
1263 if (intent->size == len) in __qcom_glink_send()
1267 if (intent) in __qcom_glink_send()
1268 intent->in_use = true; in __qcom_glink_send()
1272 if (intent) in __qcom_glink_send()
1283 iid = intent->id; in __qcom_glink_send()
1295 if (ret && intent) in __qcom_glink_send()
1296 intent->in_use = false; in __qcom_glink_send()