]>
Commit | Line | Data |
---|---|---|
37554d48 SL |
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 |