svn commit: r199945 - in stable/7/sys: dev/re pci
Pyun YongHyeon
yongari at FreeBSD.org
Sun Nov 29 20:34:41 UTC 2009
Author: yongari
Date: Sun Nov 29 20:34:41 2009
New Revision: 199945
URL: http://svn.freebsd.org/changeset/base/199945
Log:
MFC r191301:
For RTL8139C+ controllers, have controller handle padding short
checksum offload frames. Software workaround used for broken
controllers(RTL8169, RTL8168, RTL8168B) seem to cause watchdog
timeouts on RTL8139C+.
Introduce a new flag RL_FLAG_AUTOPAD to mark automatic padding
feature of controller and set it for RTL8139C+ and controllers that
use new descriptor format. This fixes watchdog timeouts seen on
RTL8139C+.
Reported by: Dimitri Rodis < DimitriR <> integritasystems dot com >
Tested by: Dimitri Rodis < DimitriR <> integritasystems dot com >
Modified:
stable/7/sys/dev/re/if_re.c
stable/7/sys/pci/if_rlreg.h
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/dev/re/if_re.c
==============================================================================
--- stable/7/sys/dev/re/if_re.c Sun Nov 29 20:31:09 2009 (r199944)
+++ stable/7/sys/dev/re/if_re.c Sun Nov 29 20:34:41 2009 (r199945)
@@ -1253,7 +1253,8 @@ re_attach(device_t dev)
switch (hw_rev->rl_rev) {
case RL_HWREV_8139CPLUS:
- sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_FASTETHER;
+ sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_FASTETHER |
+ RL_FLAG_AUTOPAD;
break;
case RL_HWREV_8100E:
case RL_HWREV_8101E:
@@ -1265,7 +1266,7 @@ re_attach(device_t dev)
case RL_HWREV_8102EL_SPIN1:
sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_PHYWAKE |
RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
- RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP;
+ RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD;
break;
case RL_HWREV_8168_SPIN1:
case RL_HWREV_8168_SPIN2:
@@ -1285,7 +1286,8 @@ re_attach(device_t dev)
case RL_HWREV_8168D:
case RL_HWREV_8168DP:
sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
- RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP;
+ RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP |
+ RL_FLAG_AUTOPAD;
/*
* These controllers support jumbo frame but it seems
* that enabling it requires touching additional magic
@@ -2257,7 +2259,7 @@ re_encap(struct rl_softc *sc, struct mbu
* offload is enabled, we always manually pad short frames out
* to the minimum ethernet frame size.
*/
- if ((sc->rl_flags & RL_FLAG_DESCV2) == 0 &&
+ if ((sc->rl_flags & RL_FLAG_AUTOPAD) == 0 &&
(*m_head)->m_pkthdr.len < RL_IP4CSUMTX_PADLEN &&
((*m_head)->m_pkthdr.csum_flags & CSUM_IP) != 0) {
padlen = RL_MIN_FRAMELEN - (*m_head)->m_pkthdr.len;
Modified: stable/7/sys/pci/if_rlreg.h
==============================================================================
--- stable/7/sys/pci/if_rlreg.h Sun Nov 29 20:31:09 2009 (r199944)
+++ stable/7/sys/pci/if_rlreg.h Sun Nov 29 20:34:41 2009 (r199945)
@@ -855,6 +855,7 @@ struct rl_softc {
int rl_txstart;
uint32_t rl_flags;
#define RL_FLAG_MSI 0x0001
+#define RL_FLAG_AUTOPAD 0x0002
#define RL_FLAG_PHYWAKE 0x0008
#define RL_FLAG_NOJUMBO 0x0010
#define RL_FLAG_PAR 0x0020
More information about the svn-src-stable
mailing list