svn commit: r310818 - head/sys/dev/sfxge
Andrew Rybchenko
arybchik at FreeBSD.org
Fri Dec 30 12:10:17 UTC 2016
Author: arybchik
Date: Fri Dec 30 12:10:15 2016
New Revision: 310818
URL: https://svnweb.freebsd.org/changeset/base/310818
Log:
sfxge(4): support per-command MCDI timeout
Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
MFC after: 1 week
Modified:
head/sys/dev/sfxge/sfxge_mcdi.c
Modified: head/sys/dev/sfxge/sfxge_mcdi.c
==============================================================================
--- head/sys/dev/sfxge/sfxge_mcdi.c Fri Dec 30 12:06:55 2016 (r310817)
+++ head/sys/dev/sfxge/sfxge_mcdi.c Fri Dec 30 12:10:15 2016 (r310818)
@@ -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