Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Jun 2016 09:02:52 +0000 (UTC)
From:      Andrew Rybchenko <arybchik@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r301985 - in stable/10/sys/dev/sfxge: . common
Message-ID:  <201606170902.u5H92qfl014931@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: arybchik
Date: Fri Jun 17 09:02:51 2016
New Revision: 301985
URL: https://svnweb.freebsd.org/changeset/base/301985

Log:
  MFC r301309
  
  sfxge(4): always be ready to receive batched events
  
  When the low-latency firmware variant is running, it is reported as not
  being capable of batching RX events, but it can still do so if the
  FORCE_EV_MERGING flag is set on an RXQ.  Therefore we need to handle
  batched RX events even if the capability isn't set.
  
  If this bug is fixed in the firmware such that the capability is set
  even when running the low-latency firmware variant, it will almost
  always be reported so I don't think we lose much by removing the check.
  
  Submitted by:   Mark Spender <mspender at solarflare.com>
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D6705

Modified:
  stable/10/sys/dev/sfxge/common/ef10_nic.c
  stable/10/sys/dev/sfxge/sfxge_ev.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/sfxge/common/ef10_nic.c
==============================================================================
--- stable/10/sys/dev/sfxge/common/ef10_nic.c	Fri Jun 17 09:01:11 2016	(r301984)
+++ stable/10/sys/dev/sfxge/common/ef10_nic.c	Fri Jun 17 09:02:51 2016	(r301985)
@@ -1003,8 +1003,11 @@ ef10_get_datapath_caps(
 	encp->enc_rx_batching_enabled =
 	    CAP_FLAG(flags, RX_BATCHING) ? B_TRUE : B_FALSE;
 
-	if (encp->enc_rx_batching_enabled)
-		encp->enc_rx_batch_max = 16;
+	/*
+	 * Even if batching isn't reported as supported, we may still get
+	 * batched events.
+	 */
+	encp->enc_rx_batch_max = 16;
 
 	/* Check if the firmware supports disabling scatter on RXQs */
 	encp->enc_rx_disable_scatter_supported =

Modified: stable/10/sys/dev/sfxge/sfxge_ev.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_ev.c	Fri Jun 17 09:01:11 2016	(r301984)
+++ stable/10/sys/dev/sfxge/sfxge_ev.c	Fri Jun 17 09:02:51 2016	(r301985)
@@ -123,8 +123,7 @@ sfxge_ev_rx(void *arg, uint32_t label, u
 	rxq->pending += delta;
 
 	if (delta != 1) {
-		if ((!efx_nic_cfg_get(sc->enp)->enc_rx_batching_enabled) ||
-		    (delta <= 0) ||
+		if ((delta <= 0) ||
 		    (delta > efx_nic_cfg_get(sc->enp)->enc_rx_batch_max)) {
 			evq->exception = B_TRUE;
 



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