I apologize if you received this mail many times.
Jens-san > This patch modifies the patch submitted by Kou Ishizaki to make it work on the > blade (http://marc.theaimsgroup.com/?l=linux-netdev&m=116593424505539&w=2). > Unfortunately I dont have access to a Celleb so I cannot test it there. Thanks for arranging our patch to work on Cell Blade. This patch partially works on celleb but remains following several problems. 1. It doesn't recover once an ethernet cable which is connected to a spider_net card is unpluged. 2. It doesn't work when the spider_net card is connected to a 100Mbps ethernet switch. To solve these problems, we need to restore some codes you removed from your patch. (1) >- if (card->aneg_count > 10) { >- /* timeout */ >- card->aneg_count = 0; >- is1000 = !is1000; >- goto re_setup; >- if (phy->speed == 1000 && !is1000) { >- is1000 = 1; >- goto re_setup; >- } else if(phy->speed != 1000 && is1000) { >- is1000 = 0; >- goto re_setup; >- } We need to use different auto-neg initial settings between for 10/100Mbps ethernet switches and for Gbps ethernet switches. Driver don't know which type of network switch is connected to network card, so we try both settings alternately in auto negtiation sequences by using a variable "is1000". Furthermore, we have a problem that poll_link() may succeed even when the auto-neg initial setting is for different network switch type, and the network card does not work on this case. We retry auto-neg with the another initial setting on this case. #We are commented that "is1000" should be in spider_net_card. #We fixed it in another patch. Please refer the following. #http://ozlabs.org/pipermail/linuxppc-dev/2007-January/030203.html But we don't think this is the best solution, and we are still developing our spidernet driver. If you have a good alternative idea, please tell us. (2) >- spider_net_write_reg(card, SPIDER_NET_GMACST, >- spider_net_read_reg(card, SPIDER_NET_GMACST)); >- spider_net_write_reg(card, SPIDER_NET_GMACINTEN, 0x4); These codes are enabling LINK status interrupt which is disabled at the beginning of auto-neg. Without this operation, auto negotiation works only when a connection detected for the first time, and auto negotiation will not work when an ethernet cable is unpluged or pluged. (3) >- mii_phy_probe(phy, phy->mii_id); It seems that PHY reset is necessary before auto negotiation, after a link once went down. We can't call directly reset routine from driver, so we call mii_phy_probe(). We are still developping the patch as we noted, and we are considering to call mii_phy_probe() from spider_net_setup_aneg(), or to call reset_one_mii_phy() from bcm54xx_setup_aneg(). We think these (1)-(3) are necessary, but we are afraid that you removed them by a reason that they causes some trouble in Cell Blade. If so please tell us. Best regards, Kou Ishizaki - 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