firewire: Configure channel and speed at context creation time.

We need the channel number as we queue up iso packets for transmission
so we can fill out the header correctly.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
diff --git a/drivers/firewire/fw-device-cdev.c b/drivers/firewire/fw-device-cdev.c
index 6545fb8..5c87618 100644
--- a/drivers/firewire/fw-device-cdev.c
+++ b/drivers/firewire/fw-device-cdev.c
@@ -413,8 +413,16 @@
 	if (request.type > FW_ISO_CONTEXT_RECEIVE)
 		return -EINVAL;
 
+	if (request.channel > 63)
+		return -EINVAL;
+
+	if (request.speed > SCODE_3200)
+		return -EINVAL;
+
 	client->iso_context = fw_iso_context_create(client->device->card,
 						    request.type,
+						    request.channel,
+						    request.speed,
 						    request.header_size,
 						    iso_callback, client);
 	if (IS_ERR(client->iso_context))
@@ -519,8 +527,7 @@
 	if (copy_from_user(&request, arg, sizeof request))
 		return -EFAULT;
 
-	return fw_iso_context_start(client->iso_context, request.channel,
-				    request.speed, request.cycle);
+	return fw_iso_context_start(client->iso_context, request.cycle);
 }
 
 static int ioctl_stop_iso(struct client *client, void __user *arg)