Hi there, On linux-2.6.21-rc2 or later, IPv6 link-local address is not assigned to some kind of interfaces during system start-up. (I found this issue occures with e100, e1000 and tg3.)
This issue comes from the change that inet6_dev is allocated when NETDEV_REGISTER event occurs. The allocation code is at ipv6_add_dev() in net/ipv6/addrinfo.c. At the code, IF_READY bit would be set when the link is ready. The link readyness is verified by netif_caeeir_ok(). However as the drivers don't call netif_carrier_off() prior to calling register_netdev(), netif_caeeir_ok() returns true in spite of the actual link state. Here's a work around patch. This make IF_READY unset when NETDEV_UP event occurs and the link is not ready. This patch may not be an fundamental fix. But I don't have any other idea now. Signed-off-by: Mitsuru Chinen <[EMAIL PROTECTED]> --- net/ipv6/addrconf.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index e16f1bb..1593cd1 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2196,6 +2196,7 @@ static int addrconf_notify(struct notifi "ADDRCONF(NETDEV_UP): %s: " "link is not ready\n", dev->name); + idev->if_flags &= ~IF_READY; break; } -- 1.4.3.4 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html