Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Sep 2013 15:30:01 GMT
From:      "Charbon, Julien" <jcharbon@verisign.com>
To:        freebsd-net@FreeBSD.org
Subject:   Re: kern/176446: [netinet] [patch] Concurrency in ixgbe driving out-of-order packet process and spurious RST
Message-ID:  <201309051530.r85FU1uo006945@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/176446; it has been noted by GNATS.

From: "Charbon, Julien" <jcharbon@verisign.com>
To: bug-followup@freebsd.org, jcharbon@verisign.com
Cc: John Baldwin <jhb@freebsd.org>
Subject: Re: kern/176446: [netinet] [patch] Concurrency in ixgbe driving out-of-order
 packet process and spurious RST
Date: Thu, 05 Sep 2013 15:05:15 +0200

 This is a multi-part message in MIME format.
 --------------090007000606090509060801
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit
 
 
   Just a PR update:  This issue is fixed in releng/9.2 (since 9.2-RC2 
 and later), especially with these commits:
 
 - Fix local timer watchdog using taskque_enqueue(&que->que_task) instead 
 of taskqueue_enqueue(&txr->txq_task)(one line change in 
 ixgbe_local_timer()):
 http://svnweb.freebsd.org/base?view=revision&revision=251964
 
 - Not calling (and then remove) ixgbe_rearm_queues():
 http://svnweb.freebsd.org/base?view=revision&revision=253865
 
   These changes did not reach (yet) stable/8.  Joined the current patch 
 for releng/8.4.  Thanks to John Balwin for accepting and pushing these 
 changes.
 
 --
 Julien Charbon
 
 --------------090007000606090509060801
 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0";
  name="releng-8.4.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment;
  filename="releng-8.4.patch"
 
 diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c
 index df37621..9a00517 100644
 --- a/sys/dev/ixgbe/ixgbe.c
 +++ b/sys/dev/ixgbe/ixgbe.c
 @@ -1396,23 +1396,6 @@ ixgbe_disable_queue(struct adapter *adapter, u32 vector)
  	}
  }
  
 -static inline void
 -ixgbe_rearm_queues(struct adapter *adapter, u64 queues)
 -{
 -	u32 mask;
 -
 -	if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
 -		mask = (IXGBE_EIMS_RTX_QUEUE & queues);
 -		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, mask);
 -	} else {
 -		mask = (queues & 0xFFFFFFFF);
 -		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS_EX(0), mask);
 -		mask = (queues >> 32);
 -		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS_EX(1), mask);
 -	}
 -}
 -
 -
  static void
  ixgbe_handle_que(void *context, int pending)
  {
 @@ -2046,14 +2029,13 @@ ixgbe_local_timer(void *arg)
  		    (paused == 0))
  			++hung;
  		else if (txr->queue_status == IXGBE_QUEUE_WORKING)
 -			taskqueue_enqueue(que->tq, &que->que_task);
 +			taskqueue_enqueue(que->tq, &txr->txq_task);
          }
  	/* Only truely watchdog if all queues show hung */
          if (hung == adapter->num_tx_queues)
                  goto watchdog;
  
  out:
 -	ixgbe_rearm_queues(adapter, adapter->que_mask);
  	callout_reset(&adapter->timer, hz, ixgbe_local_timer, adapter);
  	return;
  
 @@ -4559,7 +4541,6 @@ next_desc:
  	** Schedule another interrupt if so.
  	*/
  	if ((staterr & IXGBE_RXD_STAT_DD) != 0) {
 -		ixgbe_rearm_queues(adapter, (u64)(1 << que->msix));
  		return (TRUE);
  	}
  
 
 --------------090007000606090509060801--



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