From owner-p4-projects@FreeBSD.ORG Thu Dec 13 19:18:38 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 01C0316A46E; Thu, 13 Dec 2007 19:18:38 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A185D16A417 for ; Thu, 13 Dec 2007 19:18:37 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7DC5F13C461 for ; Thu, 13 Dec 2007 19:18:37 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lBDJIbtD062979 for ; Thu, 13 Dec 2007 19:18:37 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lBDJIboe062976 for perforce@freebsd.org; Thu, 13 Dec 2007 19:18:37 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 13 Dec 2007 19:18:37 GMT Message-Id: <200712131918.lBDJIboe062976@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 130807 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Dec 2007 19:18:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=130807 Change 130807 by hselasky@hselasky_laptop001 on 2007/12/13 19:17:39 Only clear the PORT_ENABLE feature on the HUB if the port is enabled. Else it has been observed that some HUBs will generate another port connection change and we start going into an infinite loop. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/uhub.c#26 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/uhub.c#26 (text+ko) ==== @@ -420,8 +420,10 @@ child = NULL; } if (err == 0) { + if (sc->sc_st.port_status & UPS_PORT_ENABLED) { err = usbreq_clear_port_feature (sc->sc_udev, &usb_global_lock, portno, UHF_PORT_ENABLE); + } } if (err) { DPRINTF(sc, -1, "device problem (%s), "