Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Aug 1997 01:09:46 -0700 (PDT)
From:      Vinay Bannai <vinay@agni.nuko.com>
To:        dg@root.com
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: Device drivers and DMA details??
Message-ID:  <199708170809.BAA25936@agni.nuko.com>
In-Reply-To: <199708170133.SAA04271@implode.root.com> from "David Greenman" at "Aug 16, 97 06:33:20 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
According to David Greenman:
> >Also, while examining the fxp driver, the fxp_start() seems to be
> >invoked at the time of each incoming packet (or interrupt from the
> >device). Wouldn't this not create a delay in sending packets? Or is it
> >that the fxp_start() also gets invoked whenever a packet is shoved on
> >the network IF queues? 
> 
>    The driver start routine is also called when a packet is sent. See the
> end of the ether_output() function in /sys/net/if_ethersubr.c.
> 
> -DG
> 
> David Greenman
> Core-team/Principal Architect, The FreeBSD Project

Ah!! I see that the interface's if_start() routine is called when the
network is not busy (IFF_OACTIVE). This means that IFF_OACTIVE is set for
the interface while receiving the packet or when the controller is
busy. In fact it appears that the fxp driver never has the need to set the
IFF_OACTIVE, so the fxp_start() gets called everytime a packet is queued
on the interface queue unless it is running at a priority of the hardware
interrupt from the network controller. In that case since the hardware
interrupt from the network controller being higher than splimp() will make
it possible for the IF queues to be flushed before the priority drops back
to splimp or whatever. Is that a correct assesment?

Thanks
Vinay




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