From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Updegraff Date: Tue, 01 May 2007 11:41:01 -0500 Subject: [U-Boot-Users] multicast tftp: RFC2090 In-Reply-To: <2acbd3e40705010916v4d9ae9e3pa6565b8078f3059e@mail.gmail.com> References: <1177432072.3904.129.camel@saruman.qstreams.net> <2acbd3e40705010916v4d9ae9e3pa6565b8078f3059e@mail.gmail.com> Message-ID: <46376D9D.9050104@cray.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Andy whoops! I see your point now! the parse_sr shouldn't be taking the stab at determining lnk.etc. if the curphy != generic I guess. > On 5/1/07, David Updegraff wrote: >> Here is a first pass; not yet request for merge. >> >> Only have been able to test with 8343 TSEC and an old SC520-based >> rtl8139 so far, and with only two concurrent downloads; against atftpd >> server. Re-cycling the existing ext2 bitmap functions to do housekeeping. >> >> In about a month I should have access to enough hardware to test 20+ >> concurrent tftpboots. >> >> Suggestions & comments appreciated. > > I have to NACK this portion: > > @@ -378,6 +378,28 @@ uint mii_parse_sr(uint mii_reg, struct tsec_private > * priv) > priv->link = 1; > } > > + /* take a stab at 10/100 and Duplex info too; from linux mii.c */ > + mii_reg = (read_phy_reg(priv, PHY_ANAR) & read_phy_reg(priv, > PHY_ANLPAR)); > + if ( mii_reg & PHY_ANLPAR_TXFD ) { > + priv->duplexity = 1; > + priv->speed = 100; > + } > + else if ( mii_reg & PHY_ANLPAR_TX ) { > + priv->duplexity = 0; > + priv->speed = 100; > + } > + else if ( mii_reg & PHY_ANLPAR_TX ) { > + priv->duplexity = 0; > + priv->speed = 100; > + } > + else if ( mii_reg & PHY_ANLPAR_10FD ) { > + priv->duplexity = 1; > + priv->speed = 10; > + } else { > + priv->duplexity = 0; > + priv->speed = 10; > + } > + > return 0; > } > > @@ -1056,6 +1078,26 @@ struct phy_info phy_info_VSC8244 = { > {miim_end,} > }, > }; > +/* a generic flavor. */ > +struct phy_info phy_info_generic = { > + 0, > + "Unknown/Generic PHY", > + 32, > + (struct phy_cmd[]) { /* config */ > + {PHY_BMCR, PHY_BMCR_RESET, NULL}, > + {PHY_BMCR, PHY_BMCR_AUTON|PHY_BMCR_RST_NEG, NULL}, > + {miim_end,} > + }, > + (struct phy_cmd[]) { /* startup */ > + {PHY_BMSR, miim_read, NULL}, > + {PHY_BMSR, miim_read, &mii_parse_sr}, > + {miim_end,} > + }, > + (struct phy_cmd[]) { /* shutdown */ > + {miim_end,} > + } > +}; > + > > struct phy_info phy_info_dm9161 = { > 0x0181b88, > @@ -1203,6 +1245,7 @@ struct phy_info *phy_info[] = { > &phy_info_lxt971, > &phy_info_VSC8244, > &phy_info_dp83865, > + &phy_info_generic, > NULL > }; > > > Sadly, I've already applied it to my tree, but I've just determined > that it breaks gigabit links, even on boards with known PHYs. > > I'm going to fix that, but these two hunks need to be in a separate > patch, anyway. I will post the updated version. > > Andy