ice: fix ICE_AQ_VSI_Q_OPT_RSS_* register values
authorAhmed Zaki <ahmed.zaki@intel.com>
Wed, 13 Dec 2023 00:33:17 +0000 (17:33 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Feb 2024 20:14:23 +0000 (20:14 +0000)
[ Upstream commit 20f73b60bb5c276cee9b1a530f100c677bc74af8 ]

Fix the values of the ICE_AQ_VSI_Q_OPT_RSS_* registers. Shifting is
already done when the values are used, no need to double shift. Bug was
not discovered earlier since only ICE_AQ_VSI_Q_OPT_RSS_TPLZ (Zero) is
currently used.

Also, rename ICE_AQ_VSI_Q_OPT_RSS_XXX to ICE_AQ_VSI_Q_OPT_RSS_HASH_XXX
for consistency.

Co-developed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
Link: https://lore.kernel.org/r/20231213003321.605376-5-ahmed.zaki@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
drivers/net/ethernet/intel/ice/ice_lib.c
drivers/net/ethernet/intel/ice/ice_virtchnl.c

index 29f7a98..fafe083 100644 (file)
@@ -491,10 +491,10 @@ struct ice_aqc_vsi_props {
 #define ICE_AQ_VSI_Q_OPT_RSS_GBL_LUT_M         (0xF << ICE_AQ_VSI_Q_OPT_RSS_GBL_LUT_S)
 #define ICE_AQ_VSI_Q_OPT_RSS_HASH_S            6
 #define ICE_AQ_VSI_Q_OPT_RSS_HASH_M            (0x3 << ICE_AQ_VSI_Q_OPT_RSS_HASH_S)
-#define ICE_AQ_VSI_Q_OPT_RSS_TPLZ              (0x0 << ICE_AQ_VSI_Q_OPT_RSS_HASH_S)
-#define ICE_AQ_VSI_Q_OPT_RSS_SYM_TPLZ          (0x1 << ICE_AQ_VSI_Q_OPT_RSS_HASH_S)
-#define ICE_AQ_VSI_Q_OPT_RSS_XOR               (0x2 << ICE_AQ_VSI_Q_OPT_RSS_HASH_S)
-#define ICE_AQ_VSI_Q_OPT_RSS_JHASH             (0x3 << ICE_AQ_VSI_Q_OPT_RSS_HASH_S)
+#define ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ         0x0U
+#define ICE_AQ_VSI_Q_OPT_RSS_HASH_SYM_TPLZ     0x1U
+#define ICE_AQ_VSI_Q_OPT_RSS_HASH_XOR          0x2U
+#define ICE_AQ_VSI_Q_OPT_RSS_HASH_JHASH                0x3U
        u8 q_opt_tc;
 #define ICE_AQ_VSI_Q_OPT_TC_OVR_S              0
 #define ICE_AQ_VSI_Q_OPT_TC_OVR_M              (0x1F << ICE_AQ_VSI_Q_OPT_TC_OVR_S)
index a66c3b6..4e7f67f 100644 (file)
@@ -1186,12 +1186,12 @@ static void ice_set_rss_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi)
        case ICE_VSI_PF:
                /* PF VSI will inherit RSS instance of PF */
                lut_type = ICE_AQ_VSI_Q_OPT_RSS_LUT_PF;
-               hash_type = ICE_AQ_VSI_Q_OPT_RSS_TPLZ;
+               hash_type = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;
                break;
        case ICE_VSI_VF:
                /* VF VSI will gets a small RSS table which is a VSI LUT type */
                lut_type = ICE_AQ_VSI_Q_OPT_RSS_LUT_VSI;
-               hash_type = ICE_AQ_VSI_Q_OPT_RSS_TPLZ;
+               hash_type = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;
                break;
        default:
                dev_dbg(dev, "Unsupported VSI type %s\n",
index 62337e6..e7ab78b 100644 (file)
@@ -820,8 +820,8 @@ static int ice_vc_handle_rss_cfg(struct ice_vf *vf, u8 *msg, bool add)
                int status;
 
                lut_type = ICE_AQ_VSI_Q_OPT_RSS_LUT_VSI;
-               hash_type = add ? ICE_AQ_VSI_Q_OPT_RSS_XOR :
-                               ICE_AQ_VSI_Q_OPT_RSS_TPLZ;
+               hash_type = add ? ICE_AQ_VSI_Q_OPT_RSS_HASH_XOR :
+                               ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;
 
                ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
                if (!ctx) {
@@ -829,11 +829,9 @@ static int ice_vc_handle_rss_cfg(struct ice_vf *vf, u8 *msg, bool add)
                        goto error_param;
                }
 
-               ctx->info.q_opt_rss = ((lut_type <<
-                                       ICE_AQ_VSI_Q_OPT_RSS_LUT_S) &
-                                      ICE_AQ_VSI_Q_OPT_RSS_LUT_M) |
-                                      (hash_type &
-                                       ICE_AQ_VSI_Q_OPT_RSS_HASH_M);
+               ctx->info.q_opt_rss =
+                       FIELD_PREP(ICE_AQ_VSI_Q_OPT_RSS_LUT_M, lut_type) |
+                       FIELD_PREP(ICE_AQ_VSI_Q_OPT_RSS_HASH_M, hash_type);
 
                /* Preserve existing queueing option setting */
                ctx->info.q_opt_rss |= (vsi->info.q_opt_rss &