[openib-general] [PATCH] IPoIB network interface "RUNNING" status with the cable disconnected - fix

Leonid Arsh leonida at voltaire.com
Mon Mar 20 22:59:33 PST 2006


 I addition to Jason's words, I'd say that IB supplies all the needed
tools for the carrier detection, like MII.
 I think we should use them.

The IPoIB driver calls netif_carrier_on() when the general broadcast
mcast group is ready -
this means also that link is up and the PKEY is configured.

The driver currently doesn't set the "RUNNING" state until the mcast
group is ready,
but after setting it never cleans the state.
I hope to propose an additional patch soon, allowing the driver to
respond correctly to PKEY in/out events.

-----Original Message-----
From: Jason Gunthorpe [mailto:jgunthorpe at obsidianresearch.com] 
Sent: Tuesday, March 21, 2006 5:50 AM
To: Roland Dreier
Cc: Leonid Arsh; openib-general at openib.org
Subject: Re: [openib-general] [PATCH] IPoIB network interface "RUNNING"
status with the cable disconnected - fix

On Mon, Mar 20, 2006 at 04:12:44PM -0800, Roland Dreier wrote:
>     Leonid>    the patch fixes a problem with the network interface
>     Leonid> "RUNNING" status.  The problem was that the status stayed
>     Leonid> "RUNNING" with the cable disconnected,
> 
> Hmm, is this really a bug?  For example, on my laptop with an e1000 
> wired interface with no cable plugged, the interface is still shown as

> RUNNING.

In linux it depends on the driver and chipset if this is supported..
Alot of the drivers are using the generic MII stuff which supports
carrier detection. In my experience all the common drivers now support
it. It is important because the IPv6 stuff has recently started using
running transitions as triggers to do dad and radv
actions:

 eth0: link down
 eth0: link up, 10Mbps, half-duplex, lpa 0x0000
 ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
 eth0: no IPv6 routers present

Good dhcp clients should also trigger actions on running changes.

e1000 seems to call netif_carrier_on/off at reasonable points so at
least the driver is trying to detect carrier ;>

Since the main use of carrier detect is currently things like IPv6, it
should follow the logical state of the ipoib device - ie the port is
active, the mcast group is ready, etc. That way no radv or dad packets
are sent into oblivion.

Jason



More information about the general mailing list