DragonFly commits List (threaded) for 2005-05
Re: cvs commit: src/sys/i386/i386 nexus.c src/sys/i386/include atomic.h src/sys/kern kern_poll.c lwkt_serialize.c src/sys/net if.c if_var.h rtsock.c src/sbin/ifconfig ifconfig.c src/sys/dev/netif/dc if_dc.c src/sys/dev/netif/em if_em.c if_em.h ...
In article <200505251524.j4PFOPA9007352@xxxxxxxxxxxxxxxxxxxx>,
Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx> wrote:
>:On Wed, May 25, 2005 at 01:13:58AM -0700, Matthew Dillon wrote:
>:> Polling is an interface capability in FreeBSD, and it works totally
>:> differently from any other standard network interface operation. It
>:> requires reading multiple manual pages and getting help from the lists
>:> to even make it work as expected, something I'd like to avoid in
>:> DragonFly. It is totally non-intuitive. The design is aweful.
>:Beside the documenation issue, have a look at
>:I want to have explicit control in the drivers, since we can use
>:it as alternative to having an interrupt and disabling the cap would
>:be pretty bad (stupid) in that case. Actually I'll take another round
>:over the nics to factor out some more common stuff from _ioctl.
> The patch creates unnecessarily complication inside each and every
> network driver. I would prefer to *simplify* the drivers, not make
> them more complex.
> If you really want to have an interface capability, then we could
> change the 'ifp->if_poll = blah_poll' line to a registration API
> into ether_poll. e.g. ether_poll_install(ifp, blah_poll), which
> could then set both the vector and the appropriate capability bit.
As the guy who came up with IFCAP (yeah, shoot me now), one of the
motivating factors was to provide the ability to report to the user
(via the unintuitive 'ifconfig -m') what the device can actually support.
This came about because people constantly were asking why their ifconfig
command didn't 'take' when they tried turning on checksumming. I'd
imagine this would be the same problem for polling. For the most part
I'd think that simply turning on capabilities would be handled in the
net/if.c code ; checksums can't do this, as they calls into the driver
in order to restart the NIC. An ether_install(..) call for capabilities
would be nice.