ixgbe: Fill at least min credits to a TC credit refills
authorVasu Dev <vasu.dev@intel.com>
Mon, 23 Nov 2015 18:30:51 +0000 (10:30 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 8 Jan 2016 11:25:14 +0000 (03:25 -0800)
Currently credit_refill and credit_max could be zero for a TC and that
is causing Tx hang for CEE mode configuration, so to fix that have at
min credit assigned to a TC and that is as what IEEE mode already does.

Change-ID: If652c133093a21e530f4e9eab09097976f57fb12
Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c

index a507a6fe36243a32bc27409998fc25660c105ed5..02c7333a9c83c1c0e9bb8fe826687e4eb144c85b 100644 (file)
@@ -139,6 +139,11 @@ s32 ixgbe_dcb_calculate_tc_credits(struct ixgbe_hw *hw,
                /* Calculate credit refill ratio using multiplier */
                credit_refill = min(link_percentage * min_multiplier,
                                    MAX_CREDIT_REFILL);
+
+               /* Refill at least minimum credit */
+               if (credit_refill < min_credit)
+                       credit_refill = min_credit;
+
                p->data_credits_refill = (u16)credit_refill;
 
                /* Calculate maximum credit for the TC */
@@ -149,7 +154,7 @@ s32 ixgbe_dcb_calculate_tc_credits(struct ixgbe_hw *hw,
                 * of a TC is too small, the maximum credit may not be
                 * enough to send out a jumbo frame in data plane arbitration.
                 */
-               if (credit_max && (credit_max < min_credit))
+               if (credit_max < min_credit)
                        credit_max = min_credit;
 
                if (direction == DCB_TX_CONFIG) {