[Bug 915985] Re: usbhid-ups regression (APC BE525-RS)
Dmitry Andreychuk
915985 at bugs.launchpad.net
Tue Jan 24 15:21:47 UTC 2012
The patch didn't change the output. I took a look at the sources:
libusb_get_report() returns libusb_strerror(ret, __func__) which returns 0 for ret == -EOVERFLOW. Then in refresh_report_buffer(): r == 0 and the patch doesn't work. The log message would be incorrect anyway because "r" is not the size of response but a negative error code in this situation.
I made a quick additional patch for 2.6.3 to get the output you wanted.
Looks like the value is still updated only once.
--- drivers/libhid.c.bak 2012-01-24 18:40:32.437247314 +0400
+++ drivers/libhid.c 2012-01-24 18:52:50.624696914 +0400
@@ -155,7 +155,7 @@
/* Some buggy firmware send more data than expected. Log this, but process
* data anyway */
- if (rbuf->len[id] != r) {
+ if (r > 0 && rbuf->len[id] != r) {
upsdebugx(2, "%s: expected %d bytes, but got %d instead", __func__, rbuf->len[id], r);
upsdebug_hex(3, "Report[err]", rbuf->data[id], r);
} else {
--- drivers/libusb.c.bak 2012-01-24 15:08:13.090612484 +0400
+++ drivers/libusb.c 2012-01-24 15:08:21.578110181 +0400
@@ -378,7 +378,7 @@
case -EOVERFLOW: /* Value too large for defined data type */
case -EPROTO: /* Protocol error */
upsdebugx(2, "%s: %s", desc, usb_strerror());
- return 0;
+ return ret;
default: /* Undetermined, log only */
upslogx(LOG_DEBUG, "%s: %s", desc, usb_strerror());
** Attachment added: "usbhid-ups_2.6.3+patch2_power_failure.log"
https://bugs.launchpad.net/ubuntu/+source/nut/+bug/915985/+attachment/2690943/+files/usbhid-ups_2.6.3%2Bpatch2_power_failure.log
--
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to nut in Ubuntu.
https://bugs.launchpad.net/bugs/915985
Title:
usbhid-ups regression (APC BE525-RS)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nut/+bug/915985/+subscriptions
More information about the Ubuntu-server-bugs
mailing list