The following reply was made to PR kern/176446; it has been noted by GNATS.

From: "Charbon, Julien" <jchar...@verisign.com>
To: bug-follo...@freebsd.org, jchar...@verisign.com
Cc: John Baldwin <j...@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--
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to