Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Apr 2003 09:53:32 +0200 (CEST)
From:      Harti Brandt <brandt@fokus.fraunhofer.de>
To:        Mike Silbersack <silby@silby.com>
Cc:        John Polstra <jdp@polstra.com>
Subject:   Re: realtime problem
Message-ID:  <20030411094125.P774@beagle.fokus.fraunhofer.de>
In-Reply-To: <20030410164758.B695@odysseus.silby.com>
References:  <20030409114957.GN83126@cicely9.cicely.de>    <20030410181322.W774@beagle.fokus.fraunhofer.de> <20030410164758.B695@odysseus.silby.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 10 Apr 2003, Mike Silbersack wrote:

MS>Yes, it should take the early return I added, which is what I think it did
MS>for my 3Com cards, back when I tested it.  You might want to add some
MS>debug code and poke at it more, because the benefits were huge when I
MS>tried it.

Somehow the patch has botched the logic. After patching it looks like:

	mii->mii_media_status = IFM_AVALID;
	mii->mii_media_active = IFM_ETHER;

	bmsr = PHY_READ(phy, MII_BMSR);

	/* Link status is latched, so if we read a 1, nothing has changed. */
	if ((bmsr & BMSR_LINK) && (bmsr & BMSR_ACOMP) &&
		(mii->mii_media_status & IFM_ACTIVE))
		return;

So, of course, it never takes the early return. When I remove the first
assignment it seems to work. In this case I get a mean time for
xl_status_update of 205usec which is ok I suppose.

To be correct shouldn't the if() test for
		(mii->mii_media_status & IFM_AVALID) &&
		(mii->mii_media_status & IFM_ACTIVE))

harti
-- 
harti brandt,
http://www.fokus.fraunhofer.de/research/cc/cats/employees/hartmut.brandt/private
brandt@fokus.fraunhofer.de, harti@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030411094125.P774>