Lines Matching refs:r

151 static void schedule_iso_resource(struct iso_resource *r, unsigned long delay)  in schedule_iso_resource()  argument
153 client_get(r->client); in schedule_iso_resource()
154 if (!queue_delayed_work(fw_workqueue, &r->work, delay)) in schedule_iso_resource()
155 client_put(r->client); in schedule_iso_resource()
182 struct outbound_transaction_resource r; member
562 idr_remove(&client->resource_idr, e->r.resource.handle); in complete_transaction()
618 e->r.resource.release = release_transaction; in init_request()
619 ret = add_client_resource(client, &e->r.resource, GFP_KERNEL); in init_request()
623 fw_send_request(client->device->card, &e->r.transaction, in init_request()
666 struct inbound_transaction_resource *r = container_of(resource, in release_request() local
669 if (is_fcp_request(r->request)) in release_request()
670 kfree(r->data); in release_request()
672 fw_send_response(r->card, r->request, RCODE_CONFLICT_ERROR); in release_request()
674 fw_card_put(r->card); in release_request()
675 kfree(r); in release_request()
684 struct inbound_transaction_resource *r; in handle_request() local
693 r = kmalloc(sizeof(*r), GFP_ATOMIC); in handle_request()
695 if (r == NULL || e == NULL) in handle_request()
698 r->card = card; in handle_request()
699 r->request = request; in handle_request()
700 r->data = payload; in handle_request()
701 r->length = length; in handle_request()
712 r->data = fcp_frame; in handle_request()
715 r->resource.release = release_request; in handle_request()
716 ret = add_client_resource(handler->client, &r->resource, GFP_ATOMIC); in handle_request()
730 req->handle = r->resource.handle; in handle_request()
744 req->handle = r->resource.handle; in handle_request()
750 &e->req, event_size0, r->data, length); in handle_request()
754 kfree(r); in handle_request()
767 struct address_handler_resource *r = in release_address_handler() local
770 fw_core_remove_address_handler(&r->handler); in release_address_handler()
771 kfree(r); in release_address_handler()
777 struct address_handler_resource *r; in ioctl_allocate() local
781 r = kmalloc(sizeof(*r), GFP_KERNEL); in ioctl_allocate()
782 if (r == NULL) in ioctl_allocate()
791 r->handler.length = a->length; in ioctl_allocate()
792 r->handler.address_callback = handle_request; in ioctl_allocate()
793 r->handler.callback_data = r; in ioctl_allocate()
794 r->closure = a->closure; in ioctl_allocate()
795 r->client = client; in ioctl_allocate()
797 ret = fw_core_add_address_handler(&r->handler, &region); in ioctl_allocate()
799 kfree(r); in ioctl_allocate()
802 a->offset = r->handler.offset; in ioctl_allocate()
804 r->resource.release = release_address_handler; in ioctl_allocate()
805 ret = add_client_resource(client, &r->resource, GFP_KERNEL); in ioctl_allocate()
807 release_address_handler(client, &r->resource); in ioctl_allocate()
810 a->handle = r->resource.handle; in ioctl_allocate()
825 struct inbound_transaction_resource *r; in ioctl_send_response() local
832 r = container_of(resource, struct inbound_transaction_resource, in ioctl_send_response()
834 if (is_fcp_request(r->request)) in ioctl_send_response()
837 if (a->length != fw_get_response_length(r->request)) { in ioctl_send_response()
839 kfree(r->request); in ioctl_send_response()
842 if (copy_from_user(r->data, u64_to_uptr(a->data), a->length)) { in ioctl_send_response()
844 kfree(r->request); in ioctl_send_response()
847 fw_send_response(r->card, r->request, a->rcode); in ioctl_send_response()
849 fw_card_put(r->card); in ioctl_send_response()
850 kfree(r); in ioctl_send_response()
865 struct descriptor_resource *r = in release_descriptor() local
868 fw_core_remove_descriptor(&r->descriptor); in release_descriptor()
869 kfree(r); in release_descriptor()
875 struct descriptor_resource *r; in ioctl_add_descriptor() local
885 r = kmalloc(sizeof(*r) + a->length * 4, GFP_KERNEL); in ioctl_add_descriptor()
886 if (r == NULL) in ioctl_add_descriptor()
889 if (copy_from_user(r->data, u64_to_uptr(a->data), a->length * 4)) { in ioctl_add_descriptor()
894 r->descriptor.length = a->length; in ioctl_add_descriptor()
895 r->descriptor.immediate = a->immediate; in ioctl_add_descriptor()
896 r->descriptor.key = a->key; in ioctl_add_descriptor()
897 r->descriptor.data = r->data; in ioctl_add_descriptor()
899 ret = fw_core_add_descriptor(&r->descriptor); in ioctl_add_descriptor()
903 r->resource.release = release_descriptor; in ioctl_add_descriptor()
904 ret = add_client_resource(client, &r->resource, GFP_KERNEL); in ioctl_add_descriptor()
906 fw_core_remove_descriptor(&r->descriptor); in ioctl_add_descriptor()
909 a->handle = r->resource.handle; in ioctl_add_descriptor()
913 kfree(r); in ioctl_add_descriptor()
1250 struct iso_resource *r = in iso_resource_work() local
1252 struct client *client = r->client; in iso_resource_work()
1258 todo = r->todo; in iso_resource_work()
1263 schedule_iso_resource(r, DIV_ROUND_UP(HZ, 3)); in iso_resource_work()
1268 r->generation == generation; in iso_resource_work()
1273 r->generation = generation; in iso_resource_work()
1279 bandwidth = r->bandwidth; in iso_resource_work()
1282 r->channels, &channel, &bandwidth, in iso_resource_work()
1302 if (r->todo == ISO_RES_ALLOC) in iso_resource_work()
1303 r->todo = ISO_RES_REALLOC; in iso_resource_work()
1308 if (r->todo == ISO_RES_REALLOC && !success && in iso_resource_work()
1310 idr_find(&client->resource_idr, r->resource.handle)) { in iso_resource_work()
1311 idr_remove(&client->resource_idr, r->resource.handle); in iso_resource_work()
1318 r->channels = 1ULL << channel; in iso_resource_work()
1324 e = r->e_alloc; in iso_resource_work()
1325 r->e_alloc = NULL; in iso_resource_work()
1327 e = r->e_dealloc; in iso_resource_work()
1328 r->e_dealloc = NULL; in iso_resource_work()
1330 e->iso_resource.handle = r->resource.handle; in iso_resource_work()
1338 cancel_delayed_work(&r->work); in iso_resource_work()
1339 kfree(r->e_alloc); in iso_resource_work()
1340 kfree(r->e_dealloc); in iso_resource_work()
1341 kfree(r); in iso_resource_work()
1350 struct iso_resource *r = in release_iso_resource() local
1354 r->todo = ISO_RES_DEALLOC; in release_iso_resource()
1355 schedule_iso_resource(r, 0); in release_iso_resource()
1363 struct iso_resource *r; in init_iso_resource() local
1370 r = kmalloc(sizeof(*r), GFP_KERNEL); in init_iso_resource()
1373 if (r == NULL || e1 == NULL || e2 == NULL) { in init_iso_resource()
1378 INIT_DELAYED_WORK(&r->work, iso_resource_work); in init_iso_resource()
1379 r->client = client; in init_iso_resource()
1380 r->todo = todo; in init_iso_resource()
1381 r->generation = -1; in init_iso_resource()
1382 r->channels = request->channels; in init_iso_resource()
1383 r->bandwidth = request->bandwidth; in init_iso_resource()
1384 r->e_alloc = e1; in init_iso_resource()
1385 r->e_dealloc = e2; in init_iso_resource()
1393 r->resource.release = release_iso_resource; in init_iso_resource()
1394 ret = add_client_resource(client, &r->resource, GFP_KERNEL); in init_iso_resource()
1398 r->resource.release = NULL; in init_iso_resource()
1399 r->resource.handle = -1; in init_iso_resource()
1400 schedule_iso_resource(r, 0); in init_iso_resource()
1402 request->handle = r->resource.handle; in init_iso_resource()
1406 kfree(r); in init_iso_resource()