firewire: net: better FIFO address range check and rcodes

The AR req handler should not check the generation; higher level code
is the better place to handle bus generation changes.  The target node
ID just needs to be checked for not being the "all nodes" address; in
this case don't handle the request and don't respond.

Use Address_Error and Type_Error rcodes as appropriate.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c
index 47dcb45..a42209a 100644
--- a/drivers/firewire/net.c
+++ b/drivers/firewire/net.c
@@ -810,29 +810,27 @@
 		int speed, unsigned long long offset, void *payload,
 		size_t length, void *callback_data)
 {
-	struct fwnet_device *dev;
-	int status;
+	struct fwnet_device *dev = callback_data;
+	int rcode;
 
-	dev = callback_data;
-	if (tcode != TCODE_WRITE_BLOCK_REQUEST
-	    || destination != card->node_id	/* <- FIXME */
-	    || generation != card->generation	/* <- FIXME */
-	    || offset != dev->handler.offset) {
-		fw_send_response(card, r, RCODE_CONFLICT_ERROR);
+	if (destination == IEEE1394_ALL_NODES) {
+		kfree(r);
 
 		return;
 	}
 
-	status = fwnet_incoming_packet(dev, payload, length,
-				       source, generation, false);
-	if (status != 0) {
+	if (offset != dev->handler.offset)
+		rcode = RCODE_ADDRESS_ERROR;
+	else if (tcode != TCODE_WRITE_BLOCK_REQUEST)
+		rcode = RCODE_TYPE_ERROR;
+	else if (fwnet_incoming_packet(dev, payload, length,
+				       source, generation, false) != 0) {
 		fw_error("Incoming packet failure\n");
-		fw_send_response(card, r, RCODE_CONFLICT_ERROR);
+		rcode = RCODE_CONFLICT_ERROR;
+	} else
+		rcode = RCODE_COMPLETE;
 
-		return;
-	}
-
-	fw_send_response(card, r, RCODE_COMPLETE);
+	fw_send_response(card, r, rcode);
 }
 
 static void fwnet_receive_broadcast(struct fw_iso_context *context,