[PATCH] [UBUNTU:sound/usb] Make error messages more informative
crimsun at fungus.sh.nu
crimsun at fungus.sh.nu
Sat Mar 25 03:28:34 UTC 2006
Subject: [PATCH] [UBUNTU:sound/usb] Make error messages more informative
UpstreamStatus: Added in upstream usb/usbaudio.c r1.17[34]
Clemens Ladisch <clemens at ladisch.de> committed the above patch(es) so
that error messages in usb/usbaudio.c are more human-friendly than
simply returning error codes. This change is useful for people who,
for instance, attempt to play audio through a usb device connected to
a hub.
Signed-off-by: Daniel T Chen <crimsun at ubuntu.com>
---
sound/usb/usbaudio.c | 43 +++++++++++++++++++++++++++++++++++++++----
1 files changed, 39 insertions(+), 4 deletions(-)
cffcd85ecb3a6d75a446f1dec108b663c8fda9ed
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index cb73297..e0e6a42 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -781,6 +781,35 @@ static int deactivate_urbs(snd_usb_subst
}
+static const char *usb_error_string(int err)
+{
+ switch (err) {
+ case -ENODEV:
+ return "no device";
+ case -ENOENT:
+ return "endpoint not enabled";
+ case -EPIPE:
+ return "endpoint stalled";
+ case -ENOSPC:
+ return "not enough bandwidth";
+ case -ESHUTDOWN:
+ return "device disabled";
+ case -EHOSTUNREACH:
+ return "device suspended";
+#ifndef CONFIG_USB_EHCI_SPLIT_ISO
+ case -ENOSYS:
+ return "enable CONFIG_USB_EHCI_SPLIT_ISO to play through a hub";
+#endif
+ case -EINVAL:
+ case -EAGAIN:
+ case -EFBIG:
+ case -EMSGSIZE:
+ return "internal error";
+ default:
+ return "unknown error";
+ }
+}
+
/*
* set up and start data/sync urbs
*/
@@ -813,16 +842,22 @@ static int start_urbs(snd_usb_substream_
subs->unlink_mask = 0;
subs->running = 1;
for (i = 0; i < subs->nurbs; i++) {
- if ((err = usb_submit_urb(subs->dataurb[i].urb, GFP_ATOMIC)) < 0) {
- snd_printk(KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err);
+ err = usb_submit_urb(subs->dataurb[i].urb, GFP_ATOMIC);
+ if (err < 0) {
+ snd_printk(KERN_ERR "cannot submit datapipe "
+ "for urb %d, error %d: %s\n",
+ i, err, usb_error_string(err));
goto __error;
}
set_bit(i, &subs->active_mask);
}
if (subs->syncpipe) {
for (i = 0; i < SYNC_URBS; i++) {
- if ((err = usb_submit_urb(subs->syncurb[i].urb, GFP_ATOMIC)) < 0) {
- snd_printk(KERN_ERR "cannot submit syncpipe for urb %d, err = %d\n", i, err);
+ err = usb_submit_urb(subs->syncurb[i].urb, GFP_ATOMIC);
+ if (err < 0) {
+ snd_printk(KERN_ERR "cannot submit syncpipe "
+ "for urb %d, error %d: %s\n",
+ i, err, usb_error_string(err));
goto __error;
}
set_bit(i + 16, &subs->active_mask);
--
1.1.3
--
Daniel T. Chen crimsun at ubuntu.com
GPG key: www.sh.nu/~crimsun/pubkey.gpg.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20060324/affa8c4d/attachment.sig>
More information about the kernel-team
mailing list