Subject: Re: Network UPS Tools: please test USB and SNMP drivers
To: Geert Hendrickx <ghen@netbsd.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: pkgsrc-users
Date: 08/22/2006 23:17:21
--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed, Aug 16, 2006 at 03:43:07PM +0200, Geert Hendrickx wrote:
> Hi, 
> 
> after reorganizing the net/ups-nut (Network UPS Tools) package a bit, I was able
> to easily add new packages for the USB (bcmxcp_usb, newhidups and tripplite_usb)
> and SNMP (snmp-ups) drivers: net/ups-nut-usb and net/ups-nut-snmp, respectively.
> They build and install fine, but I don't have the hardware to test them further.
> Could anyone with USB or network (SNMP) enabled UPS'es please test these drivers
> and let me know whether they work?  

usb worked more or less for me, for ups-nut-2.0.3 (I don't know if pkgsrc has
something newer now), but required the attached kernel patch. But I has
frequent issues where the driver would stop talking to the UPS, requiring
a reboot of the box (a restart of the daemon didn't fix it), so I gave up
and got a usb/serial dongle.

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--

--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="usb.diff"

Index: usb/ugen.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ugen.c,v
retrieving revision 1.71
diff -u -r1.71 ugen.c
--- usb/ugen.c	2 Mar 2005 11:37:27 -0000	1.71
+++ usb/ugen.c	22 Aug 2006 21:12:32 -0000
@@ -556,7 +556,8 @@
 			}
 			sce->state |= UGEN_ASLP;
 			DPRINTFN(5, ("ugenread: sleep on %p\n", sce));
-			error = tsleep(sce, PZERO | PCATCH, "ugenri", 0);
+			error = tsleep(sce, PZERO | PCATCH, "ugenri", 
+			    mstohz(sce->timeout));
 			DPRINTFN(5, ("ugenread: woke, error=%d\n", error));
 			if (sc->sc_dying)
 				error = EIO;
@@ -620,7 +621,8 @@
 			}
 			sce->state |= UGEN_ASLP;
 			DPRINTFN(5, ("ugenread: sleep on %p\n", sce));
-			error = tsleep(sce, PZERO | PCATCH, "ugenri", 0);
+			error = tsleep(sce, PZERO | PCATCH, "ugenri", 
+			    mstohz(sce->timeout));
 			DPRINTFN(5, ("ugenread: woke, error=%d\n", error));
 			if (sc->sc_dying)
 				error = EIO;

--Q68bSM7Ycu6FN28Q--