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 99b985c..71ab327 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++) {