On 10/11/13 03:18, Jonathan Gray wrote:
> On Fri, Oct 11, 2013 at 02:39:30AM -0400, RD Thrush wrote:
>> On 10/11/13 01:05, Jonathan Gray wrote:
>>> On Thu, Oct 10, 2013 at 05:48:43PM -0400, RD Thrush wrote:
>>>> I noticed some anomalies in the dmesg on this new system.
>>>>
>>>> 1. error: [drm:pid0:i915_write32] *ERROR* Unknown unclaimed register
>>>> before writing to 100000
>>>>
>>>> 2. dhclient doesn't work with the onboard nic (possibly since the lladdr
>>>> is 0:0:0:0:0:0.
>>>
>>> There is no support for Realtek 8168G/8111G devices, here is a diff which
>>> apparently lacks some critical part required to make it work
>>> as it didn't work for the last person who tried it.
>>>
>>> Index: re.c
>>> ===================================================================
>>> RCS file: /cvs/src/sys/dev/ic/re.c,v
>>> retrieving revision 1.144
>>> diff -u -p -r1.144 re.c
>>> --- re.c 5 Oct 2013 22:59:57 -0000 1.144
>>> +++ re.c 9 Oct 2013 01:21:41 -0000
>>> @@ -223,6 +223,8 @@ static const struct re_revision {
>>> { RL_HWREV_8101, "RTL8101" },
>>> { RL_HWREV_8101E, "RTL8101E" },
>>> { RL_HWREV_8102E, "RTL8102E" },
>>> + { RL_HWREV_8106E, "RTL8106E" },
>>> + { RL_HWREV_8106E_SPIN1, "RTL8106E" },
>>> { RL_HWREV_8401E, "RTL8401E" },
>>> { RL_HWREV_8402, "RTL8402" },
>>> { RL_HWREV_8411, "RTL8411" },
>>> @@ -238,6 +240,10 @@ static const struct re_revision {
>>> { RL_HWREV_8168C_SPIN2, "RTL8168C/8111C" },
>>> { RL_HWREV_8168CP, "RTL8168CP/8111CP" },
>>> { RL_HWREV_8168F, "RTL8168F/8111F" },
>>> + { RL_HWREV_8168G, "RTL8168G/8111G" },
>>> + { RL_HWREV_8168G_SPIN1, "RTL8168G/8111G" },
>>> + { RL_HWREV_8168G_SPIN2, "RTL8168G/8111G" },
>>> + { RL_HWREV_8168G_SPIN4, "RTL8168G/8111G" },
>>> { RL_HWREV_8105E, "RTL8105E" },
>>> { RL_HWREV_8105E_SPIN1, "RTL8105E" },
>>> { RL_HWREV_8168D, "RTL8168D/8111D" },
>>> @@ -846,6 +852,8 @@ re_attach(struct rl_softc *sc, const cha
>>> case RL_HWREV_8402:
>>> case RL_HWREV_8105E:
>>> case RL_HWREV_8105E_SPIN1:
>>> + case RL_HWREV_8106E:
>>> + case RL_HWREV_8106E_SPIN1:
>>> sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
>>> RL_FLAG_PHYWAKE_PM | RL_FLAG_PAR | RL_FLAG_DESCV2 |
>>> RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD |
>>> @@ -892,6 +900,15 @@ re_attach(struct rl_softc *sc, const cha
>>> RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
>>> RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
>>> break;
>>> + case RL_HWREV_8168G:
>>> + case RL_HWREV_8168G_SPIN1:
>>> + case RL_HWREV_8168G_SPIN2:
>>> + case RL_HWREV_8168G_SPIN4:
>>> + sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
>>> + RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
>>> + RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO |
>>> + RL_FLAG_EARLYOFF;
>>> + break;
>>> case RL_HWREV_8169_8110SB:
>>> case RL_HWREV_8169_8110SBL:
>>> case RL_HWREV_8169_8110SCd:
>>> @@ -1974,6 +1991,7 @@ re_init(struct ifnet *ifp)
>>> {
>>> struct rl_softc *sc = ifp->if_softc;
>>> u_int16_t cfg;
>>> + uint32_t rxcfg;
>>> int s;
>>> union {
>>> u_int32_t align_dummy;
>>> @@ -2058,7 +2076,10 @@ re_init(struct ifnet *ifp)
>>>
>>> CSR_WRITE_1(sc, RL_EARLY_TX_THRESH, 16);
>>>
>>> - CSR_WRITE_4(sc, RL_RXCFG, RL_RXCFG_CONFIG);
>>> + rxcfg = RL_RXCFG_CONFIG;
>>> + if (sc->rl_flags & RL_FLAG_EARLYOFF)
>>> + rxcfg |= RL_RXCFG_EARLYOFF;
>>> + CSR_WRITE_4(sc, RL_RXCFG, rxcfg);
>>>
>>> /* Program promiscuous mode and multicast filters. */
>>> re_iff(sc);
>>> Index: rtl81x9reg.h
>>> ===================================================================
>>> RCS file: /cvs/src/sys/dev/ic/rtl81x9reg.h,v
>>> retrieving revision 1.76
>>> diff -u -p -r1.76 rtl81x9reg.h
>>> --- rtl81x9reg.h 17 Mar 2013 20:47:23 -0000 1.76
>>> +++ rtl81x9reg.h 3 Aug 2013 13:54:57 -0000
>>> @@ -186,8 +186,14 @@
>>> #define RL_HWREV_8105E 0x40800000
>>> #define RL_HWREV_8105E_SPIN1 0x40C00000
>>> #define RL_HWREV_8402 0x44000000
>>> +#define RL_HWREV_8106E 0x44800000
>>> +#define RL_HWREV_8106E_SPIN1 0x44900000
>>> #define RL_HWREV_8168F 0x48000000
>>> #define RL_HWREV_8411 0x48800000
>>> +#define RL_HWREV_8168G 0x4c000000
>>> +#define RL_HWREV_8168G_SPIN1 0x4c100000
>>> +#define RL_HWREV_8168G_SPIN2 0x50900000
>>> +#define RL_HWREV_8168G_SPIN4 0x5c800000
>>> #define RL_HWREV_8139 0x60000000
>>> #define RL_HWREV_8139A 0x70000000
>>> #define RL_HWREV_8139AG 0x70800000
>>> @@ -277,6 +283,7 @@
>>> #define RL_RXCFG_RX_RUNT 0x00000010
>>> #define RL_RXCFG_RX_ERRPKT 0x00000020
>>> #define RL_RXCFG_WRAP 0x00000080
>>> +#define RL_RXCFG_EARLYOFF 0x00000100
>>> #define RL_RXCFG_MAXDMA 0x00000700
>>> #define RL_RXCFG_BURSZ 0x00001800
>>> #define RL_RXCFG_FIFOTHRESH 0x0000E000
>>> @@ -847,6 +854,7 @@ struct rl_softc {
>>> #define RL_FLAG_AUTOPAD 0x00004000
>>> #define RL_FLAG_LINK 0x00008000
>>> #define RL_FLAG_PHYWAKE_PM 0x00010000
>>> +#define RL_FLAG_EARLYOFF 0x00020000
>>>
>>> u_int16_t rl_intrs;
>>> u_int16_t rl_tx_ack;
>>>
>>
>> Thanks. That seemed to fix my re0 in brief tests. More later after a
>> night's
>> sleep. Is there any particular issue I should watch for based on your other
>> tester's report?
>
> The other tester apparently couldn't transmit packets or
> something along those lines. But perhaps that was a problem
> related to the powersaving mode of a specific PHY.
>
> So if the above diff works for you I'll commit it.
Yes, it works for me. I've run multiple tcpbench tests with this nic and other
openbsd -current lan hosts and am seeing expected results.
Thanks.