net/ice/base: store number of functions for the device
authorQi Zhang <qi.z.zhang@intel.com>
Thu, 29 Aug 2019 02:35:58 +0000 (10:35 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 7 Oct 2019 13:00:52 +0000 (15:00 +0200)
Store the number of functions the device has.  This value can be
very useful when calculating how to best allocate global resources.

Signed-off-by: Kevin Scott <kevin.c.scott@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
drivers/net/ice/base/ice_common.c
drivers/net/ice/base/ice_type.h

index 58dd01e..fa97b79 100644 (file)
@@ -2114,6 +2114,10 @@ ice_parse_caps(struct ice_hw *hw, void *buf, u32 cap_count,
                        ice_debug(hw, ICE_DBG_INIT,
                                  "%s: valid functions = %d\n", prefix,
                                  caps->valid_functions);
+
+                       /* store func count for resource management purposes */
+                       if (dev_p)
+                               dev_p->num_funcs = ice_hweight32(number);
                        break;
                case ICE_AQC_CAPS_VSI:
                        if (dev_p) {
@@ -2230,7 +2234,7 @@ ice_parse_caps(struct ice_hw *hw, void *buf, u32 cap_count,
         * 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)) {
+       if (hw->dev_caps.num_funcs > 4) {
                /* Max 4 TCs per port */
                caps->maxtc = 4;
                ice_debug(hw, ICE_DBG_INIT,
index 2d010e6..88846e0 100644 (file)
@@ -359,6 +359,7 @@ struct ice_hw_dev_caps {
        struct ice_hw_common_caps common_cap;
        u32 num_vsi_allocd_to_host;     /* Excluding EMP VSI */
        u32 num_flow_director_fltr;     /* Number of FD filters available */
+       u32 num_funcs;
 };