[U-Boot-Users] multicast tftp: RFC2090

David Updegraff dave at cray.com
Tue May 1 18:41:01 CEST 2007


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 <dave at cray.com> 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





More information about the U-Boot mailing list