diff options
author | Adam Ludkiewicz <adam.ludkiewicz@intel.com> | 2019-02-06 18:08:15 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2019-04-16 18:09:29 -0400 |
commit | 3e957b377bf4262aec2dd424f28ece94e36814d4 (patch) | |
tree | d37e370e70ce37a2c1c369b75d52d5c33a52d08e /drivers/net/ethernet/intel | |
parent | 432bc230700f86801cffa5e159e05dea6229f722 (diff) |
i40e: Queues are reserved despite "Invalid argument" error
Added a new local variable in the i40e_setup_tc function named
old_queue_pairs so num_queue_pairs can be restored to the correct
value in case configuring queue channels fails. Additionally, moved
the exit label in the i40e_setup_tc function so the if (need_reset)
block can be executed.
Also, fixed data packing in the i40e_setup_tc function.
Signed-off-by: Adam Ludkiewicz <adam.ludkiewicz@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index b1c265012c8a..1993b3708815 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -6846,10 +6846,12 @@ static int i40e_setup_tc(struct net_device *netdev, void *type_data) | |||
6846 | struct i40e_pf *pf = vsi->back; | 6846 | struct i40e_pf *pf = vsi->back; |
6847 | u8 enabled_tc = 0, num_tc, hw; | 6847 | u8 enabled_tc = 0, num_tc, hw; |
6848 | bool need_reset = false; | 6848 | bool need_reset = false; |
6849 | int old_queue_pairs; | ||
6849 | int ret = -EINVAL; | 6850 | int ret = -EINVAL; |
6850 | u16 mode; | 6851 | u16 mode; |
6851 | int i; | 6852 | int i; |
6852 | 6853 | ||
6854 | old_queue_pairs = vsi->num_queue_pairs; | ||
6853 | num_tc = mqprio_qopt->qopt.num_tc; | 6855 | num_tc = mqprio_qopt->qopt.num_tc; |
6854 | hw = mqprio_qopt->qopt.hw; | 6856 | hw = mqprio_qopt->qopt.hw; |
6855 | mode = mqprio_qopt->mode; | 6857 | mode = mqprio_qopt->mode; |
@@ -6950,6 +6952,7 @@ config_tc: | |||
6950 | } | 6952 | } |
6951 | ret = i40e_configure_queue_channels(vsi); | 6953 | ret = i40e_configure_queue_channels(vsi); |
6952 | if (ret) { | 6954 | if (ret) { |
6955 | vsi->num_queue_pairs = old_queue_pairs; | ||
6953 | netdev_info(netdev, | 6956 | netdev_info(netdev, |
6954 | "Failed configuring queue channels\n"); | 6957 | "Failed configuring queue channels\n"); |
6955 | need_reset = true; | 6958 | need_reset = true; |