diff options
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/fw-transaction.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c index 2f11ed1acf01..40db80752272 100644 --- a/drivers/firewire/fw-transaction.c +++ b/drivers/firewire/fw-transaction.c | |||
@@ -55,6 +55,9 @@ | |||
55 | #define HEADER_GET_DATA_LENGTH(q) (((q) >> 16) & 0xffff) | 55 | #define HEADER_GET_DATA_LENGTH(q) (((q) >> 16) & 0xffff) |
56 | #define HEADER_GET_EXTENDED_TCODE(q) (((q) >> 0) & 0xffff) | 56 | #define HEADER_GET_EXTENDED_TCODE(q) (((q) >> 0) & 0xffff) |
57 | 57 | ||
58 | #define HEADER_DESTINATION_IS_BROADCAST(q) \ | ||
59 | (((q) & HEADER_DESTINATION(0x3f)) == HEADER_DESTINATION(0x3f)) | ||
60 | |||
58 | #define PHY_CONFIG_GAP_COUNT(gap_count) (((gap_count) << 16) | (1 << 22)) | 61 | #define PHY_CONFIG_GAP_COUNT(gap_count) (((gap_count) << 16) | (1 << 22)) |
59 | #define PHY_CONFIG_ROOT_ID(node_id) ((((node_id) & 0x3f) << 24) | (1 << 23)) | 62 | #define PHY_CONFIG_ROOT_ID(node_id) ((((node_id) & 0x3f) << 24) | (1 << 23)) |
60 | #define PHY_IDENTIFIER(id) ((id) << 30) | 63 | #define PHY_IDENTIFIER(id) ((id) << 30) |
@@ -624,12 +627,9 @@ allocate_request(struct fw_packet *p) | |||
624 | void | 627 | void |
625 | fw_send_response(struct fw_card *card, struct fw_request *request, int rcode) | 628 | fw_send_response(struct fw_card *card, struct fw_request *request, int rcode) |
626 | { | 629 | { |
627 | /* | 630 | /* unified transaction or broadcast transaction: don't respond */ |
628 | * Broadcast packets are reported as ACK_COMPLETE, so this | 631 | if (request->ack != ACK_PENDING || |
629 | * check is sufficient to ensure we don't send response to | 632 | HEADER_DESTINATION_IS_BROADCAST(request->request_header[0])) { |
630 | * broadcast packets or posted writes. | ||
631 | */ | ||
632 | if (request->ack != ACK_PENDING) { | ||
633 | kfree(request); | 633 | kfree(request); |
634 | return; | 634 | return; |
635 | } | 635 | } |