i40e: Update VEB's enabled_tc after reconfiguration
authorNeerav Parikh <neerav.parikh@intel.com>
Wed, 12 Nov 2014 00:18:41 +0000 (00:18 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 18 Nov 2014 09:09:09 +0000 (01:09 -0800)
When the port TC configuration changes as a result of DCBx the driver
modifies the enabled TCs for the VEBs it manages. But, in the process
it did not update the enabled_tc value that it caches on a per VEB basis.

So, when the next reconfiguration event occurs where the number of TC
value is same as the value cached in enabled_tc for a given VEB; driver
does not modify it's TC configuration by calling appropriate AQ command
believing it is running with the same configuration as requested.
Now, as the VEB is not actually enabled for the TCs that are there any
TC configuration command for VSI attached to that VEB with TCs that are
not enabled for the VEB fails.

This patch fixes this issue.

Change-ID: Ife5694469b05494228e0d850429ea1734738cf29
Signed-off-by: Neerav Parikh <neerav.parikh@intel.com>
Tested-By: Jack Morgan <jack.morgan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 99b985cb53d528da3e615228e6ac71848a618653..71ab3277a295862c5b6d17567e42ce403775fc72 100644 (file)
@@ -8279,6 +8279,7 @@ static int i40e_veb_get_bw_info(struct i40e_veb *veb)
        veb->bw_limit = le16_to_cpu(ets_data.port_bw_limit);
        veb->bw_max_quanta = ets_data.tc_bw_max;
        veb->is_abs_credits = bw_data.absolute_credits_enable;
+       veb->enabled_tc = ets_data.tc_valid_bits;
        tc_bw_max = le16_to_cpu(bw_data.tc_bw_max[0]) |
                    (le16_to_cpu(bw_data.tc_bw_max[1]) << 16);
        for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) {