netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-16  4:42 Jeff Kirsher
  2011-09-16  4:42 ` [net-next 01/11] ixgbe: Change default Tx work limit size to 256 buffers Jeff Kirsher
                   ` (11 more replies)
  0 siblings, 12 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo

The following series contains updates to ixgbe only.  These are primarily
cleanups of the ixgbe driver.  The first two patches of the series:

  ixgbe: Change default Tx work limit size to 256 buffers
  ixgbe: consolidate all MSI-X ring interrupts and poll routines into one

are re-worked based on previous community feedback (Dave and Ben).

The following are changes since commit 4bc71cb983fd2844e603bf633df2bb53385182d2:
  net: consolidate and fix ethtool_ops->get_settings calling
and are available in the git repository at:
  git://github.com/Jkirsher/net-next.git

Alexander Duyck (11):
  ixgbe: Change default Tx work limit size to 256 buffers
  v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines
    into one
  ixgbe: cleanup allocation and freeing of IRQ affinity hint
  ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA
  ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt
    types
  ixgbe: Drop unnecessary adapter->hw dereference in loopback test
    setup
  ixgbe: combine PCI_VDEVICE and board declaration to same line
  ixgbe: Update TXDCTL configuration to correctly handle WTHRESH
  ixgbe: cleanup reset paths
  ixgbe: cleanup configuration of EITRSEL and VF reset path
  ixgbe: Correctly name and handle MSI-X other interrupt

 drivers/net/ethernet/intel/ixgbe/ixgbe.h         |    2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c   |   13 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c   |   40 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c |   18 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    |  775 ++++++++--------------
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h    |    1 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c    |   72 +--
 7 files changed, 341 insertions(+), 580 deletions(-)

-- 
1.7.6

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 01/11] ixgbe: Change default Tx work limit size to 256 buffers
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 02/11] v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines into one Jeff Kirsher
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This change makes it so that the default Tx work limit is 256 buffers or
1/2 of an entire ring instead of a full ring size so that it is much more
likely that we will be able to actually reach the work limit value.
Previously with the value set to an entire ring it would not have been
possible for us to trigger an event due to the fact that the Tx work is
stopped at the point where we cannot place one more buffer on the ring and
it is not restarted until cleanup is complete.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe.h      |    1 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
index 58482fc..3f5a744 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -53,6 +53,7 @@
 
 /* TX/RX descriptor defines */
 #define IXGBE_DEFAULT_TXD		    512
+#define IXGBE_DEFAULT_TX_WORK		    256
 #define IXGBE_MAX_TXD			   4096
 #define IXGBE_MIN_TXD			     64
 
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index a30f826..0f633ad 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -804,7 +804,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
 	struct ixgbe_tx_buffer *tx_buffer;
 	union ixgbe_adv_tx_desc *tx_desc;
 	unsigned int total_bytes = 0, total_packets = 0;
-	u16 budget = q_vector->tx.work_limit;
+	unsigned int budget = q_vector->tx.work_limit;
 	u16 i = tx_ring->next_to_clean;
 
 	tx_buffer = &tx_ring->tx_buffer_info[i];
@@ -891,7 +891,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
 		ixgbe_tx_timeout_reset(adapter);
 
 		/* the adapter is about to reset, no point in enabling stuff */
-		return budget;
+		return true;
 	}
 
 #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)
@@ -908,7 +908,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
 		}
 	}
 
-	return budget;
+	return !!budget;
 }
 
 #ifdef CONFIG_IXGBE_DCA
@@ -5091,7 +5091,7 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
 	adapter->rx_ring_count = IXGBE_DEFAULT_RXD;
 
 	/* set default work limits */
-	adapter->tx_work_limit = adapter->tx_ring_count;
+	adapter->tx_work_limit = IXGBE_DEFAULT_TX_WORK;
 
 	/* initialize eeprom parameters */
 	if (ixgbe_init_eeprom_params_generic(hw)) {
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 02/11] v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines into one
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
  2011-09-16  4:42 ` [net-next 01/11] ixgbe: Change default Tx work limit size to 256 buffers Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 03/11] ixgbe: cleanup allocation and freeing of IRQ affinity hint Jeff Kirsher
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This change consolidates all of the MSI-X interrupt and polling routines
into two single functions.  One for the interrupt and one for the code.
The main advantage to doing this is that the compiler can optimize the
routines into single monolithic functions which should allow all of them
function to occupy a single block of memory and as such avoid jumping
around.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  279 ++++++-------------------
 1 files changed, 63 insertions(+), 216 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0f633ad..3ce0277 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1297,9 +1297,9 @@ static inline bool ixgbe_get_rsc_state(union ixgbe_adv_rx_desc *rx_desc)
 		IXGBE_RXDADV_RSCCNT_MASK);
 }
 
-static void ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
+static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
 			       struct ixgbe_ring *rx_ring,
-			       int *work_done, int work_to_do)
+			       int budget)
 {
 	struct ixgbe_adapter *adapter = q_vector->adapter;
 	union ixgbe_adv_rx_desc *rx_desc, *next_rxd;
@@ -1479,11 +1479,11 @@ static void ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
 #endif /* IXGBE_FCOE */
 		ixgbe_receive_skb(q_vector, skb, staterr, rx_ring, rx_desc);
 
+		budget--;
 next_desc:
 		rx_desc->wb.upper.status_error = 0;
 
-		(*work_done)++;
-		if (*work_done >= work_to_do)
+		if (!budget)
 			break;
 
 		/* return some buffers to hardware, one at a time is too slow */
@@ -1524,9 +1524,10 @@ next_desc:
 	u64_stats_update_end(&rx_ring->syncp);
 	q_vector->rx.total_packets += total_rx_packets;
 	q_vector->rx.total_bytes += total_rx_bytes;
+
+	return !!budget;
 }
 
-static int ixgbe_clean_rxonly(struct napi_struct *, int);
 /**
  * ixgbe_configure_msix - Configure MSI-X hardware
  * @adapter: board private structure
@@ -1980,167 +1981,18 @@ static inline void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter,
 	/* skip the flush */
 }
 
-static irqreturn_t ixgbe_msix_clean_tx(int irq, void *data)
-{
-	struct ixgbe_q_vector *q_vector = data;
-
-	if (!q_vector->tx.count)
-		return IRQ_HANDLED;
-
-	/* EIAM disabled interrupts (on this vector) for us */
-	napi_schedule(&q_vector->napi);
-
-	return IRQ_HANDLED;
-}
-
-/**
- * ixgbe_msix_clean_rx - single unshared vector rx clean (all queues)
- * @irq: unused
- * @data: pointer to our q_vector struct for this interrupt vector
- **/
-static irqreturn_t ixgbe_msix_clean_rx(int irq, void *data)
+static irqreturn_t ixgbe_msix_clean_rings(int irq, void *data)
 {
 	struct ixgbe_q_vector *q_vector = data;
 
-	if (!q_vector->rx.count)
-		return IRQ_HANDLED;
-
 	/* EIAM disabled interrupts (on this vector) for us */
-	napi_schedule(&q_vector->napi);
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t ixgbe_msix_clean_many(int irq, void *data)
-{
-	struct ixgbe_q_vector *q_vector = data;
 
-	if (!q_vector->tx.count && !q_vector->rx.count)
-		return IRQ_HANDLED;
-
-	/* EIAM disabled interrupts (on this vector) for us */
-	napi_schedule(&q_vector->napi);
+	if (q_vector->rx.ring || q_vector->tx.ring)
+		napi_schedule(&q_vector->napi);
 
 	return IRQ_HANDLED;
 }
 
-/**
- * ixgbe_clean_rxonly - msix (aka one shot) rx clean routine
- * @napi: napi struct with our devices info in it
- * @budget: amount of work driver is allowed to do this pass, in packets
- *
- * This function is optimized for cleaning one queue only on a single
- * q_vector!!!
- **/
-static int ixgbe_clean_rxonly(struct napi_struct *napi, int budget)
-{
-	struct ixgbe_q_vector *q_vector =
-			       container_of(napi, struct ixgbe_q_vector, napi);
-	struct ixgbe_adapter *adapter = q_vector->adapter;
-	int work_done = 0;
-
-#ifdef CONFIG_IXGBE_DCA
-	if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
-		ixgbe_update_dca(q_vector);
-#endif
-
-	ixgbe_clean_rx_irq(q_vector, q_vector->rx.ring, &work_done, budget);
-
-	/* If all Rx work done, exit the polling mode */
-	if (work_done < budget) {
-		napi_complete(napi);
-		if (adapter->rx_itr_setting & 1)
-			ixgbe_set_itr(q_vector);
-		if (!test_bit(__IXGBE_DOWN, &adapter->state))
-			ixgbe_irq_enable_queues(adapter,
-						((u64)1 << q_vector->v_idx));
-	}
-
-	return work_done;
-}
-
-/**
- * ixgbe_clean_rxtx_many - msix (aka one shot) rx clean routine
- * @napi: napi struct with our devices info in it
- * @budget: amount of work driver is allowed to do this pass, in packets
- *
- * This function will clean more than one rx queue associated with a
- * q_vector.
- **/
-static int ixgbe_clean_rxtx_many(struct napi_struct *napi, int budget)
-{
-	struct ixgbe_q_vector *q_vector =
-			       container_of(napi, struct ixgbe_q_vector, napi);
-	struct ixgbe_adapter *adapter = q_vector->adapter;
-	struct ixgbe_ring *ring;
-	int work_done = 0;
-	bool clean_complete = true;
-
-#ifdef CONFIG_IXGBE_DCA
-	if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
-		ixgbe_update_dca(q_vector);
-#endif
-
-	for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
-		clean_complete &= ixgbe_clean_tx_irq(q_vector, ring);
-
-	/* attempt to distribute budget to each queue fairly, but don't allow
-	 * the budget to go below 1 because we'll exit polling */
-	budget /= (q_vector->rx.count ?: 1);
-	budget = max(budget, 1);
-
-	for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
-		ixgbe_clean_rx_irq(q_vector, ring, &work_done, budget);
-
-	if (!clean_complete)
-		work_done = budget;
-
-	/* If all Rx work done, exit the polling mode */
-	if (work_done < budget) {
-		napi_complete(napi);
-		if (adapter->rx_itr_setting & 1)
-			ixgbe_set_itr(q_vector);
-		if (!test_bit(__IXGBE_DOWN, &adapter->state))
-			ixgbe_irq_enable_queues(adapter,
-						((u64)1 << q_vector->v_idx));
-		return 0;
-	}
-
-	return work_done;
-}
-
-/**
- * ixgbe_clean_txonly - msix (aka one shot) tx clean routine
- * @napi: napi struct with our devices info in it
- * @budget: amount of work driver is allowed to do this pass, in packets
- *
- * This function is optimized for cleaning one queue only on a single
- * q_vector!!!
- **/
-static int ixgbe_clean_txonly(struct napi_struct *napi, int budget)
-{
-	struct ixgbe_q_vector *q_vector =
-			       container_of(napi, struct ixgbe_q_vector, napi);
-	struct ixgbe_adapter *adapter = q_vector->adapter;
-
-#ifdef CONFIG_IXGBE_DCA
-	if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
-		ixgbe_update_dca(q_vector);
-#endif
-
-	if (!ixgbe_clean_tx_irq(q_vector, q_vector->tx.ring))
-		return budget;
-
-	/* If all Tx work done, exit the polling mode */
-	napi_complete(napi);
-	if (adapter->tx_itr_setting & 1)
-		ixgbe_set_itr(q_vector);
-	if (!test_bit(__IXGBE_DOWN, &adapter->state))
-		ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx));
-
-	return 0;
-}
-
 static inline void map_vector_to_rxq(struct ixgbe_adapter *a, int v_idx,
 				     int r_idx)
 {
@@ -2241,7 +2093,6 @@ out:
 static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 {
 	struct net_device *netdev = adapter->netdev;
-	irqreturn_t (*handler)(int, void *);
 	int i, vector, q_vectors, err;
 	int ri = 0, ti = 0;
 
@@ -2252,31 +2103,25 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 	if (err)
 		return err;
 
-#define SET_HANDLER(_v) (((_v)->rx.count && (_v)->tx.count)        \
-					  ? &ixgbe_msix_clean_many : \
-			  (_v)->rx.count ? &ixgbe_msix_clean_rx   : \
-			  (_v)->tx.count ? &ixgbe_msix_clean_tx   : \
-			  NULL)
 	for (vector = 0; vector < q_vectors; vector++) {
 		struct ixgbe_q_vector *q_vector = adapter->q_vector[vector];
-		handler = SET_HANDLER(q_vector);
 
-		if (handler == &ixgbe_msix_clean_rx) {
+		if (q_vector->tx.ring && q_vector->rx.ring) {
 			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
-			         "%s-%s-%d", netdev->name, "rx", ri++);
-		} else if (handler == &ixgbe_msix_clean_tx) {
+				 "%s-%s-%d", netdev->name, "TxRx", ri++);
+			ti++;
+		} else if (q_vector->rx.ring) {
 			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
-			         "%s-%s-%d", netdev->name, "tx", ti++);
-		} else if (handler == &ixgbe_msix_clean_many) {
+				 "%s-%s-%d", netdev->name, "rx", ri++);
+		} else if (q_vector->tx.ring) {
 			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
-			         "%s-%s-%d", netdev->name, "TxRx", ri++);
-			ti++;
+				 "%s-%s-%d", netdev->name, "tx", ti++);
 		} else {
 			/* skip this unused q_vector */
 			continue;
 		}
 		err = request_irq(adapter->msix_entries[vector].vector,
-				  handler, 0, q_vector->name,
+				  &ixgbe_msix_clean_rings, 0, q_vector->name,
 				  q_vector);
 		if (err) {
 			e_err(probe, "request_irq failed for MSIX interrupt "
@@ -2484,8 +2329,8 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
 		i--;
 		for (; i >= 0; i--) {
 			/* free only the irqs that were actually requested */
-			if (!adapter->q_vector[i]->rx.count &&
-			    !adapter->q_vector[i]->tx.count)
+			if (!adapter->q_vector[i]->rx.ring &&
+			    !adapter->q_vector[i]->tx.ring)
 				continue;
 
 			free_irq(adapter->msix_entries[i].vector,
@@ -3478,19 +3323,8 @@ static void ixgbe_napi_enable_all(struct ixgbe_adapter *adapter)
 		q_vectors = 1;
 
 	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
-		struct napi_struct *napi;
 		q_vector = adapter->q_vector[q_idx];
-		napi = &q_vector->napi;
-		if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) {
-			if (!q_vector->rx.count || !q_vector->tx.count) {
-				if (q_vector->tx.count == 1)
-					napi->poll = &ixgbe_clean_txonly;
-				else if (q_vector->rx.count == 1)
-					napi->poll = &ixgbe_clean_rxonly;
-			}
-		}
-
-		napi_enable(napi);
+		napi_enable(&q_vector->napi);
 	}
 }
 
@@ -4148,28 +3982,41 @@ static int ixgbe_poll(struct napi_struct *napi, int budget)
 	struct ixgbe_q_vector *q_vector =
 				container_of(napi, struct ixgbe_q_vector, napi);
 	struct ixgbe_adapter *adapter = q_vector->adapter;
-	int tx_clean_complete, work_done = 0;
+	struct ixgbe_ring *ring;
+	int per_ring_budget;
+	bool clean_complete = true;
 
 #ifdef CONFIG_IXGBE_DCA
 	if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
 		ixgbe_update_dca(q_vector);
 #endif
 
-	tx_clean_complete = ixgbe_clean_tx_irq(q_vector, adapter->tx_ring[0]);
-	ixgbe_clean_rx_irq(q_vector, adapter->rx_ring[0], &work_done, budget);
+	for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
+		clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring);
 
-	if (!tx_clean_complete)
-		work_done = budget;
+	/* attempt to distribute budget to each queue fairly, but don't allow
+	 * the budget to go below 1 because we'll exit polling */
+	if (q_vector->rx.count > 1)
+		per_ring_budget = max(budget/q_vector->rx.count, 1);
+	else
+		per_ring_budget = budget;
 
-	/* If budget not fully consumed, exit the polling mode */
-	if (work_done < budget) {
-		napi_complete(napi);
-		if (adapter->rx_itr_setting & 1)
-			ixgbe_set_itr(q_vector);
-		if (!test_bit(__IXGBE_DOWN, &adapter->state))
-			ixgbe_irq_enable_queues(adapter, IXGBE_EIMS_RTX_QUEUE);
-	}
-	return work_done;
+	for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
+		clean_complete &= ixgbe_clean_rx_irq(q_vector, ring,
+						     per_ring_budget);
+
+	/* If all work not completed, return budget and keep polling */
+	if (!clean_complete)
+		return budget;
+
+	/* all work done, exit the polling mode */
+	napi_complete(napi);
+	if (adapter->rx_itr_setting & 1)
+		ixgbe_set_itr(q_vector);
+	if (!test_bit(__IXGBE_DOWN, &adapter->state))
+		ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx));
+
+	return 0;
 }
 
 /**
@@ -4810,19 +4657,15 @@ out:
  **/
 static int ixgbe_alloc_q_vectors(struct ixgbe_adapter *adapter)
 {
-	int q_idx, num_q_vectors;
+	int v_idx, num_q_vectors;
 	struct ixgbe_q_vector *q_vector;
-	int (*poll)(struct napi_struct *, int);
 
-	if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) {
+	if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED)
 		num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
-		poll = &ixgbe_clean_rxtx_many;
-	} else {
+	else
 		num_q_vectors = 1;
-		poll = &ixgbe_poll;
-	}
 
-	for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
+	for (v_idx = 0; v_idx < num_q_vectors; v_idx++) {
 		q_vector = kzalloc_node(sizeof(struct ixgbe_q_vector),
 					GFP_KERNEL, adapter->node);
 		if (!q_vector)
@@ -4830,25 +4673,29 @@ static int ixgbe_alloc_q_vectors(struct ixgbe_adapter *adapter)
 					   GFP_KERNEL);
 		if (!q_vector)
 			goto err_out;
+
 		q_vector->adapter = adapter;
+		q_vector->v_idx = v_idx;
+
 		if (q_vector->tx.count && !q_vector->rx.count)
 			q_vector->eitr = adapter->tx_eitr_param;
 		else
 			q_vector->eitr = adapter->rx_eitr_param;
-		q_vector->v_idx = q_idx;
-		netif_napi_add(adapter->netdev, &q_vector->napi, (*poll), 64);
-		adapter->q_vector[q_idx] = q_vector;
+
+		netif_napi_add(adapter->netdev, &q_vector->napi,
+			       ixgbe_poll, 64);
+		adapter->q_vector[v_idx] = q_vector;
 	}
 
 	return 0;
 
 err_out:
-	while (q_idx) {
-		q_idx--;
-		q_vector = adapter->q_vector[q_idx];
+	while (v_idx) {
+		v_idx--;
+		q_vector = adapter->q_vector[v_idx];
 		netif_napi_del(&q_vector->napi);
 		kfree(q_vector);
-		adapter->q_vector[q_idx] = NULL;
+		adapter->q_vector[v_idx] = NULL;
 	}
 	return -ENOMEM;
 }
@@ -6960,7 +6807,7 @@ static void ixgbe_netpoll(struct net_device *netdev)
 		int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 		for (i = 0; i < num_q_vectors; i++) {
 			struct ixgbe_q_vector *q_vector = adapter->q_vector[i];
-			ixgbe_msix_clean_many(0, q_vector);
+			ixgbe_msix_clean_rings(0, q_vector);
 		}
 	} else {
 		ixgbe_intr(adapter->pdev->irq, netdev);
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 03/11] ixgbe: cleanup allocation and freeing of IRQ affinity hint
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
  2011-09-16  4:42 ` [net-next 01/11] ixgbe: Change default Tx work limit size to 256 buffers Jeff Kirsher
  2011-09-16  4:42 ` [net-next 02/11] v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines into one Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 04/11] ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA Jeff Kirsher
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

The allocation and freeing of the IRQ affinity hint needs some updates
since there are a number of spots where we run into possible issues with
the hint not being correctly updated.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   76 ++++++++++++-------------
 1 files changed, 36 insertions(+), 40 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 3ce0277..73a669d 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1565,20 +1565,6 @@ static void ixgbe_configure_msix(struct ixgbe_adapter *adapter)
 			q_vector->eitr = adapter->rx_eitr_param;
 
 		ixgbe_write_eitr(q_vector);
-		/* If ATR is enabled, set interrupt affinity */
-		if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
-			/*
-			 * Allocate the affinity_hint cpumask, assign the mask
-			 * for this vector, and set our affinity_hint for
-			 * this irq.
-			 */
-			if (!alloc_cpumask_var(&q_vector->affinity_mask,
-			                       GFP_KERNEL))
-				return;
-			cpumask_set_cpu(v_idx, q_vector->affinity_mask);
-			irq_set_affinity_hint(adapter->msix_entries[v_idx].vector,
-			                      q_vector->affinity_mask);
-		}
 	}
 
 	switch (adapter->hw.mac.type) {
@@ -2093,18 +2079,17 @@ out:
 static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 {
 	struct net_device *netdev = adapter->netdev;
-	int i, vector, q_vectors, err;
+	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
+	int vector, err;
 	int ri = 0, ti = 0;
 
-	/* Decrement for Other and TCP Timer vectors */
-	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
-
 	err = ixgbe_map_rings_to_vectors(adapter);
 	if (err)
 		return err;
 
 	for (vector = 0; vector < q_vectors; vector++) {
 		struct ixgbe_q_vector *q_vector = adapter->q_vector[vector];
+		struct msix_entry *entry = &adapter->msix_entries[vector];
 
 		if (q_vector->tx.ring && q_vector->rx.ring) {
 			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
@@ -2120,14 +2105,19 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 			/* skip this unused q_vector */
 			continue;
 		}
-		err = request_irq(adapter->msix_entries[vector].vector,
-				  &ixgbe_msix_clean_rings, 0, q_vector->name,
-				  q_vector);
+		err = request_irq(entry->vector, &ixgbe_msix_clean_rings, 0,
+				  q_vector->name, q_vector);
 		if (err) {
 			e_err(probe, "request_irq failed for MSIX interrupt "
 			      "Error: %d\n", err);
 			goto free_queue_irqs;
 		}
+		/* If Flow Director is enabled, set interrupt affinity */
+		if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
+			/* assign the mask for this irq */
+			irq_set_affinity_hint(entry->vector,
+					      q_vector->affinity_mask);
+		}
 	}
 
 	sprintf(adapter->lsc_int_name, "%s:lsc", netdev->name);
@@ -2141,9 +2131,13 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 	return 0;
 
 free_queue_irqs:
-	for (i = vector - 1; i >= 0; i--)
-		free_irq(adapter->msix_entries[--vector].vector,
-			 adapter->q_vector[i]);
+	while (vector) {
+		vector--;
+		irq_set_affinity_hint(adapter->msix_entries[vector].vector,
+				      NULL);
+		free_irq(adapter->msix_entries[vector].vector,
+			 adapter->q_vector[vector]);
+	}
 	adapter->flags &= ~IXGBE_FLAG_MSIX_ENABLED;
 	pci_disable_msix(adapter->pdev);
 	kfree(adapter->msix_entries);
@@ -2333,14 +2327,19 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
 			    !adapter->q_vector[i]->tx.ring)
 				continue;
 
+			/* clear the affinity_mask in the IRQ descriptor */
+			irq_set_affinity_hint(adapter->msix_entries[i].vector,
+					      NULL);
+
 			free_irq(adapter->msix_entries[i].vector,
 				 adapter->q_vector[i]);
 		}
-
-		ixgbe_reset_q_vectors(adapter);
 	} else {
 		free_irq(adapter->pdev->irq, adapter);
 	}
+
+	/* clear q_vector state information */
+	ixgbe_reset_q_vectors(adapter);
 }
 
 /**
@@ -3879,7 +3878,6 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 	struct ixgbe_hw *hw = &adapter->hw;
 	u32 rxctrl;
 	int i;
-	int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 
 	/* signal that we are down to the interrupt handler */
 	set_bit(__IXGBE_DOWN, &adapter->state);
@@ -3924,15 +3922,6 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 			adapter->vfinfo[i].clear_to_send = 0;
 	}
 
-	/* Cleanup the affinity_hint CPU mask memory and callback */
-	for (i = 0; i < num_q_vectors; i++) {
-		struct ixgbe_q_vector *q_vector = adapter->q_vector[i];
-		/* clear the affinity_mask in the IRQ descriptor */
-		irq_set_affinity_hint(adapter->msix_entries[i]. vector, NULL);
-		/* release the CPU mask memory */
-		free_cpumask_var(q_vector->affinity_mask);
-	}
-
 	/* disable transmits in the hardware now that interrupts are off */
 	for (i = 0; i < adapter->num_tx_queues; i++) {
 		u8 reg_idx = adapter->tx_ring[i]->reg_idx;
@@ -4677,6 +4666,11 @@ static int ixgbe_alloc_q_vectors(struct ixgbe_adapter *adapter)
 		q_vector->adapter = adapter;
 		q_vector->v_idx = v_idx;
 
+		/* Allocate the affinity_hint cpumask, configure the mask */
+		if (!alloc_cpumask_var(&q_vector->affinity_mask, GFP_KERNEL))
+			goto err_out;
+		cpumask_set_cpu(v_idx, q_vector->affinity_mask);
+
 		if (q_vector->tx.count && !q_vector->rx.count)
 			q_vector->eitr = adapter->tx_eitr_param;
 		else
@@ -4694,6 +4688,7 @@ err_out:
 		v_idx--;
 		q_vector = adapter->q_vector[v_idx];
 		netif_napi_del(&q_vector->napi);
+		free_cpumask_var(q_vector->affinity_mask);
 		kfree(q_vector);
 		adapter->q_vector[v_idx] = NULL;
 	}
@@ -4710,17 +4705,18 @@ err_out:
  **/
 static void ixgbe_free_q_vectors(struct ixgbe_adapter *adapter)
 {
-	int q_idx, num_q_vectors;
+	int v_idx, num_q_vectors;
 
 	if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED)
 		num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 	else
 		num_q_vectors = 1;
 
-	for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
-		struct ixgbe_q_vector *q_vector = adapter->q_vector[q_idx];
-		adapter->q_vector[q_idx] = NULL;
+	for (v_idx = 0; v_idx < num_q_vectors; v_idx++) {
+		struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx];
+		adapter->q_vector[v_idx] = NULL;
 		netif_napi_del(&q_vector->napi);
+		free_cpumask_var(q_vector->affinity_mask);
 		kfree(q_vector);
 	}
 }
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 04/11] ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (2 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 03/11] ixgbe: cleanup allocation and freeing of IRQ affinity hint Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 05/11] ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt types Jeff Kirsher
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This change switches us over to using the ring->dev pointer instead of
having to use the adapter->pdev->dev reference.  The advantage to this is
that it is a much shorter route to get the to final needed value.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 73a669d..0564c65 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -924,12 +924,12 @@ static void ixgbe_update_rx_dca(struct ixgbe_adapter *adapter,
 	switch (hw->mac.type) {
 	case ixgbe_mac_82598EB:
 		rxctrl &= ~IXGBE_DCA_RXCTRL_CPUID_MASK;
-		rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
+		rxctrl |= dca3_get_tag(rx_ring->dev, cpu);
 		break;
 	case ixgbe_mac_82599EB:
 	case ixgbe_mac_X540:
 		rxctrl &= ~IXGBE_DCA_RXCTRL_CPUID_MASK_82599;
-		rxctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) <<
+		rxctrl |= (dca3_get_tag(rx_ring->dev, cpu) <<
 			   IXGBE_DCA_RXCTRL_CPUID_SHIFT_82599);
 		break;
 	default:
@@ -953,7 +953,7 @@ static void ixgbe_update_tx_dca(struct ixgbe_adapter *adapter,
 	case ixgbe_mac_82598EB:
 		txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL(reg_idx));
 		txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK;
-		txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
+		txctrl |= dca3_get_tag(tx_ring->dev, cpu);
 		txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN;
 		IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL(reg_idx), txctrl);
 		break;
@@ -961,7 +961,7 @@ static void ixgbe_update_tx_dca(struct ixgbe_adapter *adapter,
 	case ixgbe_mac_X540:
 		txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL_82599(reg_idx));
 		txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK_82599;
-		txctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) <<
+		txctrl |= (dca3_get_tag(tx_ring->dev, cpu) <<
 			   IXGBE_DCA_TXCTRL_CPUID_SHIFT_82599);
 		txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN;
 		IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL_82599(reg_idx), txctrl);
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 05/11] ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt types
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (3 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 04/11] ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 06/11] ixgbe: Drop unnecessary adapter->hw dereference in loopback test setup Jeff Kirsher
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This patch makes it so that the map_rings_to_vectors call will work with
all interrupt types.  The advantage to this is that there will now be a
predictable mapping for all given interrupt types.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   90 ++++++++++---------------
 1 files changed, 35 insertions(+), 55 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0564c65..dd1b57b 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -2014,59 +2014,41 @@ static inline void map_vector_to_txq(struct ixgbe_adapter *a, int v_idx,
  * group the rings as "efficiently" as possible.  You would add new
  * mapping configurations in here.
  **/
-static int ixgbe_map_rings_to_vectors(struct ixgbe_adapter *adapter)
+static void ixgbe_map_rings_to_vectors(struct ixgbe_adapter *adapter)
 {
-	int q_vectors;
+	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
+	int rxr_remaining = adapter->num_rx_queues, rxr_idx = 0;
+	int txr_remaining = adapter->num_tx_queues, txr_idx = 0;
 	int v_start = 0;
-	int rxr_idx = 0, txr_idx = 0;
-	int rxr_remaining = adapter->num_rx_queues;
-	int txr_remaining = adapter->num_tx_queues;
-	int i, j;
-	int rqpv, tqpv;
-	int err = 0;
 
-	/* No mapping required if MSI-X is disabled. */
+	/* only one q_vector if MSI-X is disabled. */
 	if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED))
-		goto out;
-
-	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
+		q_vectors = 1;
 
 	/*
-	 * The ideal configuration...
-	 * We have enough vectors to map one per queue.
+	 * If we don't have enough vectors for a 1-to-1 mapping, we'll have to
+	 * group them so there are multiple queues per vector.
+	 *
+	 * Re-adjusting *qpv takes care of the remainder.
 	 */
-	if (q_vectors == adapter->num_rx_queues + adapter->num_tx_queues) {
-		for (; rxr_idx < rxr_remaining; v_start++, rxr_idx++)
+	for (; v_start < q_vectors && rxr_remaining; v_start++) {
+		int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - v_start);
+		for (; rqpv; rqpv--, rxr_idx++, rxr_remaining--)
 			map_vector_to_rxq(adapter, v_start, rxr_idx);
-
-		for (; txr_idx < txr_remaining; v_start++, txr_idx++)
-			map_vector_to_txq(adapter, v_start, txr_idx);
-
-		goto out;
 	}
 
 	/*
-	 * If we don't have enough vectors for a 1-to-1
-	 * mapping, we'll have to group them so there are
-	 * multiple queues per vector.
+	 * If there are not enough q_vectors for each ring to have it's own
+	 * vector then we must pair up Rx/Tx on a each vector
 	 */
-	/* Re-adjusting *qpv takes care of the remainder. */
-	for (i = v_start; i < q_vectors; i++) {
-		rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - i);
-		for (j = 0; j < rqpv; j++) {
-			map_vector_to_rxq(adapter, i, rxr_idx);
-			rxr_idx++;
-			rxr_remaining--;
-		}
-		tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - i);
-		for (j = 0; j < tqpv; j++) {
-			map_vector_to_txq(adapter, i, txr_idx);
-			txr_idx++;
-			txr_remaining--;
-		}
+	if ((v_start + txr_remaining) > q_vectors)
+		v_start = 0;
+
+	for (; v_start < q_vectors && txr_remaining; v_start++) {
+		int tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - v_start);
+		for (; tqpv; tqpv--, txr_idx++, txr_remaining--)
+			map_vector_to_txq(adapter, v_start, txr_idx);
 	}
-out:
-	return err;
 }
 
 /**
@@ -2083,10 +2065,6 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 	int vector, err;
 	int ri = 0, ti = 0;
 
-	err = ixgbe_map_rings_to_vectors(adapter);
-	if (err)
-		return err;
-
 	for (vector = 0; vector < q_vectors; vector++) {
 		struct ixgbe_q_vector *q_vector = adapter->q_vector[vector];
 		struct msix_entry *entry = &adapter->msix_entries[vector];
@@ -2294,19 +2272,25 @@ static int ixgbe_request_irq(struct ixgbe_adapter *adapter)
 	struct net_device *netdev = adapter->netdev;
 	int err;
 
-	if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) {
+	/* map all of the rings to the q_vectors */
+	ixgbe_map_rings_to_vectors(adapter);
+
+	if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED)
 		err = ixgbe_request_msix_irqs(adapter);
-	} else if (adapter->flags & IXGBE_FLAG_MSI_ENABLED) {
+	else if (adapter->flags & IXGBE_FLAG_MSI_ENABLED)
 		err = request_irq(adapter->pdev->irq, ixgbe_intr, 0,
 				  netdev->name, adapter);
-	} else {
+	else
 		err = request_irq(adapter->pdev->irq, ixgbe_intr, IRQF_SHARED,
 				  netdev->name, adapter);
-	}
 
-	if (err)
+	if (err) {
 		e_err(probe, "request_irq failed, Error %d\n", err);
 
+		/* place q_vectors and rings back into a known good state */
+		ixgbe_reset_q_vectors(adapter);
+	}
+
 	return err;
 }
 
@@ -2316,11 +2300,10 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
 		int i, q_vectors;
 
 		q_vectors = adapter->num_msix_vectors;
-
 		i = q_vectors - 1;
 		free_irq(adapter->msix_entries[i].vector, adapter);
-
 		i--;
+
 		for (; i >= 0; i--) {
 			/* free only the irqs that were actually requested */
 			if (!adapter->q_vector[i]->rx.ring &&
@@ -2387,9 +2370,6 @@ static void ixgbe_configure_msi_and_legacy(struct ixgbe_adapter *adapter)
 	ixgbe_set_ivar(adapter, 0, 0, 0);
 	ixgbe_set_ivar(adapter, 1, 0, 0);
 
-	map_vector_to_rxq(adapter, 0, 0);
-	map_vector_to_txq(adapter, 0, 0);
-
 	e_info(hw, "Legacy interrupt IVAR setup done\n");
 }
 
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 06/11] ixgbe: Drop unnecessary adapter->hw dereference in loopback test setup
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (4 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 05/11] ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt types Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 07/11] ixgbe: combine PCI_VDEVICE and board declaration to same line Jeff Kirsher
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This patch drops a set of unnecessary dereferences to the hardware structure
since we already have a local copy of the hardware pointer.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 9c12b35..11e1d5c 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -1570,26 +1570,26 @@ static int ixgbe_setup_loopback_test(struct ixgbe_adapter *adapter)
 
 	/* X540 needs to set the MACC.FLU bit to force link up */
 	if (adapter->hw.mac.type == ixgbe_mac_X540) {
-		reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_MACC);
+		reg_data = IXGBE_READ_REG(hw, IXGBE_MACC);
 		reg_data |= IXGBE_MACC_FLU;
-		IXGBE_WRITE_REG(&adapter->hw, IXGBE_MACC, reg_data);
+		IXGBE_WRITE_REG(hw, IXGBE_MACC, reg_data);
 	}
 
 	/* right now we only support MAC loopback in the driver */
-	reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_HLREG0);
+	reg_data = IXGBE_READ_REG(hw, IXGBE_HLREG0);
 	/* Setup MAC loopback */
 	reg_data |= IXGBE_HLREG0_LPBK;
-	IXGBE_WRITE_REG(&adapter->hw, IXGBE_HLREG0, reg_data);
+	IXGBE_WRITE_REG(hw, IXGBE_HLREG0, reg_data);
 
-	reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_FCTRL);
+	reg_data = IXGBE_READ_REG(hw, IXGBE_FCTRL);
 	reg_data |= IXGBE_FCTRL_BAM | IXGBE_FCTRL_SBP | IXGBE_FCTRL_MPE;
-	IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, reg_data);
+	IXGBE_WRITE_REG(hw, IXGBE_FCTRL, reg_data);
 
-	reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_AUTOC);
+	reg_data = IXGBE_READ_REG(hw, IXGBE_AUTOC);
 	reg_data &= ~IXGBE_AUTOC_LMS_MASK;
 	reg_data |= IXGBE_AUTOC_LMS_10G_LINK_NO_AN | IXGBE_AUTOC_FLU;
-	IXGBE_WRITE_REG(&adapter->hw, IXGBE_AUTOC, reg_data);
-	IXGBE_WRITE_FLUSH(&adapter->hw);
+	IXGBE_WRITE_REG(hw, IXGBE_AUTOC, reg_data);
+	IXGBE_WRITE_FLUSH(hw);
 	usleep_range(10000, 20000);
 
 	/* Disable Atlas Tx lanes; re-enabled in reset path */
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 07/11] ixgbe: combine PCI_VDEVICE and board declaration to same line
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (5 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 06/11] ixgbe: Drop unnecessary adapter->hw dereference in loopback test setup Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 08/11] ixgbe: Update TXDCTL configuration to correctly handle WTHRESH Jeff Kirsher
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This patch is a minor whitespace cleanup to compress the device ID
declaration and board type declaration onto the same line.  It seems to
make sense since all of the combinations of the two are less than 80
characters and it makes the overall layout a bit more readable.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   79 ++++++++-----------------
 1 files changed, 26 insertions(+), 53 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index dd1b57b..fee5630 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -79,59 +79,32 @@ static const struct ixgbe_info *ixgbe_info_tbl[] = {
  *   Class, Class Mask, private data (not used) }
  */
 static DEFINE_PCI_DEVICE_TABLE(ixgbe_pci_tbl) = {
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_DUAL_PORT),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_SINGLE_PORT),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT2),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_CX4),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_CX4_DUAL_PORT),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_DA_DUAL_PORT),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_XF_LR),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_SFP_LOM),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_BX),
-	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KX4),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_XAUI_LOM),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KR),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_EM),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KX4_MEZZ),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_CX4),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_BACKPLANE_FCOE),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_FCOE),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_T3_LOM),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_COMBO_BACKPLANE),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540T),
-	 board_X540 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF2),
-	 board_82599 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS),
-	 board_82599 },
-
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_DUAL_PORT), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_SINGLE_PORT), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT2), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_CX4), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_CX4_DUAL_PORT), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_DA_DUAL_PORT), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_XF_LR), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_SFP_LOM), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598_BX), board_82598 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KX4), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_XAUI_LOM), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KR), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_EM), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KX4_MEZZ), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_CX4), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_BACKPLANE_FCOE), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_FCOE), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_T3_LOM), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_COMBO_BACKPLANE), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540T), board_X540 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF2), board_82599 },
+	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS), board_82599 },
 	/* required last entry */
 	{0, }
 };
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 08/11] ixgbe: Update TXDCTL configuration to correctly handle WTHRESH
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (6 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 07/11] ixgbe: combine PCI_VDEVICE and board declaration to same line Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 09/11] ixgbe: cleanup reset paths Jeff Kirsher
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This change updated the TXDCTL configuration.  The main goal is to be much
more explicit about the configuration and avoid a possible fake TX hang
when the interrupt throttle rate is set to 0.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   35 +++++++++++++------------
 1 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index fee5630..6378d7f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -2359,13 +2359,11 @@ void ixgbe_configure_tx_ring(struct ixgbe_adapter *adapter,
 	struct ixgbe_hw *hw = &adapter->hw;
 	u64 tdba = ring->dma;
 	int wait_loop = 10;
-	u32 txdctl;
+	u32 txdctl = IXGBE_TXDCTL_ENABLE;
 	u8 reg_idx = ring->reg_idx;
 
 	/* disable queue to avoid issues while updating state */
-	txdctl = IXGBE_READ_REG(hw, IXGBE_TXDCTL(reg_idx));
-	IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(reg_idx),
-			txdctl & ~IXGBE_TXDCTL_ENABLE);
+	IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(reg_idx), 0);
 	IXGBE_WRITE_FLUSH(hw);
 
 	IXGBE_WRITE_REG(hw, IXGBE_TDBAL(reg_idx),
@@ -2377,18 +2375,22 @@ void ixgbe_configure_tx_ring(struct ixgbe_adapter *adapter,
 	IXGBE_WRITE_REG(hw, IXGBE_TDT(reg_idx), 0);
 	ring->tail = hw->hw_addr + IXGBE_TDT(reg_idx);
 
-	/* configure fetching thresholds */
-	if (adapter->rx_itr_setting == 0) {
-		/* cannot set wthresh when itr==0 */
-		txdctl &= ~0x007F0000;
-	} else {
-		/* enable WTHRESH=8 descriptors, to encourage burst writeback */
-		txdctl |= (8 << 16);
-	}
-	if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) {
-		/* PThresh workaround for Tx hang with DFP enabled. */
-		txdctl |= 32;
-	}
+	/*
+	 * set WTHRESH to encourage burst writeback, it should not be set
+	 * higher than 1 when ITR is 0 as it could cause false TX hangs
+	 *
+	 * In order to avoid issues WTHRESH + PTHRESH should always be equal
+	 * to or less than the number of on chip descriptors, which is
+	 * currently 40.
+	 */
+	if (!adapter->tx_itr_setting || !adapter->rx_itr_setting)
+		txdctl |= (1 << 16);	/* WTHRESH = 1 */
+	else
+		txdctl |= (8 << 16);	/* WTHRESH = 8 */
+
+	/* PTHRESH=32 is needed to avoid a Tx hang with DFP enabled. */
+	txdctl |= (1 << 8) |	/* HTHRESH = 1 */
+		   32;		/* PTHRESH = 32 */
 
 	/* reinitialize flowdirector state */
 	if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) &&
@@ -2403,7 +2405,6 @@ void ixgbe_configure_tx_ring(struct ixgbe_adapter *adapter,
 	clear_bit(__IXGBE_HANG_CHECK_ARMED, &ring->state);
 
 	/* enable queue */
-	txdctl |= IXGBE_TXDCTL_ENABLE;
 	IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(reg_idx), txdctl);
 
 	/* TXDCTL.EN will return 0 on 82598 if link is down, so skip it */
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 09/11] ixgbe: cleanup reset paths
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (7 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 08/11] ixgbe: Update TXDCTL configuration to correctly handle WTHRESH Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 10/11] ixgbe: cleanup configuration of EITRSEL and VF reset path Jeff Kirsher
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

The reset paths are overly complicated and are either missing steps or
contain extra unnecessary steps such as reading MAC address twice.  This
change is meant to help clean up the reset paths an get things functioning
correctly.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c |   13 ++---
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c |   40 ++++++++------
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h  |    1 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c  |   72 +++++-------------------
 4 files changed, 43 insertions(+), 83 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
index 0d4e382..22504f2 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
@@ -820,8 +820,8 @@ mac_reset_top:
 	 * Issue global reset to the MAC.  This needs to be a SW reset.
 	 * If link reset is used, it might reset the MAC when mng is using it
 	 */
-	ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
-	IXGBE_WRITE_REG(hw, IXGBE_CTRL, (ctrl | IXGBE_CTRL_RST));
+	ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL) | IXGBE_CTRL_RST;
+	IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl);
 	IXGBE_WRITE_FLUSH(hw);
 
 	/* Poll for reset bit to self-clear indicating reset is complete */
@@ -836,21 +836,18 @@ mac_reset_top:
 		hw_dbg(hw, "Reset polling failed to complete.\n");
 	}
 
+	msleep(50);
+
 	/*
 	 * Double resets are required for recovery from certain error
 	 * conditions.  Between resets, it is necessary to stall to allow time
-	 * for any pending HW events to complete.  We use 1usec since that is
-	 * what is needed for ixgbe_disable_pcie_master().  The second reset
-	 * then clears out any effects of those events.
+	 * for any pending HW events to complete.
 	 */
 	if (hw->mac.flags & IXGBE_FLAGS_DOUBLE_RESET_REQUIRED) {
 		hw->mac.flags &= ~IXGBE_FLAGS_DOUBLE_RESET_REQUIRED;
-		udelay(1);
 		goto mac_reset_top;
 	}
 
-	msleep(50);
-
 	gheccr = IXGBE_READ_REG(hw, IXGBE_GHECCR);
 	gheccr &= ~((1 << 21) | (1 << 18) | (1 << 9) | (1 << 6));
 	IXGBE_WRITE_REG(hw, IXGBE_GHECCR, gheccr);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
index f193fc2..a5ff435 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
@@ -904,11 +904,10 @@ static s32 ixgbe_setup_copper_link_82599(struct ixgbe_hw *hw,
  **/
 static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
 {
-	s32 status = 0;
-	u32 ctrl;
-	u32 i;
-	u32 autoc;
-	u32 autoc2;
+	ixgbe_link_speed link_speed;
+	s32 status;
+	u32 ctrl, i, autoc, autoc2;
+	bool link_up = false;
 
 	/* Call adapter stop to disable tx/rx and clear interrupts */
 	hw->mac.ops.stop_adapter(hw);
@@ -942,40 +941,47 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
 
 mac_reset_top:
 	/*
-	 * Issue global reset to the MAC.  This needs to be a SW reset.
-	 * If link reset is used, it might reset the MAC when mng is using it
+	 * Issue global reset to the MAC. Needs to be SW reset if link is up.
+	 * If link reset is used when link is up, it might reset the PHY when
+	 * mng is using it.  If link is down or the flag to force full link
+	 * reset is set, then perform link reset.
 	 */
-	ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
-	IXGBE_WRITE_REG(hw, IXGBE_CTRL, (ctrl | IXGBE_CTRL_RST));
+	ctrl = IXGBE_CTRL_LNK_RST;
+	if (!hw->force_full_reset) {
+		hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
+		if (link_up)
+			ctrl = IXGBE_CTRL_RST;
+	}
+
+	ctrl |= IXGBE_READ_REG(hw, IXGBE_CTRL);
+	IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl);
 	IXGBE_WRITE_FLUSH(hw);
 
 	/* Poll for reset bit to self-clear indicating reset is complete */
 	for (i = 0; i < 10; i++) {
 		udelay(1);
 		ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
-		if (!(ctrl & IXGBE_CTRL_RST))
+		if (!(ctrl & IXGBE_CTRL_RST_MASK))
 			break;
 	}
-	if (ctrl & IXGBE_CTRL_RST) {
+
+	if (ctrl & IXGBE_CTRL_RST_MASK) {
 		status = IXGBE_ERR_RESET_FAILED;
 		hw_dbg(hw, "Reset polling failed to complete.\n");
 	}
 
+	msleep(50);
+
 	/*
 	 * Double resets are required for recovery from certain error
 	 * conditions.  Between resets, it is necessary to stall to allow time
-	 * for any pending HW events to complete.  We use 1usec since that is
-	 * what is needed for ixgbe_disable_pcie_master().  The second reset
-	 * then clears out any effects of those events.
+	 * for any pending HW events to complete.
 	 */
 	if (hw->mac.flags & IXGBE_FLAGS_DOUBLE_RESET_REQUIRED) {
 		hw->mac.flags &= ~IXGBE_FLAGS_DOUBLE_RESET_REQUIRED;
-		udelay(1);
 		goto mac_reset_top;
 	}
 
-	msleep(50);
-
 	/*
 	 * Store the original AUTOC/AUTOC2 values if they have not been
 	 * stored off yet.  Otherwise restore the stored original
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
index 9f618ee..a9f8839 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
@@ -982,6 +982,7 @@
 #define IXGBE_CTRL_GIO_DIS      0x00000004 /* Global IO Master Disable bit */
 #define IXGBE_CTRL_LNK_RST      0x00000008 /* Link Reset. Resets everything. */
 #define IXGBE_CTRL_RST          0x04000000 /* Reset (SW) */
+#define IXGBE_CTRL_RST_MASK     (IXGBE_CTRL_LNK_RST | IXGBE_CTRL_RST)
 
 /* FACTPS */
 #define IXGBE_FACTPS_LFS        0x40000000 /* LAN Function Select */
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c
index 2696c78..bbfe8c4 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c
@@ -94,13 +94,8 @@ static s32 ixgbe_setup_mac_link_X540(struct ixgbe_hw *hw,
 static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
 {
 	ixgbe_link_speed link_speed;
-	s32 status = 0;
-	u32 ctrl;
-	u32 ctrl_ext;
-	u32 reset_bit;
-	u32 i;
-	u32 autoc;
-	u32 autoc2;
+	s32 status;
+	u32 ctrl, i;
 	bool link_up = false;
 
 	/* Call adapter stop to disable tx/rx and clear interrupts */
@@ -119,53 +114,42 @@ mac_reset_top:
 	 * mng is using it.  If link is down or the flag to force full link
 	 * reset is set, then perform link reset.
 	 */
-	if (hw->force_full_reset) {
-		reset_bit = IXGBE_CTRL_LNK_RST;
-	} else {
+	ctrl = IXGBE_CTRL_LNK_RST;
+	if (!hw->force_full_reset) {
 		hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
-		if (!link_up)
-			reset_bit = IXGBE_CTRL_LNK_RST;
-		else
-			reset_bit = IXGBE_CTRL_RST;
+		if (link_up)
+			ctrl = IXGBE_CTRL_RST;
 	}
 
-	ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
-	IXGBE_WRITE_REG(hw, IXGBE_CTRL, (ctrl | reset_bit));
+	ctrl |= IXGBE_READ_REG(hw, IXGBE_CTRL);
+	IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl);
 	IXGBE_WRITE_FLUSH(hw);
 
 	/* Poll for reset bit to self-clear indicating reset is complete */
 	for (i = 0; i < 10; i++) {
 		udelay(1);
 		ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
-		if (!(ctrl & reset_bit))
+		if (!(ctrl & IXGBE_CTRL_RST_MASK))
 			break;
 	}
-	if (ctrl & reset_bit) {
+
+	if (ctrl & IXGBE_CTRL_RST_MASK) {
 		status = IXGBE_ERR_RESET_FAILED;
 		hw_dbg(hw, "Reset polling failed to complete.\n");
 	}
 
+	msleep(50);
+
 	/*
 	 * Double resets are required for recovery from certain error
 	 * conditions.  Between resets, it is necessary to stall to allow time
-	 * for any pending HW events to complete.  We use 1usec since that is
-	 * what is needed for ixgbe_disable_pcie_master().  The second reset
-	 * then clears out any effects of those events.
+	 * for any pending HW events to complete.
 	 */
 	if (hw->mac.flags & IXGBE_FLAGS_DOUBLE_RESET_REQUIRED) {
 		hw->mac.flags &= ~IXGBE_FLAGS_DOUBLE_RESET_REQUIRED;
-		udelay(1);
 		goto mac_reset_top;
 	}
 
-	/* Clear PF Reset Done bit so PF/VF Mail Ops can work */
-	ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
-	ctrl_ext |= IXGBE_CTRL_EXT_PFRSTD;
-	IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext);
-	IXGBE_WRITE_FLUSH(hw);
-
-	msleep(50);
-
 	/* Set the Rx packet buffer size. */
 	IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(0), 384 << IXGBE_RXPBSIZE_SHIFT);
 
@@ -173,31 +157,6 @@ mac_reset_top:
 	hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
 
 	/*
-	 * Store the original AUTOC/AUTOC2 values if they have not been
-	 * stored off yet.  Otherwise restore the stored original
-	 * values since the reset operation sets back to defaults.
-	 */
-	autoc = IXGBE_READ_REG(hw, IXGBE_AUTOC);
-	autoc2 = IXGBE_READ_REG(hw, IXGBE_AUTOC2);
-	if (hw->mac.orig_link_settings_stored == false) {
-		hw->mac.orig_autoc = autoc;
-		hw->mac.orig_autoc2 = autoc2;
-		hw->mac.orig_link_settings_stored = true;
-	} else {
-		if (autoc != hw->mac.orig_autoc)
-			IXGBE_WRITE_REG(hw, IXGBE_AUTOC, (hw->mac.orig_autoc |
-			                IXGBE_AUTOC_AN_RESTART));
-
-		if ((autoc2 & IXGBE_AUTOC2_UPPER_MASK) !=
-		    (hw->mac.orig_autoc2 & IXGBE_AUTOC2_UPPER_MASK)) {
-			autoc2 &= ~IXGBE_AUTOC2_UPPER_MASK;
-			autoc2 |= (hw->mac.orig_autoc2 &
-			           IXGBE_AUTOC2_UPPER_MASK);
-			IXGBE_WRITE_REG(hw, IXGBE_AUTOC2, autoc2);
-		}
-	}
-
-	/*
 	 * Store MAC address from RAR0, clear receive address registers, and
 	 * clear the multicast table.  Also reset num_rar_entries to 128,
 	 * since we modify this value when programming the SAN MAC address.
@@ -205,9 +164,6 @@ mac_reset_top:
 	hw->mac.num_rar_entries = IXGBE_X540_MAX_TX_QUEUES;
 	hw->mac.ops.init_rx_addrs(hw);
 
-	/* Store the permanent mac address */
-	hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
-
 	/* Store the permanent SAN mac address */
 	hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr);
 
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 10/11] ixgbe: cleanup configuration of EITRSEL and VF reset path
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (8 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 09/11] ixgbe: cleanup reset paths Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16  4:42 ` [net-next 11/11] ixgbe: Correctly name and handle MSI-X other interrupt Jeff Kirsher
  2011-09-16 19:20 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

This change is meant to cleanup some of the code related to SR-IOV and the
interrupt registers.  Specifically I am moving the EITRSEL configuration
into the MSI-X configuration section instead of enablement.  Also I am
fixing the VF shutdown path since it had operations in the incorrect order.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 6378d7f..0ee7d09 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1516,6 +1516,12 @@ static void ixgbe_configure_msix(struct ixgbe_adapter *adapter)
 
 	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 
+	/* Populate MSIX to EITR Select */
+	if (adapter->num_vfs > 32) {
+		u32 eitrsel = (1 << (adapter->num_vfs - 32)) - 1;
+		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITRSEL, eitrsel);
+	}
+
 	/*
 	 * Populate the IVAR table and set the ITR values to the
 	 * corresponding register.
@@ -2130,11 +2136,6 @@ static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues,
 		ixgbe_irq_enable_queues(adapter, ~0);
 	if (flush)
 		IXGBE_WRITE_FLUSH(&adapter->hw);
-
-	if (adapter->num_vfs > 32) {
-		u32 eitrsel = (1 << (adapter->num_vfs - 32)) - 1;
-		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITRSEL, eitrsel);
-	}
 }
 
 /**
@@ -2313,8 +2314,6 @@ static inline void ixgbe_irq_disable(struct ixgbe_adapter *adapter)
 		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFF0000);
 		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC_EX(0), ~0);
 		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC_EX(1), ~0);
-		if (adapter->num_vfs > 32)
-			IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITRSEL, 0);
 		break;
 	default:
 		break;
@@ -3863,17 +3862,19 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 
 	del_timer_sync(&adapter->service_timer);
 
-	/* disable receive for all VFs and wait one second */
 	if (adapter->num_vfs) {
+		/* Clear EITR Select mapping */
+		IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITRSEL, 0);
+
+		/* Mark all the VFs as inactive */
+		for (i = 0 ; i < adapter->num_vfs; i++)
+			adapter->vfinfo[i].clear_to_send = 0;
+
 		/* ping all the active vfs to let them know we are going down */
 		ixgbe_ping_all_vfs(adapter);
 
 		/* Disable all VFTE/VFRE TX/RX */
 		ixgbe_disable_tx_rx(adapter);
-
-		/* Mark all the VFs as inactive */
-		for (i = 0 ; i < adapter->num_vfs; i++)
-			adapter->vfinfo[i].clear_to_send = 0;
 	}
 
 	/* disable transmits in the hardware now that interrupts are off */
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [net-next 11/11] ixgbe: Correctly name and handle MSI-X other interrupt
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (9 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 10/11] ixgbe: cleanup configuration of EITRSEL and VF reset path Jeff Kirsher
@ 2011-09-16  4:42 ` Jeff Kirsher
  2011-09-16 19:20 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
  11 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-16  4:42 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

It was possible to inadvertently add additional interrupt causes to the
MSI-X other interrupt.  This occurred when things such as RX buffer overrun
events were being triggered at the same time as an event such as a Flow
Director table reinit request.  In order to avoid this we should be
explicitly programming only the interrupts that we want enabled.  In
addition I am renaming the ixgbe_msix_lsc function and interrupt to drop
any implied meaning of this being a link status only interrupt.

Unfortunately the patch is a bit ugly due to the fact that ixgbe_irq_enable
needed to be moved up before ixgbe_msix_other in order to have things
defined in the correct order.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe.h      |    1 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  191 +++++++++++++------------
 2 files changed, 97 insertions(+), 95 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
index 3f5a744..bfdd42b 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -491,7 +491,6 @@ struct ixgbe_adapter {
 	int node;
 	u32 led_reg;
 	u32 interrupt_event;
-	char lsc_int_name[IFNAMSIZ + 9];
 
 	/* SR-IOV */
 	DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0ee7d09..6026ab0 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1828,7 +1828,98 @@ static void ixgbe_check_lsc(struct ixgbe_adapter *adapter)
 	}
 }
 
-static irqreturn_t ixgbe_msix_lsc(int irq, void *data)
+static inline void ixgbe_irq_enable_queues(struct ixgbe_adapter *adapter,
+					   u64 qmask)
+{
+	u32 mask;
+	struct ixgbe_hw *hw = &adapter->hw;
+
+	switch (hw->mac.type) {
+	case ixgbe_mac_82598EB:
+		mask = (IXGBE_EIMS_RTX_QUEUE & qmask);
+		IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask);
+		break;
+	case ixgbe_mac_82599EB:
+	case ixgbe_mac_X540:
+		mask = (qmask & 0xFFFFFFFF);
+		if (mask)
+			IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(0), mask);
+		mask = (qmask >> 32);
+		if (mask)
+			IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(1), mask);
+		break;
+	default:
+		break;
+	}
+	/* skip the flush */
+}
+
+static inline void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter,
+					    u64 qmask)
+{
+	u32 mask;
+	struct ixgbe_hw *hw = &adapter->hw;
+
+	switch (hw->mac.type) {
+	case ixgbe_mac_82598EB:
+		mask = (IXGBE_EIMS_RTX_QUEUE & qmask);
+		IXGBE_WRITE_REG(hw, IXGBE_EIMC, mask);
+		break;
+	case ixgbe_mac_82599EB:
+	case ixgbe_mac_X540:
+		mask = (qmask & 0xFFFFFFFF);
+		if (mask)
+			IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(0), mask);
+		mask = (qmask >> 32);
+		if (mask)
+			IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(1), mask);
+		break;
+	default:
+		break;
+	}
+	/* skip the flush */
+}
+
+/**
+ * ixgbe_irq_enable - Enable default interrupt generation settings
+ * @adapter: board private structure
+ **/
+static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues,
+				    bool flush)
+{
+	u32 mask = (IXGBE_EIMS_ENABLE_MASK & ~IXGBE_EIMS_RTX_QUEUE);
+
+	/* don't reenable LSC while waiting for link */
+	if (adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)
+		mask &= ~IXGBE_EIMS_LSC;
+
+	if (adapter->flags2 & IXGBE_FLAG2_TEMP_SENSOR_CAPABLE)
+		mask |= IXGBE_EIMS_GPI_SDP0;
+	if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE)
+		mask |= IXGBE_EIMS_GPI_SDP1;
+	switch (adapter->hw.mac.type) {
+	case ixgbe_mac_82599EB:
+	case ixgbe_mac_X540:
+		mask |= IXGBE_EIMS_ECC;
+		mask |= IXGBE_EIMS_GPI_SDP1;
+		mask |= IXGBE_EIMS_GPI_SDP2;
+		mask |= IXGBE_EIMS_MAILBOX;
+		break;
+	default:
+		break;
+	}
+	if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) &&
+	    !(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT))
+		mask |= IXGBE_EIMS_FLOW_DIR;
+
+	IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask);
+	if (queues)
+		ixgbe_irq_enable_queues(adapter, ~0);
+	if (flush)
+		IXGBE_WRITE_FLUSH(&adapter->hw);
+}
+
+static irqreturn_t ixgbe_msix_other(int irq, void *data)
 {
 	struct ixgbe_adapter *adapter = data;
 	struct ixgbe_hw *hw = &adapter->hw;
@@ -1852,6 +1943,9 @@ static irqreturn_t ixgbe_msix_lsc(int irq, void *data)
 	switch (hw->mac.type) {
 	case ixgbe_mac_82599EB:
 	case ixgbe_mac_X540:
+		if (eicr & IXGBE_EICR_ECC)
+			e_info(link, "Received unrecoverable ECC Err, please "
+			       "reboot\n");
 		/* Handle Flow Director Full threshold interrupt */
 		if (eicr & IXGBE_EICR_FLOW_DIR) {
 			int reinit_count = 0;
@@ -1865,7 +1959,6 @@ static irqreturn_t ixgbe_msix_lsc(int irq, void *data)
 			if (reinit_count) {
 				/* no more flow director interrupts until after init */
 				IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_EIMC_FLOW_DIR);
-				eicr &= ~IXGBE_EICR_FLOW_DIR;
 				adapter->flags2 |= IXGBE_FLAG2_FDIR_REQUIRES_REINIT;
 				ixgbe_service_event_schedule(adapter);
 			}
@@ -1888,64 +1981,11 @@ static irqreturn_t ixgbe_msix_lsc(int irq, void *data)
 
 	/* re-enable the original interrupt state, no lsc, no queues */
 	if (!test_bit(__IXGBE_DOWN, &adapter->state))
-		IXGBE_WRITE_REG(hw, IXGBE_EIMS, eicr &
-		                ~(IXGBE_EIMS_LSC | IXGBE_EIMS_RTX_QUEUE));
+		ixgbe_irq_enable(adapter, false, false);
 
 	return IRQ_HANDLED;
 }
 
-static inline void ixgbe_irq_enable_queues(struct ixgbe_adapter *adapter,
-					   u64 qmask)
-{
-	u32 mask;
-	struct ixgbe_hw *hw = &adapter->hw;
-
-	switch (hw->mac.type) {
-	case ixgbe_mac_82598EB:
-		mask = (IXGBE_EIMS_RTX_QUEUE & qmask);
-		IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask);
-		break;
-	case ixgbe_mac_82599EB:
-	case ixgbe_mac_X540:
-		mask = (qmask & 0xFFFFFFFF);
-		if (mask)
-			IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(0), mask);
-		mask = (qmask >> 32);
-		if (mask)
-			IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(1), mask);
-		break;
-	default:
-		break;
-	}
-	/* skip the flush */
-}
-
-static inline void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter,
-					    u64 qmask)
-{
-	u32 mask;
-	struct ixgbe_hw *hw = &adapter->hw;
-
-	switch (hw->mac.type) {
-	case ixgbe_mac_82598EB:
-		mask = (IXGBE_EIMS_RTX_QUEUE & qmask);
-		IXGBE_WRITE_REG(hw, IXGBE_EIMC, mask);
-		break;
-	case ixgbe_mac_82599EB:
-	case ixgbe_mac_X540:
-		mask = (qmask & 0xFFFFFFFF);
-		if (mask)
-			IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(0), mask);
-		mask = (qmask >> 32);
-		if (mask)
-			IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(1), mask);
-		break;
-	default:
-		break;
-	}
-	/* skip the flush */
-}
-
 static irqreturn_t ixgbe_msix_clean_rings(int irq, void *data)
 {
 	struct ixgbe_q_vector *q_vector = data;
@@ -2077,9 +2117,8 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 		}
 	}
 
-	sprintf(adapter->lsc_int_name, "%s:lsc", netdev->name);
 	err = request_irq(adapter->msix_entries[vector].vector,
-			  ixgbe_msix_lsc, 0, adapter->lsc_int_name, adapter);
+			  ixgbe_msix_other, 0, netdev->name, adapter);
 	if (err) {
 		e_err(probe, "request_irq for msix_lsc failed: %d\n", err);
 		goto free_queue_irqs;
@@ -2103,42 +2142,6 @@ free_queue_irqs:
 }
 
 /**
- * ixgbe_irq_enable - Enable default interrupt generation settings
- * @adapter: board private structure
- **/
-static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues,
-				    bool flush)
-{
-	u32 mask;
-
-	mask = (IXGBE_EIMS_ENABLE_MASK & ~IXGBE_EIMS_RTX_QUEUE);
-	if (adapter->flags2 & IXGBE_FLAG2_TEMP_SENSOR_CAPABLE)
-		mask |= IXGBE_EIMS_GPI_SDP0;
-	if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE)
-		mask |= IXGBE_EIMS_GPI_SDP1;
-	switch (adapter->hw.mac.type) {
-	case ixgbe_mac_82599EB:
-	case ixgbe_mac_X540:
-		mask |= IXGBE_EIMS_ECC;
-		mask |= IXGBE_EIMS_GPI_SDP1;
-		mask |= IXGBE_EIMS_GPI_SDP2;
-		if (adapter->num_vfs)
-			mask |= IXGBE_EIMS_MAILBOX;
-		break;
-	default:
-		break;
-	}
-	if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)
-		mask |= IXGBE_EIMS_FLOW_DIR;
-
-	IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask);
-	if (queues)
-		ixgbe_irq_enable_queues(adapter, ~0);
-	if (flush)
-		IXGBE_WRITE_FLUSH(&adapter->hw);
-}
-
-/**
  * ixgbe_intr - legacy mode Interrupt Handler
  * @irq: interrupt number
  * @data: pointer to a network interface device structure
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
                   ` (10 preceding siblings ...)
  2011-09-16  4:42 ` [net-next 11/11] ixgbe: Correctly name and handle MSI-X other interrupt Jeff Kirsher
@ 2011-09-16 19:20 ` David Miller
  11 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2011-09-16 19:20 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 15 Sep 2011 21:42:42 -0700

> The following series contains updates to ixgbe only.  These are primarily
> cleanups of the ixgbe driver.  The first two patches of the series:
> 
>   ixgbe: Change default Tx work limit size to 256 buffers
>   ixgbe: consolidate all MSI-X ring interrupts and poll routines into one
> 
> are re-worked based on previous community feedback (Dave and Ben).
> 
> The following are changes since commit 4bc71cb983fd2844e603bf633df2bb53385182d2:
>   net: consolidate and fix ethtool_ops->get_settings calling
> and are available in the git repository at:
>   git://github.com/Jkirsher/net-next.git

Pulled, thanks Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2014-05-14  8:54 Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2014-05-14  8:54 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series contains updates to igb, igbvf, ixgbe, i40e and i40evf.

Emil provides a ixgbe patch to fix the detection of SFP+ capable interfaces
by identifying 82599 based NICs with no PHY type set as SFP capable which
allows the driver to detect the SFP module when the interface is brought
up.

Jacob provides eight patches to cleanup the ixgbe driver to resolve various
checkpatch.pl warnings/errors as well as minor coding style issues.

Stephen Hemminger and I provide simple cleanups of void functions which
had useless return statements at the end of the function which are not
needed.

The following are changes since commit 86b5d251d5ac4dda51a022b34cb29b4ce65a8cd5:
  sh_eth: replace devm_kzalloc() with devm_kmalloc_array()
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Emil Tantilov (1):
  ixgbe: fix detection of SFP+ capable interfaces

Jacob Keller (8):
  ixgbe: clean up checkpatch warnings about CODE_INDENT and
    LEADING_SPACE
  ixgbe: fix function-like macro, remove semicolon
  ixgbe: fix checkpatch style of blank line after declaration
  ixgbe: fix several concatenated strings to single line
  ixgbe: add braces around else block
  ixgbe: don't check NULL for debugfs_remove_recursive
  ixgbe: add space between operands to &
  ixgbe: add /* fallthrough */ comment to case statements

Jeff Kirsher (1):
  igb/ixgbe: remove return statements for void functions

Stephen Hemminger (1):
  i40e,igb,ixgbe: remove usless return statements

 drivers/net/ethernet/intel/i40e/i40e_main.c        |  4 -
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  4 -
 drivers/net/ethernet/intel/igb/e1000_nvm.c         |  1 -
 drivers/net/ethernet/intel/igb/igb_main.c          |  1 -
 drivers/net/ethernet/intel/igbvf/ethtool.c         |  1 -
 drivers/net/ethernet/intel/ixgbe/ixgbe.h           |  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c     | 62 ++++++++-------
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c     | 85 ++++++++++----------
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.c    | 45 +++++------
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.h    | 16 ++--
 drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c       |  3 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h | 24 +++---
 drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c    | 28 +++----
 drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c   |  3 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c   | 90 ++++++++++------------
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c       |  4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c      |  8 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c       | 10 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h       |  6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c       | 68 ++++++++--------
 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h       | 32 ++++----
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c     |  4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h      | 60 +++++++--------
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c      | 15 ++--
 24 files changed, 275 insertions(+), 301 deletions(-)

-- 
1.9.0

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2013-10-29 12:02 Jeff Kirsher
@ 2013-10-29 22:58 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2013-10-29 22:58 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 29 Oct 2013 05:02:20 -0700

> This series contains updates to vxlan, net, ixgbe, ixgbevf, and i40e.

Pulled, thanks a lot Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next  00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-10-29 12:02 Jeff Kirsher
  2013-10-29 22:58 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2013-10-29 12:02 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series contains updates to vxlan, net, ixgbe, ixgbevf, and i40e.

Joseph provides a single patch against vxlan which removes the burden
from the NIC drivers to check if the vxlan driver is enabled in the
kernel and also makes available the vxlan headrooms to the drivers.

Jacob provides majority of the patches, with patches against net, ixgbe
and ixgbevf.  His net patch adds might_sleep() call to napi_disable so
that every use of napi_disable during atomic context will be visible.
Then Jacob provides a patch to fix qv_lock_napi call in
ixgbe_napi_disable_all.  The other ixgbe patches cleanup
ixgbe_check_minimum_link function to correctly show that there are some
minor loss of encoding, even though we don't calculate it and remove
unnecessary duplication of PCIe bandwidth display.  Lastly, Jacob
provides 4 patches against ixgbevf to add ixgbevf_rx_skb in line with
how ixgbe handles the variations on how packets can be received, adds
support in order to track how many packets were cleaned during busy poll
as part of the extended statistics.

Wei Yongjun provides a fix for i40e to return -ENOMEN in the memory
allocation error handling case instead of returning 0, as done
elsewhere in this function.

The following are changes since commit cdfb97bc010d9e9d994eb68f2cbac3a8ada26104:
  net, mc: fix the incorrect comments in two mc-related functions
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Don Skidmore (1):
  ixgbevf: Add zero_base handler to network statistics

Jacob Keller (8):
  net: add might_sleep() call to napi_disable
  ixgbe: fix qv_lock_napi call in ixgbe_napi_disable_all
  ixgbe: show <2% for encoding loss on PCIe Gen3
  ixgbe: remove unnecessary duplication of PCIe bandwidth display
  ixgbevf: add ixgbevf_rx_skb
  ixgbevf: have clean_rx_irq return total_rx_packets cleaned
  ixgbevf: implement CONFIG_NET_RX_BUSY_POLL
  ixgbevf: add BP_EXTENDED_STATS for CONFIG_NET_RX_BUSY_POLL

Joseph Gasparakis (1):
  vxlan: Have the NIC drivers do less work for offloads

Wei Yongjun (1):
  i40e: fix error return code in i40e_probe()

 drivers/net/ethernet/intel/i40e/i40e_main.c       |   4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe.h          |  48 ++++++--
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c     |  46 +++-----
 drivers/net/ethernet/intel/ixgbevf/ethtool.c      |  98 +++++++++++-----
 drivers/net/ethernet/intel/ixgbevf/ixgbevf.h      | 132 +++++++++++++++++++++-
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 103 +++++++++++++++--
 drivers/net/vxlan.c                               |   4 -
 include/linux/netdevice.h                         |   1 +
 include/net/vxlan.h                               |  11 ++
 9 files changed, 366 insertions(+), 81 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2013-10-24 15:27 Jeff Kirsher
@ 2013-10-26  4:30 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2013-10-26  4:30 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 24 Oct 2013 08:27:27 -0700

> This series contains updates to igb, igbvf, i40e, ixgbe and ixgbevf.

Pulled, thanks a lot Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-10-24 15:27 Jeff Kirsher
  2013-10-26  4:30 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2013-10-24 15:27 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series contains updates to igb, igbvf, i40e, ixgbe and ixgbevf.

Dan Carpenter provides a patch for igbvf to fix a bug found by a static
checker.  If the new MTU is very large, then "new_mtu + ETH_HLEN +
ETH_FCS_LEN" can wrap and the check on the next line can underflow.

Wei Yongjun provides 2 patches, the first against igbvf adds a missing
iounmap() before the return from igbvf_probe().  The second against
i40e, removes the include <linux/version.h> because it is not needed.

Carolyn provides a patch for igb to fix a call to set the master/slave
mode for all m88 generation 2 PHY's and removes the call for I210
devices which do not need it.

Stefan Assmann provides a patch for igb to fix an issue which was broke
by:
   commit fa44f2f185f7f9da19d331929bb1b56c1ccd1d93
   Author: Greg Rose <gregory.v.rose@intel.com>
   Date:   Thu Jan 17 01:03:06 2013 -0800
   igb: Enable SR-IOV configuration via PCI sysfs interface
which breaks the reloading of igb when VFs are assigned to a guest, in
several ways.

Jacob provides a patch for ixgbe and ixgbevf.  First, against ixgbe,
cleans up ixgbe_enumerate_functions to reduce code complexity.  The
second, against ixgbevf, adds support for ethtool's get_coalesce and
set_coalesce command for the ixgbevf driver.

Yijing Wang provides a patch for ixgbe to use pcie_capability_read_word()
to simplify the code.

Emil provides a ixgbe patch to fix an issue where the logic used to
detect changes in rx-usecs was incorrect and was masked by the call to
ixgbe_update_rsc().

Don provides 2 patches for ixgbevf.  First creates a new function to set
PSRTYPE.  The second bumps the ixgbevf driver version.

The following are changes since commit b45bd46decd947eaa3497699d450e0851d247534:
  Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Carolyn Wyborny (1):
  igb: Fix master/slave mode for all m88 i354 PHY's

Dan Carpenter (1):
  igbvf: integer wrapping bug setting the mtu

Don Skidmore (2):
  ixgbevf: Adds function to set PSRTYPE register
  ixgbevf: bump driver version

Emil Tantilov (1):
  ixgbe: fix rx-usecs range checks for BQL

Jacob Keller (2):
  ixgbe: cleanup ixgbe_enumerate_functions
  ixgbevf: implement ethtool get/set coalesce

Stefan Assmann (1):
  igb: fix driver reload with VF assigned to guest

Wei Yongjun (2):
  igbvf: add missing iounmap() on error in igbvf_probe()
  i40e: remove unused including <linux/version.h>

Yijing Wang (1):
  ixgbe: use pcie_capability_read_word() to simplify code

 drivers/net/ethernet/intel/i40e/i40e.h            |  1 -
 drivers/net/ethernet/intel/igb/e1000_phy.c        |  8 +--
 drivers/net/ethernet/intel/igb/igb_main.c         | 37 +++++------
 drivers/net/ethernet/intel/igbvf/netdev.c         |  8 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c  |  6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c     | 19 ++----
 drivers/net/ethernet/intel/ixgbevf/ethtool.c      | 81 +++++++++++++++++++++++
 drivers/net/ethernet/intel/ixgbevf/ixgbevf.h      |  2 +
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 22 ++++--
 9 files changed, 134 insertions(+), 50 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-04-12 11:24 Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2013-04-12 11:24 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series contains updates to ixgbe only.

My previous pull request had a mix of ixgbe and igb patches, and
while Akeem works on the changes requested on the igb patches, I
going ahead and re-submitting the originally submitted ixgbe patches
with several other ixgbe patches.

Alex provides a performance improvement with the enabling the use of
build_skb for instances where jumbo frames are disabled.  In addition,
Alex provides a fix where we were incorrectly checking the entire frag_off
field when we only wanted the fragment offset.  Lastly, he cleans up
the check for PAGE_SIZE, since the default configuration allocates 32K
for all buffers.

Emil provides a change to the calculation of eerd so that it is consistent
between the read and write functions by using | instead of +.

Jacob adds support for displaying PCIe Gen3 link speed, which was
previously missing from the ixgbe driver.  He also provides a patch
to clean up ixgbe_get_bus_info_generic to call some conversion
functions, which are used also in another patch provided by Jacob.
Jacob modifies the driver to enable certain devices (which have an
internal switch) to read from the physical slot rather than reading
data from the internal switch.  Lastly, Jacob adds a function which
enables the ixgbe driver to walk up the PCI bus for the device and
query the PCI config space for the bus width at each point.


Don provides a couple of fixes (which are more appropriate for net-next),
one of which resolves an issue where ixgbe was only turning on the laser
when the adapter was up which caused issues for those who wanted to
access the MNG firmware while the port was in a down state.  The other
fix is for WoL when currently linked at 1G.  Lastly Don bumps the driver
version keep the in-kernel driver up to date with the current functionality.

The following are changes since commit 6c6779856a294649dbb468ef46e893e80b0d72ad:
  Revert "netprio_cgroup: make local table static"
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Alexander Duyck (3):
  ixgbe: Support using build_skb in the case that jumbo frames are
    disabled
  ixgbe: Mask off check of frag_off as we only want fragment offset
  ixgbe: Drop check for PAGE_SIZE from ixgbe_xmit_frame_ring

Don Skidmore (3):
  ixgbe: fix MNG FW support when adapter not up
  ixgbe: Fix 1G link WoL
  ixgbe: bump version number

Emil Tantilov (1):
  ixgbe: don't do arithmetic operations on bitmasks

Jacob Keller (4):
  ixgbe: Enable support for recognizing PCI-e Gen3 link speed
  ixgbe: create conversion functions from link_status to bus/speed
  ixgbe: enable devices with internal switch to read pci parent
  ixgbe: walk pci-e bus to find minimum width

 drivers/net/ethernet/intel/ixgbe/ixgbe.h        |   7 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c  |   1 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c  |  51 ++++-
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.c |  63 +++---
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.h |   2 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c   | 289 ++++++++++++++++++++----
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h   |  13 ++
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c   |   1 +
 8 files changed, 343 insertions(+), 84 deletions(-)

-- 
1.7.11.7

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2012-11-13 14:03 Jeff Kirsher
@ 2012-11-13 19:19 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2012-11-13 19:19 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 13 Nov 2012 06:03:14 -0800

> This series contains updates to ixgbe, ixgbevf and igb.
> 
> The following are changes since commit 9fafd65ad407d4e0c96919a325f568dd95d032af:
>   ipv6 ndisc: Use pre-defined in6addr_linklocal_allnodes.
> and are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Pulled, but I have some long term feedback to give on one of the
patches, thanks.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-11-13 14:03 Jeff Kirsher
  2012-11-13 19:19 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series contains updates to ixgbe, ixgbevf and igb.

The following are changes since commit 9fafd65ad407d4e0c96919a325f568dd95d032af:
  ipv6 ndisc: Use pre-defined in6addr_linklocal_allnodes.
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Akeem G. Abodunrin (2):
  igb: Support for modifying UDP RSS flow hashing
  igb: Ethtool support to enable and disable EEE

Alexander Duyck (4):
  ixgbe: Do not use DCA to prefetch the entire packet into the cache
  igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check
  igb: Update igb Tx flags to improve code efficiency
  igb: Improve performance and reduce size of igb_tx_map

Carolyn Wyborny (1):
  igb: Clear Go Link Disconnect for 82580 and later devices

Emil Tantilov (1):
  ixgbevf: fix possible use of uninitialized variable

Greg Rose (2):
  ixgbevf: Add flag to indicate when rx is in net poll
  ixgbevf: Reduce size of maximum rx buffer

Jakub Kicinski (1):
  ixgbevf: make sure probe fails on MSI-X enable error

 drivers/net/ethernet/intel/igb/e1000_82575.c      |   8 +
 drivers/net/ethernet/intel/igb/e1000_defines.h    |   1 +
 drivers/net/ethernet/intel/igb/e1000_phy.h        |   1 +
 drivers/net/ethernet/intel/igb/igb.h              |  31 ++-
 drivers/net/ethernet/intel/igb/igb_ethtool.c      | 281 ++++++++++++++++++++++
 drivers/net/ethernet/intel/igb/igb_main.c         | 124 +++++-----
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c     |   1 -
 drivers/net/ethernet/intel/ixgbevf/ixgbevf.h      |   9 +-
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |  54 +++--
 9 files changed, 412 insertions(+), 98 deletions(-)

-- 
1.7.11.7

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2012-02-25  5:49 Jeff Kirsher
@ 2012-02-26  1:31 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2012-02-26  1:31 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 24 Feb 2012 21:49:49 -0800

> This series of patches contains cleanups of the e1000e driver.
> 
> The following are changes since commit 5d74f1757001f5b9a7739c2a9053435e16ce516b:
>   Staging: wlags49_h2: print MAC via printk format specifier
> and are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Pulled, thanks Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-02-25  5:49 Jeff Kirsher
  2012-02-26  1:31 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2012-02-25  5:49 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

This series of patches contains cleanups of the e1000e driver.

The following are changes since commit 5d74f1757001f5b9a7739c2a9053435e16ce516b:
  Staging: wlags49_h2: print MAC via printk format specifier
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Bruce Allan (11):
  e1000e: cleanup: rename e1000e_id_led_init() and call as function
    pointer
  e1000e: cleanup: rename e1000e_setup_link() and call as function
    pointer
  e1000e: cleanup use of check_mng_mode function pointer
  e1000e: cleanup use of check_reset_block function pointer
  e1000e: cleanup calls to setup_physical_interface function pointer
  e1000e: comment correction in
    e1000e_set_kmrn_lock_loss_workaround_ich8lan
  e1000e: rename e1000e_config_collision_dist() and call as function
    pointer
  e1000e: cleanup comment in e1000_hash_mc_addr()
  e1000e: use true/false for boolean send_xon, do not assume always
    true
  e1000e: cleanup - remove unnecessary variable
  e1000e: rename e1000e_reload_nvm() and call as function pointer

 drivers/net/ethernet/intel/e1000e/80003es2lan.c |   12 +++++---
 drivers/net/ethernet/intel/e1000e/82571.c       |   10 ++++---
 drivers/net/ethernet/intel/e1000e/e1000.h       |   18 +++----------
 drivers/net/ethernet/intel/e1000e/ethtool.c     |    6 +++-
 drivers/net/ethernet/intel/e1000e/hw.h          |    2 +
 drivers/net/ethernet/intel/e1000e/ich8lan.c     |   32 ++++++++++++----------
 drivers/net/ethernet/intel/e1000e/mac.c         |   31 ++++++++++-----------
 drivers/net/ethernet/intel/e1000e/manage.c      |    4 +-
 drivers/net/ethernet/intel/e1000e/netdev.c      |    8 +++---
 drivers/net/ethernet/intel/e1000e/nvm.c         |    4 +-
 drivers/net/ethernet/intel/e1000e/phy.c         |    6 ++--
 11 files changed, 66 insertions(+), 67 deletions(-)

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2012-02-07 12:33 Jeff Kirsher
@ 2012-02-07 17:27 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2012-02-07 17:27 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue,  7 Feb 2012 04:33:47 -0800

> The following series contains updates to e1000, igbvf and e1000e.
> Majority of the updates are to e1000e and do the following:
>  - cleanup 82571 and 80003es2lan code
>  - fix checkpatch and sparse warnings
>  - fix whitespace/indentation
>  - add missing initializers
> 
> The following are changes since commit 59d74026fa4b5df72a268f1e9578af500154ad07:
>   Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
> and are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Pulled, thanks Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-02-07 12:33 Jeff Kirsher
  2012-02-07 17:27 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2012-02-07 12:33 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

The following series contains updates to e1000, igbvf and e1000e.
Majority of the updates are to e1000e and do the following:
 - cleanup 82571 and 80003es2lan code
 - fix checkpatch and sparse warnings
 - fix whitespace/indentation
 - add missing initializers

The following are changes since commit 59d74026fa4b5df72a268f1e9578af500154ad07:
  Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Bruce Allan (9):
  e1000e: add missing initializers reported when compiling with W=1
  e1000e: cleanup - check return values consistently
  e1000e: cleanup e1000_init_mac_params_80003es2lan()
  e1000e: cleanup e1000_init_mac_params_82571()
  e1000e: cleanup e1000_set_phys_id
  e1000e: cleanup - use braces in both branches of a conditional
    statement
  e1000e: fix checkpatch warning from MINMAX test
  e1000e: fix sparse warnings with -D__CHECK_ENDIAN__
  e1000e: minor whitespace and indentation cleanup

Mitch A Williams (1):
  igbvf: refactor Interrupt Throttle Rate code

Tushar Dave (1):
  e1000: Adding e1000_dump function

 drivers/net/ethernet/intel/e1000/e1000.h        |    1 +
 drivers/net/ethernet/intel/e1000/e1000_hw.h     |   10 +
 drivers/net/ethernet/intel/e1000/e1000_main.c   |  224 +++++++++++++++++++++++
 drivers/net/ethernet/intel/e1000e/80003es2lan.c |   28 +--
 drivers/net/ethernet/intel/e1000e/82571.c       |   72 +++-----
 drivers/net/ethernet/intel/e1000e/ethtool.c     |    8 +-
 drivers/net/ethernet/intel/e1000e/ich8lan.c     |   12 +-
 drivers/net/ethernet/intel/e1000e/netdev.c      |  104 ++++++-----
 drivers/net/ethernet/intel/igbvf/ethtool.c      |   19 +-
 drivers/net/ethernet/intel/igbvf/igbvf.h        |   27 ++--
 drivers/net/ethernet/intel/igbvf/netdev.c       |  131 ++++++++------
 11 files changed, 438 insertions(+), 198 deletions(-)

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2012-01-27  3:08 Jeff Kirsher
@ 2012-01-28  1:47 ` David Miller
  0 siblings, 0 replies; 33+ messages in thread
From: David Miller @ 2012-01-28  1:47 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 26 Jan 2012 19:08:38 -0800

> The following series contains updates to e1000e only.  This is the
> second batch of e1000e patches and these changes contain
> fixups/cleanups/conversions.  Most notably is the split up of lib.c
> into mac.c, manage.c and nvm.c.
> 
> The following are changes since commit a7563f342db6490e66dbf2c8a50577a72a158c9a:
>   ipv6: Use ipv6_addr_any()
> and are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Pulled, thanks Jeff.

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-01-27  3:08 Jeff Kirsher
  2012-01-28  1:47 ` David Miller
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2012-01-27  3:08 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

The following series contains updates to e1000e only.  This is the
second batch of e1000e patches and these changes contain
fixups/cleanups/conversions.  Most notably is the split up of lib.c
into mac.c, manage.c and nvm.c.

The following are changes since commit a7563f342db6490e66dbf2c8a50577a72a158c9a:
  ipv6: Use ipv6_addr_any()
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Bruce Allan (11):
  e1000e: disable Early Receive DMA on ICH LOMs
  e1000e: update workaround for 82579 intermittently disabled during
    S0->Sx
  e1000e: ICHx/PCHx LOMs should use LPLU setting in NVM when going to
    Sx
  e1000e: increase Rx PBA to prevent dropping received packets on
    82566/82567
  e1000e: conditionally restart autoneg on 82577/8/9 when setting LPLU
    state
  e1000e: concatenate long debug strings which span multiple lines
  e1000e: convert final strncpy() to strlcpy()
  e1000e: increase version number
  e1000e: call er16flash() instead of __er16flash()
  e1000e: split lib.c into three more-appropriate files
  e1000e: update copyright year

 drivers/net/ethernet/intel/e1000e/80003es2lan.c    |    5 +-
 drivers/net/ethernet/intel/e1000e/82571.c          |    2 +-
 drivers/net/ethernet/intel/e1000e/Makefile         |    5 +-
 drivers/net/ethernet/intel/e1000e/defines.h        |    2 +-
 drivers/net/ethernet/intel/e1000e/e1000.h          |    4 +-
 drivers/net/ethernet/intel/e1000e/ethtool.c        |    2 +-
 drivers/net/ethernet/intel/e1000e/hw.h             |    2 +-
 drivers/net/ethernet/intel/e1000e/ich8lan.c        |  141 ++--
 drivers/net/ethernet/intel/e1000e/{lib.c => mac.c} | 1041 +-------------------
 drivers/net/ethernet/intel/e1000e/manage.c         |  377 +++++++
 drivers/net/ethernet/intel/e1000e/netdev.c         |   72 +-
 drivers/net/ethernet/intel/e1000e/nvm.c            |  647 ++++++++++++
 drivers/net/ethernet/intel/e1000e/param.c          |    2 +-
 drivers/net/ethernet/intel/e1000e/phy.c            |    5 +-
 14 files changed, 1168 insertions(+), 1139 deletions(-)
 rename drivers/net/ethernet/intel/e1000e/{lib.c => mac.c} (64%)
 create mode 100644 drivers/net/ethernet/intel/e1000e/manage.c
 create mode 100644 drivers/net/ethernet/intel/e1000e/nvm.c

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-01-03 19:19 Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2012-01-03 19:19 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

The following series contains updates to e1000, e1000e, igb and
netdev/ixgbe.  There are 2 fixes and the remaining patches are
either add support or cleanup.

Here is a list of the new support added:
 - igb adds support for byte queue limits and basic runtime PM
 - e1000e adds Receive Packet Steering (RPS)
 - FCoE adds ndo_get_fcoe_hbainfo() call

The following are changes since commit fa0f5aa74316c636427ac92dad0bc5714c34ca17:
  net_sched: qdisc_alloc_handle() can be too slow
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

Bruce Allan (5):
  e1000e: cleanup Rx checksum offload code
  e1000e: add Receive Packet Steering (RPS) support
  e1000e: re-enable alternate MAC address for all devices which support
    it
  e1000e: convert head, tail and itr_register offsets to __iomem
    pointers
  e1000e: pass pointer to ring struct instead of adapter struct

Eric Dumazet (1):
  igb: Add support for byte queue limits.

Jesse Brandeburg (1):
  e1000: fix lockdep splat in shutdown handler

Koki Sanagi (1):
  igb: reset PHY after recovering from PHY power down

Neerav Parikh (2):
  netdev: FCoE: Add new ndo_get_fcoe_hbainfo() call
  ixgbe: FCoE: Add support for ndo_get_fcoe_hbainfo() call

Yan, Zheng (1):
  igb: add basic runtime PM support

 drivers/net/ethernet/intel/e1000/e1000_main.c |    8 +-
 drivers/net/ethernet/intel/e1000e/defines.h   |    7 +
 drivers/net/ethernet/intel/e1000e/e1000.h     |   27 +-
 drivers/net/ethernet/intel/e1000e/ethtool.c   |   10 +-
 drivers/net/ethernet/intel/e1000e/hw.h        |    9 +-
 drivers/net/ethernet/intel/e1000e/lib.c       |    7 +-
 drivers/net/ethernet/intel/e1000e/netdev.c    |  397 +++++++++++++++----------
 drivers/net/ethernet/intel/igb/igb.h          |    5 +
 drivers/net/ethernet/intel/igb/igb_ethtool.c  |   16 +
 drivers/net/ethernet/intel/igb/igb_main.c     |  142 ++++++++--
 drivers/net/ethernet/intel/ixgbe/ixgbe.h      |    3 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c |   83 +++++
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    5 +-
 include/linux/netdevice.h                     |   26 ++
 14 files changed, 541 insertions(+), 204 deletions(-)

-- 
1.7.7.4

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2011-10-08  6:47 Jeff Kirsher
@ 2011-10-08  6:52 ` Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-10-08  6:52 UTC (permalink / raw)
  To: davem; +Cc: netdev, gospo, sassmann

[-- Attachment #1: Type: text/plain, Size: 715 bytes --]

On Fri, 2011-10-07 at 23:47 -0700, Kirsher, Jeffrey T wrote:
> The following series contains updates to igb only.  They are a
> continuation of the cleanups and refactoring that Alex has done.
> After this series there are 4-5 more patches to complete the work
> that Alex has done on igb.
> 
> The following are changes since commit
> 1d0861acfb24d0ca0661ff5a156b992b2c589458:
>   Add ethtool -g support to 8139cp
> and are available in the git repository at
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
> or
>   git://github.com/Jkirsher/net-next.git 

Even though I have my kernel.org tree back up and running, I will keep
the github tree's updated (at least for now).

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-10-08  6:47 Jeff Kirsher
  2011-10-08  6:52 ` Jeff Kirsher
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2011-10-08  6:47 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann

The following series contains updates to igb only.  They are a
continuation of the cleanups and refactoring that Alex has done.
After this series there are 4-5 more patches to complete the work
that Alex has done on igb.

The following are changes since commit 1d0861acfb24d0ca0661ff5a156b992b2c589458:
  Add ethtool -g support to 8139cp
and are available in the git repository at
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
or
  git://github.com/Jkirsher/net-next.git

Alexander Duyck (11):
  igb: push data into first igb_tx_buffer sooner to reduce stack usage
  igb: Use node specific allocations for the q_vectors and rings
  igb: avoid unnecessary conversions from u16 to int
  igb: Consolidate all of the ring feature flags into a single value
  igb: Move ITR related data into work container within the q_vector
  igb: cleanup IVAR configuration
  igb: retire the RX_CSUM flag and use the netdev flag instead
  igb: leave staterr in place and instead us a helper function to check
    bits
  igb: fix recent VLAN changes that would leave VLANs disabled after
    reset
  igb: move TX hang check flag into ring->flags
  igb: add support for NETIF_F_RXHASH

 drivers/net/ethernet/intel/igb/e1000_defines.h |    3 +
 drivers/net/ethernet/intel/igb/igb.h           |   53 ++-
 drivers/net/ethernet/intel/igb/igb_ethtool.c   |   14 +-
 drivers/net/ethernet/intel/igb/igb_main.c      |  675 +++++++++++++-----------
 4 files changed, 411 insertions(+), 334 deletions(-)

-- 
1.7.6.4

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
  2011-09-30  5:24 Jeff Kirsher
@ 2011-09-30 18:35 ` Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-30 18:35 UTC (permalink / raw)
  To: davem; +Cc: netdev, gospo

[-- Attachment #1: Type: text/plain, Size: 2427 bytes --]

On Thu, 2011-09-29 at 22:24 -0700, Kirsher, Jeffrey T wrote:
> The following series contains updates to e1000e and ixgbe. The one
> patch for e1000e makes function tables const, thanks to Stephen
> Hemminger for reporting this.  The remaining patches are for ixgbe,
> and the contain the following:
> 
>  - minor cleanups
>  - add support for 82599 device and ethtool -E support
>  - removal of a PHY which is not used in production silicon
> 
> The following are changes since commit 56fd49e399ce1d82200fad5b8924d4e35a587809:
>   bna: Driver Version changed to 3.0.2.2
> and are available in the git repository at
>   git://github.com/Jkirsher/net-next.git
> 
> Emil Tantilov (8):
>   ixgbe: prevent link checks while resetting
>   ixgbe: clear the data field in ixgbe_read_i2c_byte_generic
>   ixgbe: remove return code for functions that always return 0
>   ixgbe: add support for new 82599 device
>   ixgbe: send MFLCN to ethtool
>   ixgbe: do not disable flow control in ixgbe_check_mac_link
>   ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599
>   ixgbe: allow eeprom writes via ethtool
> 
> Jacob Keller (1):
>   ixgbe: fix driver version initialization in firmware
> 
> Jeff Kirsher (1):
>   e1000e: make function tables const
> 
> Mika Lansirinne (1):
>   ixgbe: get pauseparam autoneg
> 
>  drivers/net/ethernet/intel/e1000e/80003es2lan.c  |    8 +-
>  drivers/net/ethernet/intel/e1000e/82571.c        |   20 +++---
>  drivers/net/ethernet/intel/e1000e/e1000.h        |   28 ++++----
>  drivers/net/ethernet/intel/e1000e/ich8lan.c      |   16 +++---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c   |    8 +--
>  drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c   |    7 +--
>  drivers/net/ethernet/intel/ixgbe/ixgbe_common.c  |    6 --
>  drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c |   74 +++++++++++++++++++---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    |   12 +++-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c     |   33 +++-------
>  drivers/net/ethernet/intel/ixgbe/ixgbe_type.h    |    1 +
>  drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c    |    1 +
>  12 files changed, 125 insertions(+), 89 deletions(-)
> 

Currently there is only 1 small change that needs to be made to patch 11
of the series, based on Ben's comments.

I will wait a bit longer before fixing up patch 11, to ensure that there
are no other changes needed.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-30  5:24 Jeff Kirsher
  2011-09-30 18:35 ` Jeff Kirsher
  0 siblings, 1 reply; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-30  5:24 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo

The following series contains updates to e1000e and ixgbe. The one
patch for e1000e makes function tables const, thanks to Stephen
Hemminger for reporting this.  The remaining patches are for ixgbe,
and the contain the following:

 - minor cleanups
 - add support for 82599 device and ethtool -E support
 - removal of a PHY which is not used in production silicon

The following are changes since commit 56fd49e399ce1d82200fad5b8924d4e35a587809:
  bna: Driver Version changed to 3.0.2.2
and are available in the git repository at
  git://github.com/Jkirsher/net-next.git

Emil Tantilov (8):
  ixgbe: prevent link checks while resetting
  ixgbe: clear the data field in ixgbe_read_i2c_byte_generic
  ixgbe: remove return code for functions that always return 0
  ixgbe: add support for new 82599 device
  ixgbe: send MFLCN to ethtool
  ixgbe: do not disable flow control in ixgbe_check_mac_link
  ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599
  ixgbe: allow eeprom writes via ethtool

Jacob Keller (1):
  ixgbe: fix driver version initialization in firmware

Jeff Kirsher (1):
  e1000e: make function tables const

Mika Lansirinne (1):
  ixgbe: get pauseparam autoneg

 drivers/net/ethernet/intel/e1000e/80003es2lan.c  |    8 +-
 drivers/net/ethernet/intel/e1000e/82571.c        |   20 +++---
 drivers/net/ethernet/intel/e1000e/e1000.h        |   28 ++++----
 drivers/net/ethernet/intel/e1000e/ich8lan.c      |   16 +++---
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c   |    8 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c   |    7 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.c  |    6 --
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c |   74 +++++++++++++++++++---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    |   12 +++-
 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c     |   33 +++-------
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h    |    1 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c    |    1 +
 12 files changed, 125 insertions(+), 89 deletions(-)

-- 
1.7.6.2

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-17  2:15 Jeff Kirsher
  0 siblings, 0 replies; 33+ messages in thread
From: Jeff Kirsher @ 2011-09-17  2:15 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, gospo

The following series contains updates to ixgb and ixgbe. The ixgb patch
does the conversion to ndo_fix_features.  The remaining patches are for
ixgbe to do the following: 

  - cleanup register reads, comments, memory allocations
  - add SFP support for 82598 PHY and overheat sensor code
  - fix register dump for X50

The following are changes since commit f78a5fda9116525809d088917638be912b85f838:
  Revert "Scm: Remove unnecessary pid & credential references in Unix socket's send and receive path"
and are available in the git repository at:
  git://github.com/Jkirsher/net-next.git

Alexander Duyck (7):
  ixgbe: remove redundant configuration of tx_sample_rate
  v2 ixgbe: Update packet buffer reservation to correct fdir headroom
    size
  ixgbe: make ixgbe_up and ixgbe_up_complete void functions
  ixgbe: Add missing code for enabling overheat sensor interrupt
  ixgbe: Add SFP support for missed 82598 PHY
  ixgbe: drop adapter from ixgbe_fso call documentation
  ixgbe: Make better use of memory allocations in one-buffer mode w/
    RSC

Emil Tantilov (3):
  ixgbe: cleanup some register reads
  ixgbe: fix FCRTL/H register dump for X540
  ixgbe: remove duplicate netif_tx_start_all_queues

Michał Mirosław (1):
  ixgb: convert to ndo_fix_features

 drivers/net/ethernet/intel/ixgb/ixgb.h           |    2 +
 drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c   |   59 +----------
 drivers/net/ethernet/intel/ixgb/ixgb_main.c      |   31 +++++-
 drivers/net/ethernet/intel/ixgbe/ixgbe.h         |   13 ++-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c |    3 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c    |    1 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    |  126 ++++++++++++----------
 7 files changed, 112 insertions(+), 123 deletions(-)

-- 
1.7.6

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2014-05-14  8:54 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-16  4:42 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2011-09-16  4:42 ` [net-next 01/11] ixgbe: Change default Tx work limit size to 256 buffers Jeff Kirsher
2011-09-16  4:42 ` [net-next 02/11] v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines into one Jeff Kirsher
2011-09-16  4:42 ` [net-next 03/11] ixgbe: cleanup allocation and freeing of IRQ affinity hint Jeff Kirsher
2011-09-16  4:42 ` [net-next 04/11] ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA Jeff Kirsher
2011-09-16  4:42 ` [net-next 05/11] ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt types Jeff Kirsher
2011-09-16  4:42 ` [net-next 06/11] ixgbe: Drop unnecessary adapter->hw dereference in loopback test setup Jeff Kirsher
2011-09-16  4:42 ` [net-next 07/11] ixgbe: combine PCI_VDEVICE and board declaration to same line Jeff Kirsher
2011-09-16  4:42 ` [net-next 08/11] ixgbe: Update TXDCTL configuration to correctly handle WTHRESH Jeff Kirsher
2011-09-16  4:42 ` [net-next 09/11] ixgbe: cleanup reset paths Jeff Kirsher
2011-09-16  4:42 ` [net-next 10/11] ixgbe: cleanup configuration of EITRSEL and VF reset path Jeff Kirsher
2011-09-16  4:42 ` [net-next 11/11] ixgbe: Correctly name and handle MSI-X other interrupt Jeff Kirsher
2011-09-16 19:20 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
2011-09-17  2:15 Jeff Kirsher
2011-09-30  5:24 Jeff Kirsher
2011-09-30 18:35 ` Jeff Kirsher
2011-10-08  6:47 Jeff Kirsher
2011-10-08  6:52 ` Jeff Kirsher
2012-01-03 19:19 Jeff Kirsher
2012-01-27  3:08 Jeff Kirsher
2012-01-28  1:47 ` David Miller
2012-02-07 12:33 Jeff Kirsher
2012-02-07 17:27 ` David Miller
2012-02-25  5:49 Jeff Kirsher
2012-02-26  1:31 ` David Miller
2012-11-13 14:03 Jeff Kirsher
2012-11-13 19:19 ` David Miller
2013-04-12 11:24 Jeff Kirsher
2013-10-24 15:27 Jeff Kirsher
2013-10-26  4:30 ` David Miller
2013-10-29 12:02 Jeff Kirsher
2013-10-29 22:58 ` David Miller
2014-05-14  8:54 Jeff Kirsher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).