Skip to contentSkip to conversation

Patch "[PATCH 023/135] fm10k: reinitialize queuing scheme after calling" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Sep 9, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

[PATCH 023/135] fm10k: reinitialize queuing scheme after calling

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
0023-fm10k-reinitialize-queuing-scheme-after-calling-init.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 5c571b333ac3ff510b59a843675b450e72dc8543 Mon Sep 17 00:00:00 2001

From: Jacob Keller <[email protected]>
Date: Fri, 16 Oct 2015 10:56:59 -0700
Subject: [PATCH 023/135] fm10k: reinitialize queuing scheme after calling
init_hw

[ Upstream commit 875328e4bce696e85edcda3c4b0ec80fd525e3a3 ]

The init_hw function may fail, and in the case of VFs, it might change the number of maximum queues available. Thus, for every flow which checks init_hw, we need to ensure that we clear the queue scheme before, and initialize it after. The fm10k_io_slot_reset path will end up triggering a reset so fm10k_reinit needs this change. The fm10k_io_error_detected and fm10k_io_resume also need to properly clear and reinitialize the queue scheme.

---
 drivers/net/ethernet/intel/fm10k/fm10k_pci.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
drivers/net/ethernet/intel/fm10k/fm10k_pci.c +18 -0
@@ -159,6 +159,9 @@ static void fm10k_reinit(struct fm10k_in
 
 	fm10k_mbx_free_irq(interface);
 
+	/* free interrupts */
+	fm10k_clear_queueing_scheme(interface);
+
 	/* delay any future reset requests */
 	interface->last_reset = jiffies + (10 * HZ);
 
@@ -175,6 +178,12 @@ static void fm10k_reinit(struct fm10k_in
 		goto reinit_err;
 	}
 
+	err = fm10k_init_queueing_scheme(interface);
+	if (err) {
+		dev_err(&interface->pdev->dev, "init_queueing_scheme failed: %d\n", err);
+		goto reinit_err;
+	}
+
 	/* reassociate interrupts */
 	fm10k_mbx_request_irq(interface);
 
@@ -2205,6 +2214,9 @@ static pci_ers_result_t fm10k_io_error_d
 	if (netif_running(netdev))
 		fm10k_close(netdev);
 
+	/* free interrupts */
+	fm10k_clear_queueing_scheme(interface);
+
 	fm10k_mbx_free_irq(interface);
 
 	pci_disable_device(pdev);
@@ -2277,6 +2289,12 @@ static void fm10k_io_resume(struct pci_d
 	/* reset statistics starting values */
 	hw->mac.ops.rebind_hw_stats(hw, &interface->stats);
 
+	err = fm10k_init_queueing_scheme(interface);
+	if (err) {
+		dev_err(&interface->pdev->dev, "init_queueing_scheme failed: %d\n", err);
+		return;
+	}
+
 	/* reassociate interrupts */
 	fm10k_mbx_request_irq(interface);
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/0022-fm10k-always-check-init_hw-for-errors.patch queue-4.4/0021-fm10k-reset-max_queues-on-init_hw_vf-failure.patch queue-4.4/0023-fm10k-reinitialize-queuing-scheme-after-calling-init.patch queue-4.4/0018-fm10k-do-not-assume-VF-always-has-1-queue.patch queue-4.4/0019-fm10k-Correct-MTU-for-jumbo-frames.patch