Lines Matching refs:request
659 void fw_request_get(struct fw_request *request) in fw_request_get() argument
661 kref_get(&request->kref); in fw_request_get()
666 struct fw_request *request = container_of(kref, struct fw_request, kref); in release_request() local
668 kfree(request); in release_request()
671 void fw_request_put(struct fw_request *request) in fw_request_put() argument
673 kref_put(&request->kref, release_request); in fw_request_put()
679 struct fw_request *request = container_of(packet, struct fw_request, response); in free_response_callback() local
681 trace_async_response_outbound_complete((uintptr_t)request, card->index, packet->generation, in free_response_callback()
685 fw_request_put(request); in free_response_callback()
688 fw_request_put(request); in free_response_callback()
799 struct fw_request *request; in allocate_request() local
832 request = kmalloc(sizeof(*request) + length, GFP_ATOMIC); in allocate_request()
833 if (request == NULL) in allocate_request()
835 kref_init(&request->kref); in allocate_request()
837 request->response.speed = p->speed; in allocate_request()
838 request->response.timestamp = in allocate_request()
840 request->response.generation = p->generation; in allocate_request()
841 request->response.ack = 0; in allocate_request()
842 request->response.callback = free_response_callback; in allocate_request()
843 request->ack = p->ack; in allocate_request()
844 request->timestamp = p->timestamp; in allocate_request()
845 request->length = length; in allocate_request()
847 memcpy(request->data, data, length); in allocate_request()
849 memcpy(request->request_header, p->header, sizeof(p->header)); in allocate_request()
851 return request; in allocate_request()
864 struct fw_request *request, int rcode) in fw_send_response() argument
870 if (request->ack != ACK_PENDING || in fw_send_response()
871 HEADER_DESTINATION_IS_BROADCAST(request->request_header)) { in fw_send_response()
872 fw_request_put(request); in fw_send_response()
877 data = request->data; in fw_send_response()
878 data_length = fw_get_response_length(request); in fw_send_response()
881 fw_fill_response(&request->response, request->request_header, rcode, data, data_length); in fw_send_response()
884 fw_request_get(request); in fw_send_response()
886 trace_async_response_outbound_initiate((uintptr_t)request, card->index, in fw_send_response()
887 request->response.generation, request->response.speed, in fw_send_response()
888 request->response.header, data, in fw_send_response()
891 card->driver->send_response(card, &request->response); in fw_send_response()
899 int fw_get_request_speed(struct fw_request *request) in fw_get_request_speed() argument
901 return request->response.speed; in fw_get_request_speed()
915 u32 fw_request_get_timestamp(const struct fw_request *request) in fw_request_get_timestamp() argument
917 return request->timestamp; in fw_request_get_timestamp()
923 struct fw_request *request, in handle_exclusive_region_request() argument
937 request->length); in handle_exclusive_region_request()
943 fw_send_response(card, request, RCODE_ADDRESS_ERROR); in handle_exclusive_region_request()
948 handler->address_callback(card, request, tcode, destination, source, p->generation, offset, in handle_exclusive_region_request()
949 request->data, request->length, handler->callback_data); in handle_exclusive_region_request()
958 struct fw_request *request, in handle_fcp_region_request() argument
967 request->length > 0x200) { in handle_fcp_region_request()
968 fw_send_response(card, request, RCODE_ADDRESS_ERROR); in handle_fcp_region_request()
979 fw_send_response(card, request, RCODE_TYPE_ERROR); in handle_fcp_region_request()
989 if (is_enclosing_handler(handler, offset, request->length)) { in handle_fcp_region_request()
1024 handler->address_callback(card, request, tcode, destination, source, in handle_fcp_region_request()
1025 p->generation, offset, request->data, in handle_fcp_region_request()
1026 request->length, handler->callback_data); in handle_fcp_region_request()
1033 fw_send_response(card, request, RCODE_COMPLETE); in handle_fcp_region_request()
1038 struct fw_request *request; in fw_core_handle_request() local
1053 request = allocate_request(card, p); in fw_core_handle_request()
1054 if (request == NULL) { in fw_core_handle_request()
1059 trace_async_request_inbound((uintptr_t)request, card->index, p->generation, p->speed, in fw_core_handle_request()
1060 p->ack, p->timestamp, p->header, request->data, in fw_core_handle_request()
1061 tcode_is_read_request(tcode) ? 0 : request->length / 4); in fw_core_handle_request()
1065 if (!is_in_fcp_region(offset, request->length)) in fw_core_handle_request()
1066 handle_exclusive_region_request(card, p, request, offset); in fw_core_handle_request()
1068 handle_fcp_region_request(card, p, request, offset); in fw_core_handle_request()
1181 static void handle_topology_map(struct fw_card *card, struct fw_request *request, in handle_topology_map() argument
1189 fw_send_response(card, request, RCODE_TYPE_ERROR); in handle_topology_map()
1194 fw_send_response(card, request, RCODE_ADDRESS_ERROR); in handle_topology_map()
1201 fw_send_response(card, request, RCODE_COMPLETE); in handle_topology_map()
1226 static void handle_registers(struct fw_card *card, struct fw_request *request, in handle_registers() argument
1336 fw_send_response(card, request, rcode); in handle_registers()
1344 static void handle_low_memory(struct fw_card *card, struct fw_request *request, in handle_low_memory() argument
1353 fw_send_response(card, request, RCODE_TYPE_ERROR); in handle_low_memory()