From 50c78b88b1d04519a0a3035c4df60a95fab41888 Mon Sep 17 00:00:00 2001 From: Stefan Richter Date: Sun, 25 May 2008 11:06:55 +0200 Subject: [PATCH] --- yaml --- r: 101351 b: refs/heads/master c: a7ea67823af4a7e442e92064b0fab46603a588f6 h: refs/heads/master i: 101349: fbb937813ce41cf8706a6ec53c71354c18c0adfa 101347: ebd5c2def7427c8b9ddd0810fbee176a03db5c9e 101343: 684c6600d1957c2d977e6c13420d2f4d5bc3b1ac v: v3 --- [refs] | 2 +- trunk/drivers/firewire/fw-transaction.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 1b68a70f8e80..7371555e6577 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 459f79235d8faa0050180c7e0c7bb4b2b52cbdfd +refs/heads/master: a7ea67823af4a7e442e92064b0fab46603a588f6 diff --git a/trunk/drivers/firewire/fw-transaction.c b/trunk/drivers/firewire/fw-transaction.c index 2f11ed1acf01..40db80752272 100644 --- a/trunk/drivers/firewire/fw-transaction.c +++ b/trunk/drivers/firewire/fw-transaction.c @@ -55,6 +55,9 @@ #define HEADER_GET_DATA_LENGTH(q) (((q) >> 16) & 0xffff) #define HEADER_GET_EXTENDED_TCODE(q) (((q) >> 0) & 0xffff) +#define HEADER_DESTINATION_IS_BROADCAST(q) \ + (((q) & HEADER_DESTINATION(0x3f)) == HEADER_DESTINATION(0x3f)) + #define PHY_CONFIG_GAP_COUNT(gap_count) (((gap_count) << 16) | (1 << 22)) #define PHY_CONFIG_ROOT_ID(node_id) ((((node_id) & 0x3f) << 24) | (1 << 23)) #define PHY_IDENTIFIER(id) ((id) << 30) @@ -624,12 +627,9 @@ allocate_request(struct fw_packet *p) void fw_send_response(struct fw_card *card, struct fw_request *request, int rcode) { - /* - * Broadcast packets are reported as ACK_COMPLETE, so this - * check is sufficient to ensure we don't send response to - * broadcast packets or posted writes. - */ - if (request->ack != ACK_PENDING) { + /* unified transaction or broadcast transaction: don't respond */ + if (request->ack != ACK_PENDING || + HEADER_DESTINATION_IS_BROADCAST(request->request_header[0])) { kfree(request); return; }