[go: nahoru, domu]

Skip to content

Commit

Permalink
firewire: core: add tracepoint event for asynchronous inbound request
Browse files Browse the repository at this point in the history
This commit adds an event for asynchronous inbound request.

The following example is for asynchronous block write request as IEC
61883-1 FCP request from node 0xffc1.

async_request_inbound: \
  transaction=0xffff89fa08cf16c0 generation=4 scode=2 status=2 \
  timestamp=0x00b3 dst_id=0xffc0 tlabel=19 tcode=1 src_id=0xffc1 \
  offset=0xfffff0000d00 header={0xffc04d10,0xffc1ffff,0xf0000d00,0x80000} \
  data={0x19ff08,0xffff0090}

Link: https://lore.kernel.org/r/20240429043218.609398-5-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
  • Loading branch information
takaswie committed May 6, 2024
1 parent 06cc078 commit 2c945b1
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
8 changes: 7 additions & 1 deletion drivers/firewire/core-transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -973,11 +973,13 @@ void fw_core_handle_request(struct fw_card *card, struct fw_packet *p)
{
struct fw_request *request;
unsigned long long offset;
unsigned int tcode;

if (p->ack != ACK_PENDING && p->ack != ACK_COMPLETE)
return;

if (tcode_is_link_internal(async_header_get_tcode(p->header))) {
tcode = async_header_get_tcode(p->header);
if (tcode_is_link_internal(tcode)) {
fw_cdev_handle_phy_packet(card, p);
return;
}
Expand All @@ -988,6 +990,10 @@ void fw_core_handle_request(struct fw_card *card, struct fw_packet *p)
return;
}

trace_async_request_inbound((uintptr_t)request, p->generation, p->speed, p->ack,
p->timestamp, p->header, request->data,
tcode_is_read_request(tcode) ? 0 : request->length / 4);

offset = async_header_get_offset(p->header);

if (!is_in_fcp_region(offset, request->length))
Expand Down
21 changes: 21 additions & 0 deletions include/trace/events/firewire.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,27 @@ DEFINE_EVENT(async_inbound_template, async_response_inbound,
TP_ARGS(transaction, generation, scode, status, timestamp, header, data, data_count)
);

DEFINE_EVENT_PRINT(async_inbound_template, async_request_inbound,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, status, timestamp, header, data, data_count),
TP_printk(
"transaction=0x%llx generation=%u scode=%u status=%u timestamp=0x%04x dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x offset=0x%012llx header=%s data=%s",
__entry->transaction,
__entry->generation,
__entry->scode,
__entry->status,
__entry->timestamp,
ASYNC_HEADER_GET_DESTINATION(__entry->header),
ASYNC_HEADER_GET_TLABEL(__entry->header),
ASYNC_HEADER_GET_TCODE(__entry->header),
ASYNC_HEADER_GET_SOURCE(__entry->header),
ASYNC_HEADER_GET_OFFSET(__entry->header),
__print_array(__entry->header, ASYNC_HEADER_QUADLET_COUNT, QUADLET_SIZE),
__print_array(__get_dynamic_array(data),
__get_dynamic_array_len(data) / QUADLET_SIZE, QUADLET_SIZE)
)
);

#undef ASYNC_HEADER_GET_DESTINATION
#undef ASYNC_HEADER_GET_TLABEL
#undef ASYNC_HEADER_GET_TCODE
Expand Down

0 comments on commit 2c945b1

Please sign in to comment.