2005-01-31 14:57:33

by Martin Wilck

[permalink] [raw]
Subject: SIOCGIFMAP silently broken?

Hi,

we are using a server management software that uses the irq information
returned by the SIOCGIFMAP ioctl to correlate network interfaces with
LAN hardware.

The code for SIOCGIFMAP if net/core/dev.c simply returns netdev->irq
which isn't set by most actual LAN drivers any more, and it seems to
be common opinion that setting netdev->irq is either optional or even
wrong (http://www.ussg.iu.edu/hypermail/linux/kernel/0407.3/1292.html).

Consequently, the SIOCGIFMAP ioctl reports bogus IRQ values for most
hardware; it is therefore unreliable.

Would it be possible to fix the ioctl such that it returns the correct
irq value, e.g. be using the irq field of the associated struct pci_dev?

If not, I'd consider it better to deprecate netdev->irq officially and
always return bogus so that people stop using it.

In both cases, the netdev->irq field isn't used anymore; perhaps it
should be officially deprecated and/or removed?

Regards
Martin

--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:[email protected]
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy


2005-01-31 19:55:30

by David Miller

[permalink] [raw]
Subject: Re: SIOCGIFMAP silently broken?

On Mon, 31 Jan 2005 15:57:09 +0100
Martin Wilck <[email protected]> wrote:

> In both cases, the netdev->irq field isn't used anymore; perhaps it
> should be officially deprecated and/or removed?

It is used for explicitly setting the IRQ value on hardware
where doing so automatically via probing may not be %100
reliable, such as on ISA.

Another way to do what you're trying to do is to look for
the string name of the device you are interested in within
the output of /proc/interrupts.