Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Nov 2009 20:34:41 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r199945 - in stable/7/sys: dev/re pci
Message-ID:  <200911292034.nATKYfOE008396@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911292034.nATKYfOE008396>