Lines Matching refs:rpc
884 struct arpc *rpc; in arpc_alloc() local
886 if (size + sizeof(*rpc->req) > ARPC_OUT_SIZE_MAX) in arpc_alloc()
889 rpc = kzalloc(sizeof(*rpc), GFP_KERNEL); in arpc_alloc()
890 if (!rpc) in arpc_alloc()
893 INIT_LIST_HEAD(&rpc->list); in arpc_alloc()
894 rpc->req = kzalloc(sizeof(*rpc->req) + size, GFP_KERNEL); in arpc_alloc()
895 if (!rpc->req) in arpc_alloc()
898 rpc->resp = kzalloc(sizeof(*rpc->resp), GFP_KERNEL); in arpc_alloc()
899 if (!rpc->resp) in arpc_alloc()
902 rpc->req->type = type; in arpc_alloc()
903 rpc->req->size = cpu_to_le16(sizeof(*rpc->req) + size); in arpc_alloc()
904 memcpy(rpc->req->data, payload, size); in arpc_alloc()
906 init_completion(&rpc->response_received); in arpc_alloc()
908 return rpc; in arpc_alloc()
911 kfree(rpc->req); in arpc_alloc()
913 kfree(rpc); in arpc_alloc()
918 static void arpc_free(struct arpc *rpc) in arpc_free() argument
920 kfree(rpc->req); in arpc_free()
921 kfree(rpc->resp); in arpc_free()
922 kfree(rpc); in arpc_free()
927 struct arpc *rpc; in arpc_find() local
929 list_for_each_entry(rpc, &es2->arpcs, list) { in arpc_find()
930 if (rpc->req->id == id) in arpc_find()
931 return rpc; in arpc_find()
937 static void arpc_add(struct es2_ap_dev *es2, struct arpc *rpc) in arpc_add() argument
939 rpc->active = true; in arpc_add()
940 rpc->req->id = cpu_to_le16(es2->arpc_id_cycle++); in arpc_add()
941 list_add_tail(&rpc->list, &es2->arpcs); in arpc_add()
944 static void arpc_del(struct es2_ap_dev *es2, struct arpc *rpc) in arpc_del() argument
946 if (rpc->active) { in arpc_del()
947 rpc->active = false; in arpc_del()
948 list_del(&rpc->list); in arpc_del()
952 static int arpc_send(struct es2_ap_dev *es2, struct arpc *rpc, int timeout) in arpc_send() argument
962 rpc->req, le16_to_cpu(rpc->req->size), in arpc_send()
964 if (retval != le16_to_cpu(rpc->req->size)) { in arpc_send()
967 rpc->req->type, retval); in arpc_send()
979 struct arpc *rpc; in arpc_sync() local
986 rpc = arpc_alloc(payload, size, type); in arpc_sync()
987 if (!rpc) in arpc_sync()
991 arpc_add(es2, rpc); in arpc_sync()
994 retval = arpc_send(es2, rpc, timeout); in arpc_sync()
999 &rpc->response_received, in arpc_sync()
1007 if (rpc->resp->result) { in arpc_sync()
1010 *result = rpc->resp->result; in arpc_sync()
1017 arpc_del(es2, rpc); in arpc_sync()
1019 arpc_free(rpc); in arpc_sync()
1034 struct arpc *rpc; in arpc_in_callback() local
1058 rpc = arpc_find(es2, resp->id); in arpc_in_callback()
1059 if (!rpc) { in arpc_in_callback()
1066 arpc_del(es2, rpc); in arpc_in_callback()
1067 memcpy(rpc->resp, resp, sizeof(*resp)); in arpc_in_callback()
1068 complete(&rpc->response_received); in arpc_in_callback()