I have had better luck with the following fcc_enet.c patch (against the ELDK 2.4.4 kernel):
~~~~~~~~~~~~~ 1.) In static void mii_display_status(struct net_device *dev): if (!fep->link && !fep->old_link) { /* Link is still down - don't print anything */ return; } printk("%s: status: ", dev->name); if (!fep->link) { + netif_carrier_off(dev); printk("link down"); } else { + netif_carrier_on(dev); printk("link up"); switch(s & PHY_STAT_SPMASK) { ~~~~~~~~~~~~~ 2.) In fcc_enet_open(struct net_device *dev): mii_do_cmd(dev, fep->phy->startup); #ifdef CONFIG_PM826 /* Read the autonegotiation results */ mii_do_cmd(dev, fep->phy->ack_int); mii_do_cmd(dev, phy_cmd_relink); #endif /* CONFIG_PM826 */ + if (fep->link) { + netif_carrier_on(dev); + } else { + netif_carrier_off(dev); + } netif_start_queue(dev); return 0; /* Success */ } return -ENODEV; /* No PHY we understand */ #else fep->link = 1; ~~~~~~~~~~~~~ This communicates the link status to the kernel TCP/IP stack. Obviously, this assumes that MDIO is working! -- Johns Daniel, Advent Networks, Inc. -----Original Message----- From: linuxppc-embedded-bounces at ozlabs.org on behalf of Ho Lee Sent: Wed 1/12/2005 6:14 PM To: 'linuxppc' Cc: 'Steffen Rumler' Subject: RE: Kernel boot hangs by parallel flood pings -----Original Message----- From: linuxppc-embedded-bounces at ozlabs.org on behalf of Ho Lee Sent: Wed 1/12/2005 6:14 PM To: 'linuxppc' Cc: 'Steffen Rumler' Subject: RE: Kernel boot hangs by parallel flood pings I met the same problem in CPM driver, and there could be many solutions. I think the right place to fix is the fec driver. The fec driver registers interrupt handler during the initialization not when the device is opened, so it may receive packets even the device is not up and running (also before the network subsystem is initialized) My fix was to ignore the received packets if the driver is not opened. --- linux-2.4.26.orig/arch/ppc/8xx_io/fec.c +++ linux-2.4.26/arch/ppc/8xx_io/fec.c @@ -587,6 +587,9 @@ goto rx_processing_done; } + if (!netif_running(dev)) + goto rx_processing_done; + /* Process the incoming frame. */ fep->stats.rx_packets++; Regards, Ho -----Original Message----- From: [EMAIL PROTECTED] [mailto:linuxppc-embedded-bounces at ozlabs.org] On Behalf Of Rune Torgersen Sent: Wednesday, January 12, 2005 7:32 AM To: Steffen Rumler; linuxppc Subject: RE: Kernel boot hangs by parallel flood pings --- Kernel.old/net/ipv4/ip_output.c Thu Jun 5 09:00:39 2003 +++ Kernel/net/ipv4/ip_output.c Thu Jun 5 09:00:28 2003 @@ -1087,11 +1087,11 @@ void __init ip_init(void) { - dev_add_pack(&ip_packet_type); - ip_rt_init(); inet_initpeers(); + dev_add_pack(&ip_packet_type); + #ifdef CONFIG_IP_MULTICAST proc_net_create("igmp", 0, ip_mc_procinfo); #endif >> _______________________________________________ Linuxppc-embedded mailing list Linuxppc-embedded at ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-embedded