]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.19.51/i40e-queues-are-reserved-despite-invalid-argument-er.patch
Linux 4.19.51
[thirdparty/kernel/stable-queue.git] / releases / 4.19.51 / i40e-queues-are-reserved-despite-invalid-argument-er.patch
1 From 3d871afe2d0060f894d12712ee63c650f3c7b0ef Mon Sep 17 00:00:00 2001
2 From: Adam Ludkiewicz <adam.ludkiewicz@intel.com>
3 Date: Wed, 6 Feb 2019 15:08:15 -0800
4 Subject: i40e: Queues are reserved despite "Invalid argument" error
5
6 [ Upstream commit 3e957b377bf4262aec2dd424f28ece94e36814d4 ]
7
8 Added a new local variable in the i40e_setup_tc function named
9 old_queue_pairs so num_queue_pairs can be restored to the correct
10 value in case configuring queue channels fails. Additionally, moved
11 the exit label in the i40e_setup_tc function so the if (need_reset)
12 block can be executed.
13 Also, fixed data packing in the i40e_setup_tc function.
14
15 Signed-off-by: Adam Ludkiewicz <adam.ludkiewicz@intel.com>
16 Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
17 Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
18 Signed-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
23 diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
24 index 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 --
49 2.20.1
50