aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAdam Ludkiewicz <adam.ludkiewicz@intel.com>2019-02-06 18:08:15 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2019-04-16 18:09:29 -0400
commit3e957b377bf4262aec2dd424f28ece94e36814d4 (patch)
treed37e370e70ce37a2c1c369b75d52d5c33a52d08e /drivers/net
parent432bc230700f86801cffa5e159e05dea6229f722 (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')
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c3
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;