On devices with more than 4 ports, the maximum number of TCs per port is
limited to 4.

Signed-off-by: Bruce Allan <bruce.w.al...@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell...@intel.com>
Signed-off-by: Leyi Rong <leyi.r...@intel.com>
---
 drivers/net/ice/base/ice_common.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/ice/base/ice_common.c 
b/drivers/net/ice/base/ice_common.c
index 461856827..81eab7ecc 100644
--- a/drivers/net/ice/base/ice_common.c
+++ b/drivers/net/ice/base/ice_common.c
@@ -2092,6 +2092,18 @@ ice_parse_caps(struct ice_hw *hw, void *buf, u32 
cap_count,
                        break;
                }
        }
+
+       /* Re-calculate capabilities that are dependent on the number of
+        * physical ports; i.e. some features are not supported or function
+        * differently on devices with more than 4 ports.
+        */
+       if (caps && (ice_hweight32(caps->valid_functions) > 4)) {
+               /* Max 4 TCs per port */
+               caps->maxtc = 4;
+               ice_debug(hw, ICE_DBG_INIT,
+                         "%s: TC max = %d (based on #ports)\n", prefix,
+                         caps->maxtc);
+       }
 }
 
 /**
-- 
2.17.1

Reply via email to