Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Feb 2009 04:59:13 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r188381 - head/sys/dev/re
Message-ID:  <200902090459.n194xDa3045928@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: yongari
Date: Mon Feb  9 04:59:13 2009
New Revision: 188381
URL: http://svn.freebsd.org/changeset/base/188381

Log:
  Reclaim transmitted frames in re_tick(). This is for PCIe
  controllers that lose Tx completion interrupts under certain
  conditions. With this change it's safe to use MSI on PCIe
  controllers so enable MSI on these controllers.

Modified:
  head/sys/dev/re/if_re.c

Modified: head/sys/dev/re/if_re.c
==============================================================================
--- head/sys/dev/re/if_re.c	Mon Feb  9 04:39:16 2009	(r188380)
+++ head/sys/dev/re/if_re.c	Mon Feb  9 04:59:13 2009	(r188381)
@@ -156,7 +156,7 @@ MODULE_DEPEND(re, miibus, 1, 1, 1);
 #include "miibus_if.h"
 
 /* Tunables. */
-static int msi_disable = 1;
+static int msi_disable = 0;
 TUNABLE_INT("hw.re.msi_disable", &msi_disable);
 
 #define RE_CSUM_FEATURES    (CSUM_IP | CSUM_TCP | CSUM_UDP)
@@ -2064,6 +2064,13 @@ re_tick(void *xsc)
 	mii_tick(mii);
 	if ((sc->rl_flags & RL_FLAG_LINK) == 0)
 		re_miibus_statchg(sc->rl_dev);
+	/*
+	 * Reclaim transmitted frames here. Technically it is not
+	 * necessary to do here but it ensures periodic reclamation
+	 * regardless of Tx completion interrupt which seems to be
+	 * lost on PCIe based controllers under certain situations. 
+	 */
+	re_txeof(sc);
 	re_watchdog(sc);
 	callout_reset(&sc->rl_stat_callout, hz, re_tick, sc);
 }



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