linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Friesen <cfriesen@nortelnetworks.com>
To: root@chaos.analogic.com
Cc: "Friesen,
	Christopher [CAR:VS16:EXCH]" <cfriesen@americasm01.nt.com>,
	linux-kernel@vger.kernel.org
Subject: Re: are ioctl calls supposed to take this long?
Date: Fri, 06 Jul 2001 11:14:39 -0400	[thread overview]
Message-ID: <3B45D5DF.17D2B3F8@nortelnetworks.com> (raw)
In-Reply-To: <Pine.LNX.3.95.1010706103248.519B-100000@chaos.analogic.com>

"Richard B. Johnson" wrote:
> 
> On Fri, 6 Jul 2001, Chris Friesen wrote:
> 
> > I am using the following snippet of code to find out some information about the
> > MII PHY interface of my ethernet device (which uses the tulip driver).  When I
> > did some timing measurements with gettimeofday() I found that the ioctl call
> > takes a bit over a millisecond to complete.  This seems to me to be an awfully
> > long time for what should be (as far as I can see) a very simple operation.

> It's not ioctl() overhead, it's what has to be done in the driver to
> get the information you request.
> 
> (1)     Stop the chip
> (2)     Read the media interface using an awful SERIAL protocol in which
>         you manipulate 3 bits using multiple instructions, to send
>         or receive a single BIT (not BYTE) of data. You do the 8 times
>         per byte.
> (3)     Restart the chip.

Are you sure about this?  In the tulip.c driver the following appears to be the
salient code:

static int private_ioctl(struct device *dev, struct ifreq *rq, int cmd)
{
	struct tulip_private *tp = (struct tulip_private *)dev->priv;
	long ioaddr = dev->base_addr;
	u16 *data = (u16 *)&rq->ifr_data;
	int phy = tp->phys[0] & 0x1f;
	long flags;

	switch(cmd) {
	case SIOCDEVPRIVATE:		/* Get the address of the PHY in use. */
		if (tp->mii_cnt)
			data[0] = phy;
		else if (tp->flags & HAS_NWAY143)
			data[0] = 32;
		else if (tp->chip_id == COMET)
			data[0] = 1;
		else
			return -ENODEV;


I don't see any device stopping or reading of the media interface here.  Now
there may be something very subtle hidden somewhere that I'm not seeing, but
this looks like some relatively straightforward comparisons.

Chris



-- 
Chris Friesen                    | MailStop: 043/33/F10  
Nortel Networks                  | work: (613) 765-0557
3500 Carling Avenue              | fax:  (613) 765-2986
Nepean, ON K2H 8E9 Canada        | email: cfriesen@nortelnetworks.com

  reply	other threads:[~2001-07-06 15:15 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-06 13:34 are ioctl calls supposed to take this long? Chris Friesen
2001-07-06 14:41 ` Richard B. Johnson
2001-07-06 15:14   ` Chris Friesen [this message]
2001-07-06 15:32     ` Richard B. Johnson
2001-07-06 15:40       ` Chris Friesen
2001-07-06 18:26       ` why this 1ms delay in mdio_read? (cont'd from "are ioctl calls supposed to take this long?") Chris Friesen
2001-07-06 18:48         ` Richard B. Johnson
2001-07-06 19:35           ` Chris Friesen
2001-07-06 21:41         ` Donald Becker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3B45D5DF.17D2B3F8@nortelnetworks.com \
    --to=cfriesen@nortelnetworks.com \
    --cc=cfriesen@americasm01.nt.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=root@chaos.analogic.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).