]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ice: move ice_vsi_update_l2tsel to ice_lib.c
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 18 Jun 2025 22:24:39 +0000 (15:24 -0700)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Thu, 10 Jul 2025 21:36:58 +0000 (14:36 -0700)
A future change is going to need to call ice_vsi_update_l2tsel from a new
context outside of ice_virtchnl.c

Since this function deals with a generic VSI, move it into ice_lib.c to
enable calling it from other places in the ice driver.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Madhu Chittim <madhu.chittim@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_lib.c
drivers/net/ethernet/intel/ice/ice_lib.h
drivers/net/ethernet/intel/ice/ice_virtchnl.c

index 2f1782e9357f930a91f928b78fdf105f0bf4e6ef..1be1e429a7c820971bafa69ed33ee65df673a8e0 100644 (file)
@@ -4020,3 +4020,38 @@ ice_vsi_update_local_lb(struct ice_vsi *vsi, bool set)
        vsi->info = ctx.info;
        return 0;
 }
+
+/**
+ * ice_vsi_update_l2tsel - update l2tsel field for all Rx rings on this VSI
+ * @vsi: VSI used to update l2tsel on
+ * @l2tsel: l2tsel setting requested
+ *
+ * Use the l2tsel setting to update all of the Rx queue context bits for l2tsel.
+ * This will modify which descriptor field the first offloaded VLAN will be
+ * stripped into.
+ */
+void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel)
+{
+       struct ice_hw *hw = &vsi->back->hw;
+       u32 l2tsel_bit;
+       int i;
+
+       if (l2tsel == ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND)
+               l2tsel_bit = 0;
+       else
+               l2tsel_bit = BIT(ICE_L2TSEL_BIT_OFFSET);
+
+       for (i = 0; i < vsi->alloc_rxq; i++) {
+               u16 pfq = vsi->rxq_map[i];
+               u32 qrx_context_offset;
+               u32 regval;
+
+               qrx_context_offset =
+                       QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, pfq);
+
+               regval = rd32(hw, qrx_context_offset);
+               regval &= ~BIT(ICE_L2TSEL_BIT_OFFSET);
+               regval |= l2tsel_bit;
+               wr32(hw, qrx_context_offset, regval);
+       }
+}
index 654516c5fc3ededf99d3aa9574a546177295a716..2cb1eb98b9dabc63c44aa20f04acb19040df56f9 100644 (file)
 #define ICE_VSI_FLAG_INIT      BIT(0)
 #define ICE_VSI_FLAG_NO_INIT   0
 
+#define ICE_L2TSEL_QRX_CONTEXT_REG_IDX 3
+#define ICE_L2TSEL_BIT_OFFSET          23
+enum ice_l2tsel {
+       ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND,
+       ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1,
+};
+
 const char *ice_vsi_type_str(enum ice_vsi_type vsi_type);
 
 bool ice_pf_state_is_nominal(struct ice_pf *pf);
@@ -116,4 +123,5 @@ void ice_set_feature_support(struct ice_pf *pf, enum ice_feature f);
 void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f);
 void ice_init_feature_support(struct ice_pf *pf);
 bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi);
+void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel);
 #endif /* !_ICE_LIB_H_ */
index 0a8f15ecac1f7d6770357a89f1ecdf18c636f88f..307252500f02ddf3bd1b9cf1f4d200c4f7d43a0b 100644 (file)
@@ -3860,48 +3860,6 @@ ice_vc_ena_vlan_offload(struct ice_vsi *vsi,
        return 0;
 }
 
-#define ICE_L2TSEL_QRX_CONTEXT_REG_IDX 3
-#define ICE_L2TSEL_BIT_OFFSET          23
-enum ice_l2tsel {
-       ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND,
-       ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1,
-};
-
-/**
- * ice_vsi_update_l2tsel - update l2tsel field for all Rx rings on this VSI
- * @vsi: VSI used to update l2tsel on
- * @l2tsel: l2tsel setting requested
- *
- * Use the l2tsel setting to update all of the Rx queue context bits for l2tsel.
- * This will modify which descriptor field the first offloaded VLAN will be
- * stripped into.
- */
-static void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel)
-{
-       struct ice_hw *hw = &vsi->back->hw;
-       u32 l2tsel_bit;
-       int i;
-
-       if (l2tsel == ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND)
-               l2tsel_bit = 0;
-       else
-               l2tsel_bit = BIT(ICE_L2TSEL_BIT_OFFSET);
-
-       for (i = 0; i < vsi->alloc_rxq; i++) {
-               u16 pfq = vsi->rxq_map[i];
-               u32 qrx_context_offset;
-               u32 regval;
-
-               qrx_context_offset =
-                       QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, pfq);
-
-               regval = rd32(hw, qrx_context_offset);
-               regval &= ~BIT(ICE_L2TSEL_BIT_OFFSET);
-               regval |= l2tsel_bit;
-               wr32(hw, qrx_context_offset, regval);
-       }
-}
-
 /**
  * ice_vc_ena_vlan_stripping_v2_msg
  * @vf: VF the message was received from