diff --git a/daemon/fw/asf-measurements.hpp b/daemon/fw/asf-measurements.hpp
index 02f4553..aede00b 100644
--- a/daemon/fw/asf-measurements.hpp
+++ b/daemon/fw/asf-measurements.hpp
@@ -91,15 +91,15 @@
   }
 
   size_t
-  getNSilentTimeouts() const
+  getNTimeouts() const
   {
-    return m_nSilentTimeouts;
+    return m_nTimeouts;
   }
 
   void
-  setNSilentTimeouts(size_t nSilentTimeouts)
+  setNTimeouts(size_t nTimeouts)
   {
-    m_nSilentTimeouts = nSilentTimeouts;
+    m_nTimeouts = nTimeouts;
   }
 
 public:
@@ -110,7 +110,7 @@
   ndn::util::RttEstimator m_rttEstimator;
   time::nanoseconds m_lastRtt = RTT_NO_MEASUREMENT;
   Name m_lastInterestName;
-  size_t m_nSilentTimeouts = 0;
+  size_t m_nTimeouts = 0;
 
   // Timeout associated with measurement
   scheduler::ScopedEventId m_measurementExpiration;
diff --git a/daemon/fw/asf-strategy.cpp b/daemon/fw/asf-strategy.cpp
index f337a27..df38099 100644
--- a/daemon/fw/asf-strategy.cpp
+++ b/daemon/fw/asf-strategy.cpp
@@ -58,7 +58,7 @@
   this->setInstanceName(makeInstanceName(name, getStrategyName()));
 
   NFD_LOG_DEBUG("probing-interval=" << m_probing.getProbingInterval()
-                << " n-silent-timeouts=" << m_nMaxSilentTimeouts);
+                << " max-timeouts=" << m_nMaxTimeouts);
 }
 
 const Name&
@@ -97,11 +97,13 @@
     if (f == "probing-interval") {
       m_probing.setProbingInterval(getParamValue(f, s));
     }
-    else if (f == "n-silent-timeouts") {
-      m_nMaxSilentTimeouts = getParamValue(f, s);
+    else if (f == "max-timeouts") {
+      m_nMaxTimeouts = getParamValue(f, s);
+      if (m_nMaxTimeouts <= 0)
+        NDN_THROW(std::invalid_argument("max-timeouts should be greater than 0"));
     }
     else {
-      NDN_THROW(std::invalid_argument("Parameter should be probing-interval or n-silent-timeouts"));
+      NDN_THROW(std::invalid_argument("Parameter should be probing-interval or max-timeouts"));
     }
   }
 }
@@ -341,10 +343,10 @@
   }
 
   auto& faceInfo = *fiPtr;
-  size_t nTimeouts = faceInfo.getNSilentTimeouts() + 1;
-  faceInfo.setNSilentTimeouts(nTimeouts);
+  size_t nTimeouts = faceInfo.getNTimeouts() + 1;
+  faceInfo.setNTimeouts(nTimeouts);
 
-  if (nTimeouts <= m_nMaxSilentTimeouts && !isNack) {
+  if (nTimeouts < m_nMaxTimeouts && !isNack) {
     NFD_LOG_TRACE(interestName << " face=" << faceId << " timeout-count=" << nTimeouts << " ignoring");
     // Extend lifetime for measurements associated with Face
     namespaceInfo->extendFaceInfoLifetime(faceInfo, faceId);
diff --git a/daemon/fw/asf-strategy.hpp b/daemon/fw/asf-strategy.hpp
index 2e0ba24..af3e4b5 100644
--- a/daemon/fw/asf-strategy.hpp
+++ b/daemon/fw/asf-strategy.hpp
@@ -91,7 +91,7 @@
   AsfMeasurements m_measurements;
   ProbingModule m_probing;
   RetxSuppressionExponential m_retxSuppression;
-  size_t m_nMaxSilentTimeouts = 3;
+  size_t m_nMaxTimeouts = 3;
 
   static const time::milliseconds RETX_SUPPRESSION_INITIAL;
   static const time::milliseconds RETX_SUPPRESSION_MAX;
diff --git a/docs/manpages/nfd-asf-strategy.rst b/docs/manpages/nfd-asf-strategy.rst
index 7d84607..d168b2a 100644
--- a/docs/manpages/nfd-asf-strategy.rst
+++ b/docs/manpages/nfd-asf-strategy.rst
@@ -1,46 +1,54 @@
 nfd-asf-strategy
 ================
 
-SYNOPSIS
+Synopsis
 --------
-| nfdc strategy set prefix <PREFIX> strategy /localhost/nfd/strategy/asf[/v=4][/probing-interval~<PROBING-INTERVAL>][/n-silent-timeouts~<N-SILENT-TIMEOUTS>]
 
-DESCRIPTION
+**nfdc strategy set** **prefix** *NAME* **strategy**
+/localhost/nfd/strategy/asf[/v=4][/**probing-interval**\ ~\ *INTERVAL*][/**max-timeouts**\ ~\ *TIMEOUTS*]
+
+Description
 -----------
 
-ASF is an Adaptive Smoothed RTT-based Forwarding Strategy that chooses the best next hop based on SRTT measurement, and also periodically probes other next hops to learn their RTTs.
+**ASF** is an Adaptive Smoothed RTT-based Forwarding Strategy that chooses the
+best next hop based on SRTT measurements, and also periodically probes other
+next hops to learn their RTTs.
 
-OPTIONS
+Options
 -------
-<PROBING-INTERVAL>
-    Tells ASF how often to send a probe to determine alternative paths.
-    The value is specified in milliseconds (non-negative integer)
-    Lower value means high overhead but faster reaction.
-    Default value is 1 minute and minimum value is 1 second.
-    It is optional to specify probing-interval.
 
-<N-SILENT-TIMEOUTS>
-    ASF switches immediately to another appropriate face (if available) upon timeout.
-    This behavior may be too sensitive for application use and appropriate only for link
-    failures and not transient timeouts. So this parameter makes ASF switch paths
-    only after it has encountered the specified number of timeouts (non-negative integer).
-    Default and minimum value is 0, i.e., switch immediately.
-    It is optional to specify n-silent-timeouts.
+.. option:: probing-interval
 
-EXAMPLES
+    This optional parameter tells ASF how often to send a probe to determine
+    alternative paths. The value is specified in milliseconds (non-negative
+    integer). Smaller values will result in higher overhead but faster reaction.
+    The default value is 1 minute and the minimum value is 1 second.
+
+.. option:: max-timeouts
+
+    This optional parameter makes ASF switch to another appropriate face (if available)
+    after it has encountered the specified number of timeouts. The value is a positive
+    integer and defaults to 3, i.e., switch to another face after 3 timeouts. Smaller
+    values make ASF more sensitive to timeouts and will switch paths more frequently,
+    which should provide a faster reaction to link failures. Larger values may be better
+    suited when transient timeouts are common and for certain application uses.
+
+Examples
 --------
+
 nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf
-    Use the default values.
+    Use the default values for all parameters.
 
 nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf/v=4/probing-interval~30000
-    Set probing interval as 30 seconds.
+    Set probing interval to 30 seconds.
 
-nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf/v=4/n-silent-timeouts~5
-    Set n-silent-timeouts as 5.
+nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf/v=4/max-timeouts~5
+    Set max timeouts to 5.
 
-nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf/v=4/probing-interval~30000/n-silent-timeouts~5
-    Set probing interval as 30 seconds and n-silent-timeouts as 5.
+nfdc strategy set prefix /ndn strategy /localhost/nfd/strategy/asf/v=4/probing-interval~30000/max-timeouts~2
+    Set probing interval to 30 seconds and max timeouts to 2.
 
-SEE ALSO
+See also
 --------
+
 nfdc(1), nfdc-strategy(1)
diff --git a/tests/daemon/fw/asf-strategy.t.cpp b/tests/daemon/fw/asf-strategy.t.cpp
index afe009f..1336b3e 100644
--- a/tests/daemon/fw/asf-strategy.t.cpp
+++ b/tests/daemon/fw/asf-strategy.t.cpp
@@ -71,10 +71,9 @@
     nodeC = topo.addForwarder("C");
     nodeD = topo.addForwarder("D");
 
-    topo.setStrategy<AsfStrategy>(nodeA, Name("/"), parameters);
-    topo.setStrategy<AsfStrategy>(nodeB, Name("/"), parameters);
-    topo.setStrategy<AsfStrategy>(nodeC, Name("/"), parameters);
-    topo.setStrategy<AsfStrategy>(nodeD, Name("/"), parameters);
+    for (auto node : {nodeA, nodeB, nodeC, nodeD}) {
+      topo.setStrategy<AsfStrategy>(node, Name("/"), parameters);
+    }
 
     linkAB = topo.addLink("AB", 10_ms, {nodeA, nodeB});
     linkAD = topo.addLink("AD", 100_ms, {nodeA, nodeD});
@@ -126,7 +125,7 @@
   AsfStrategyParametersGridFixture()
     : AsfGridFixture(Name(AsfStrategy::getStrategyName())
                      .append("probing-interval~30000")
-                     .append("n-silent-timeouts~5"))
+                     .append("max-timeouts~5"))
   {
   }
 };
@@ -153,8 +152,8 @@
   linkAB->fail();
 
   runConsumer();
-  // We experience 3 silent timeouts before marking AB as timed out on the fourth interest.
-  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 56);
+  // We experience 3 timeouts and marked AB as timed out
+  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 57);
   BOOST_CHECK_LE(linkAB->getFace(nodeA).getCounters().nOutInterests, 36);
   BOOST_CHECK_GE(linkAD->getFace(nodeA).getCounters().nOutInterests, 24);
 
@@ -166,7 +165,7 @@
   this->advanceClocks(10_ms, 10_s);
 
   runConsumer();
-  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 86);
+  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 87);
   BOOST_CHECK_GE(linkAB->getFace(nodeA).getCounters().nOutInterests, 50);
   BOOST_CHECK_LE(linkAD->getFace(nodeA).getCounters().nOutInterests, 40);
 
@@ -176,7 +175,7 @@
 
   runConsumer();
 
-  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 86);
+  BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 87);
   BOOST_CHECK_LE(linkAB->getFace(nodeA).getCounters().nOutInterests, 65); // FIXME #3830
   BOOST_CHECK_GE(linkAD->getFace(nodeA).getCounters().nOutInterests, 57); // FIXME #3830
 }
@@ -509,11 +508,11 @@
   // Bring down 10 ms link
   linkAB->fail();
 
-  // Send 6 interests, first 5 will be ignored and on the 6th it will record the timeout
+  // Send 5 interests, after the last one it will record the timeout
   // ready to switch for the next interest
-  runConsumer(6);
+  runConsumer(5);
 
-  // Check that link has not been switched to 100 ms because n-silent-timeouts = 5
+  // Check that link has not been switched to 100 ms because max-timeouts = 5
   BOOST_CHECK_EQUAL(linkAD->getFace(nodeA).getCounters().nOutInterests, outInterestsBeforeFailure);
 
   // Send 5 interests, check that 100 ms link is used
@@ -557,21 +556,24 @@
     }
   };
 
-  checkValidity("/probing-interval~30000/n-silent-timeouts~5", true);
-  checkValidity("/n-silent-timeouts~5/probing-interval~30000", true);
+  checkValidity("/probing-interval~30000/max-timeouts~5", true);
+  checkValidity("/max-timeouts~5/probing-interval~30000", true);
   checkValidity("/probing-interval~30000", true);
-  checkValidity("/n-silent-timeouts~5", true);
+  checkValidity("/max-timeouts~5", true);
   checkValidity("", true);
 
   checkValidity("/probing-interval~500", false); // At least 1 seconds
   checkValidity("/probing-interval~-5000", false);
-  checkValidity("/n-silent-timeouts~-5", false);
-  checkValidity("/n-silent-timeouts~-5/probing-interval~-30000", false);
-  checkValidity("/n-silent-timeouts", false);
+  checkValidity("/max-timeouts~0", false);
+  checkValidity("/max-timeouts~-5", false);
+  checkValidity("/max-timeouts~-5/probing-interval~-30000", false);
+  checkValidity("/max-timeouts", false);
   checkValidity("/probing-interval~", false);
   checkValidity("/~1000", false);
   checkValidity("/probing-interval~foo", false);
-  checkValidity("/n-silent-timeouts~1~2", false);
+  checkValidity("/max-timeouts~1~2", false);
+  checkValidity("/foo", false);
+  checkValidity("/foo~42", false);
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestAsfStrategy
