svn commit: r311487 - stable/11/sys/dev/sfxge
Andrew Rybchenko
arybchik at FreeBSD.org
Fri Jan 6 07:20:21 UTC 2017
Author: arybchik
Date: Fri Jan 6 07:20:20 2017
New Revision: 311487
URL: https://svnweb.freebsd.org/changeset/base/311487
Log:
MFC r310818
sfxge(4): support per-command MCDI timeout
Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Modified:
stable/11/sys/dev/sfxge/sfxge_mcdi.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/dev/sfxge/sfxge_mcdi.c
==============================================================================
--- stable/11/sys/dev/sfxge/sfxge_mcdi.c Fri Jan 6 07:19:03 2017 (r311486)
+++ stable/11/sys/dev/sfxge/sfxge_mcdi.c Fri Jan 6 07:20:20 2017 (r311487)
@@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$");
#define SFXGE_MCDI_POLL_INTERVAL_MIN 10 /* 10us in 1us units */
#define SFXGE_MCDI_POLL_INTERVAL_MAX 100000 /* 100ms in 1us units */
-#define SFXGE_MCDI_WATCHDOG_INTERVAL 10000000 /* 10s in 1us units */
static void
sfxge_mcdi_timeout(struct sfxge_softc *sc)
@@ -70,7 +69,7 @@ sfxge_mcdi_timeout(struct sfxge_softc *s
}
static void
-sfxge_mcdi_poll(struct sfxge_softc *sc)
+sfxge_mcdi_poll(struct sfxge_softc *sc, uint32_t timeout_us)
{
efx_nic_t *enp;
clock_t delay_total;
@@ -87,7 +86,7 @@ sfxge_mcdi_poll(struct sfxge_softc *sc)
return;
}
- if (delay_total > SFXGE_MCDI_WATCHDOG_INTERVAL) {
+ if (delay_total > timeout_us) {
aborted = efx_mcdi_request_abort(enp);
KASSERT(aborted, ("abort failed"));
sfxge_mcdi_timeout(sc);
@@ -115,6 +114,7 @@ sfxge_mcdi_execute(void *arg, efx_mcdi_r
{
struct sfxge_softc *sc;
struct sfxge_mcdi *mcdi;
+ uint32_t timeout_us = 0;
sc = (struct sfxge_softc *)arg;
mcdi = &sc->mcdi;
@@ -125,8 +125,11 @@ sfxge_mcdi_execute(void *arg, efx_mcdi_r
("MCDI not initialized"));
/* Issue request and poll for completion. */
+ efx_mcdi_get_timeout(sc->enp, emrp, &timeout_us);
+ KASSERT(timeout_us > 0, ("MCDI timeout not initialized"));
+
efx_mcdi_request_start(sc->enp, emrp, B_FALSE);
- sfxge_mcdi_poll(sc);
+ sfxge_mcdi_poll(sc, timeout_us);
SFXGE_MCDI_UNLOCK(mcdi);
}
More information about the svn-src-all
mailing list