On Wednesday 16 June 2010 06:42:55 Stuart Henderson wrote:
> On 2010/06/16 03:15, Stuart Henderson wrote:
> > The following reply was made to PR system/6402; it has been noted by
> > GNATS.
> >
> > From: Stuart Henderson <s...@spacehopper.org>
> > To: Joe Gidi <j...@entropicblur.com>
> > Cc: gn...@openbsd.org
> > Subject: Re: system/6402: Realtek 8168 NIC not working on Asus M4A88TD-V
> > motherboard Date: Wed, 16 Jun 2010 09:55:29 +0100
> >
> >  >  Realtek 8168 attaches correctly as re0 but is nonfunctional. MAC
> >  > address comes up as all zeros. Asus literature identifies this NIC as
> >  > an 8111E, but pcidump identifies it as an 8168. Looks like FreeBSD's
> >  > version of this driver recently added support for this model:
> >  > http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/re/if_re.c
> >
> >  you could give this a try. we're out of space for new RL_FLAGs but
> >  RL_FLAG_PCI_64BIT isn't doing anything useful so I've reused that.
>
> oh, I am obviously blind this morning, as jsg points out,
> this is a u_int32_t.
>
> tested with qemu (but this doesn't change anything for ICs
> other than the new 8111E/8168E anyway).
>
> Index: re.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/re.c,v
> retrieving revision 1.119
> diff -u -p -r1.119 re.c
> --- re.c      19 May 2010 15:27:35 -0000      1.119
> +++ re.c      16 Jun 2010 10:41:34 -0000
> @@ -233,6 +233,7 @@ static const struct re_revision {
>       { RL_HWREV_8168CP,      "RTL8168CP/8111CP" },
>       { RL_HWREV_8168D,       "RTL8168D/8111D" },
>       { RL_HWREV_8168DP,      "RTL8168DP/8111DP" },
> +     { RL_HWREV_8168E,       "RTL8168E/8111E" },
>       { RL_HWREV_8169,        "RTL8169" },
>       { RL_HWREV_8169_8110SB, "RTL8169/8110SB" },
>       { RL_HWREV_8169_8110SBL, "RTL8169SBL" },
> @@ -856,6 +857,10 @@ re_attach(struct rl_softc *sc, const cha
>                */
>               sc->rl_flags |= RL_FLAG_NOJUMBO;
>               break;
> +     case RL_HWREV_8168E:
> +             sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
> +                 RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
> +                 RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
>       case RL_HWREV_8169_8110SB:
>       case RL_HWREV_8169_8110SBL:
>       case RL_HWREV_8169_8110SCd:
> @@ -1113,6 +1118,8 @@ re_attach(struct rl_softc *sc, const cha
>       timeout_set(&sc->timer_handle, re_tick, sc);
>
>       /* Take PHY out of power down mode. */
> +     if (sc->rl_flags & RL_FLAG_PHYWAKE_PM)
> +             CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) | 0x80);
>       if (sc->rl_flags & RL_FLAG_PHYWAKE) {
>               re_gmii_writereg((struct device *)sc, 1, 0x1f, 0);
>               re_gmii_writereg((struct device *)sc, 1, 0x0e, 0);
> Index: rtl81x9reg.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/rtl81x9reg.h,v
> retrieving revision 1.67
> diff -u -p -r1.67 rtl81x9reg.h
> --- rtl81x9reg.h      10 Aug 2009 20:29:54 -0000      1.67
> +++ rtl81x9reg.h      16 Jun 2010 10:41:34 -0000
> @@ -138,6 +138,7 @@
>  #define RL_GMEDIASTAT                0x006C  /* 8 bits */
>  #define RL_MACDBG            0x006D  /* 8 bits */
>  #define RL_GPIO                      0x006E  /* 8 bits */
> +#define RL_PMCH                      0x006F  /* 8 bits */
>  #define RL_LDPS                      0x0082  /* Link Down Power Saving */
>  #define RL_MAXRXPKTLEN               0x00DA  /* 16 bits, chip multiplies by 
> 8 */
>  #define RL_IM                        0x00E2
> @@ -168,6 +169,7 @@
>  #define RL_HWREV_8103E               0x24C00000
>  #define RL_HWREV_8168D               0x28000000
>  #define RL_HWREV_8168DP              0x28800000
> +#define RL_HWREV_8168E               0x2C000000
>  #define RL_HWREV_8168_SPIN1  0x30000000
>  #define RL_HWREV_8100E_SPIN1 0x30800000
>  #define RL_HWREV_8101E               0x34000000
> @@ -821,22 +823,23 @@ struct rl_softc {
>
>       int                     rl_txstart;
>       u_int32_t               rl_flags;
> -#define      RL_FLAG_MSI             0x0001
> -#define      RL_FLAG_PCI64           0x0002
> -#define      RL_FLAG_PCIE            0x0004
> -#define      RL_FLAG_INVMAR          0x0008
> -#define      RL_FLAG_PHYWAKE         0x0010
> -#define      RL_FLAG_NOJUMBO         0x0020
> -#define      RL_FLAG_PAR             0x0040
> -#define      RL_FLAG_DESCV2          0x0080
> -#define      RL_FLAG_MACSTAT         0x0100
> -#define      RL_FLAG_HWIM            0x0200
> -#define      RL_FLAG_TIMERINTR       0x0400
> -#define      RL_FLAG_MACLDPS         0x0800
> -#define      RL_FLAG_CMDSTOP         0x1000
> -#define      RL_FLAG_MACSLEEP        0x2000
> -#define      RL_FLAG_AUTOPAD         0x4000
> -#define      RL_FLAG_LINK            0x8000
> +#define      RL_FLAG_MSI             0x00000001
> +#define      RL_FLAG_PCI64           0x00000002
> +#define      RL_FLAG_PCIE            0x00000004
> +#define      RL_FLAG_INVMAR          0x00000008
> +#define      RL_FLAG_PHYWAKE         0x00000010
> +#define      RL_FLAG_NOJUMBO         0x00000020
> +#define      RL_FLAG_PAR             0x00000040
> +#define      RL_FLAG_DESCV2          0x00000080
> +#define      RL_FLAG_MACSTAT         0x00000100
> +#define      RL_FLAG_HWIM            0x00000200
> +#define      RL_FLAG_TIMERINTR       0x00000400
> +#define      RL_FLAG_MACLDPS         0x00000800
> +#define      RL_FLAG_CMDSTOP         0x00001000
> +#define      RL_FLAG_MACSLEEP        0x00002000
> +#define      RL_FLAG_AUTOPAD         0x00004000
> +#define      RL_FLAG_LINK            0x00008000
> +#define      RL_FLAG_PHYWAKE_PM      0x00010000
>
>       u_int16_t               rl_intrs;
>       u_int16_t               rl_tx_ack;

Use these flags and there is a missing break..

+               sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
+                   RL_FLAG_PHYWAKE_PM | RL_FLAG_PAR | RL_FLAG_DESCV2 |
+                   RL_FLAG_MACSTAT | FL_FLAG_HWIM | RL_FLAG_CMDSTOP |
+                   RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

Reply via email to