]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-4.19/i40e-queues-are-reserved-despite-invalid-argument-er.patch
Linux 5.1.10
[thirdparty/kernel/stable-queue.git] / queue-4.19 / i40e-queues-are-reserved-despite-invalid-argument-er.patch
CommitLineData
37554d48
SL
1From 3d871afe2d0060f894d12712ee63c650f3c7b0ef Mon Sep 17 00:00:00 2001
2From: Adam Ludkiewicz <adam.ludkiewicz@intel.com>
3Date: Wed, 6 Feb 2019 15:08:15 -0800
4Subject: i40e: Queues are reserved despite "Invalid argument" error
5
6[ Upstream commit 3e957b377bf4262aec2dd424f28ece94e36814d4 ]
7
8Added a new local variable in the i40e_setup_tc function named
9old_queue_pairs so num_queue_pairs can be restored to the correct
10value in case configuring queue channels fails. Additionally, moved
11the exit label in the i40e_setup_tc function so the if (need_reset)
12block can be executed.
13Also, fixed data packing in the i40e_setup_tc function.
14
15Signed-off-by: Adam Ludkiewicz <adam.ludkiewicz@intel.com>
16Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
17Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
18Signed-off-by: Sasha Levin <sashal@kernel.org>
19---
20 drivers/net/ethernet/intel/i40e/i40e_main.c | 3 +++
21 1 file changed, 3 insertions(+)
22
23diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
24index df8808cd7e11..4e04985fb430 100644
25--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
26+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
27@@ -6758,10 +6758,12 @@ static int i40e_setup_tc(struct net_device *netdev, void *type_data)
28 struct i40e_pf *pf = vsi->back;
29 u8 enabled_tc = 0, num_tc, hw;
30 bool need_reset = false;
31+ int old_queue_pairs;
32 int ret = -EINVAL;
33 u16 mode;
34 int i;
35
36+ old_queue_pairs = vsi->num_queue_pairs;
37 num_tc = mqprio_qopt->qopt.num_tc;
38 hw = mqprio_qopt->qopt.hw;
39 mode = mqprio_qopt->mode;
40@@ -6862,6 +6864,7 @@ config_tc:
41 }
42 ret = i40e_configure_queue_channels(vsi);
43 if (ret) {
44+ vsi->num_queue_pairs = old_queue_pairs;
45 netdev_info(netdev,
46 "Failed configuring queue channels\n");
47 need_reset = true;
48--
492.20.1
50