On 11/24/2021 3:37 PM, Viacheslav Ovsiienko wrote:
The generic RTE_FLOW_ACTION_TYPE_MODIFY_FIELD action was introduced by [1]. This action provides an unified way to perform various arithmetic and transfer operations over packet network header fields and packet metadata.[1] commit 641dbe4fb053 ("net/mlx5: support modify field flow action") On other side there are a bunch of multiple legacy actions, that can be superseded by the generic modify field action: RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL sfc RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC bnxt, cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_IPV4_DST bnxt, cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_IPV6_DST cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_TP_SRC cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_TP_DST cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_DEC_TTL mlx5, sfc RTE_FLOW_ACTION_TYPE_SET_TTL mlx5 RTE_FLOW_ACTION_TYPE_SET_MAC_SRC cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_SET_MAC_DST cxgbe, mlx5 RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ mlx5 RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ mlx5 RTE_FLOW_ACTION_TYPE_INC_TCP_ACK mlx5 RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK mlx5 RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP mlx5 RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP mlx5 RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID bnxt, cnxk, cxgbe, enic, mlx5, octeontx2, sfc RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP bnxt, cnxk, cxgbe, enic, mlx5, octeontx2, sfc RTE_FLOW_ACTION_TYPE_SET_TAG mlx5 RTE_FLOW_ACTION_TYPE_SET_META mlx5 This note deprecates the following RTE Flow actions: 1. As not supported by any of PMDs: RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN 2. As supposed to be replaced by generig field modify action: RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC RTE_FLOW_ACTION_TYPE_SET_IPV4_DST RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC RTE_FLOW_ACTION_TYPE_SET_IPV6_DST RTE_FLOW_ACTION_TYPE_SET_TP_SRC RTE_FLOW_ACTION_TYPE_SET_TP_DST RTE_FLOW_ACTION_TYPE_DEC_TTL RTE_FLOW_ACTION_TYPE_SET_TTL RTE_FLOW_ACTION_TYPE_SET_MAC_SRC RTE_FLOW_ACTION_TYPE_SET_MAC_DST RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP RTE_FLOW_ACTION_TYPE_SET_TAG RTE_FLOW_ACTION_TYPE_SET_META The VLAN set actions are interrelated to VLAN header insertion/removal and supported by multiple PMDs and supposed to be just deprecated but not be removed in 22.11.
Why not remove them for v22.11? Do you think PMDs can't change the existing implementation until 22.11?
Signed-off-by: Viacheslav Ovsiienko <[email protected]> -- v2 - deprecation.rst is updated v3 - doc comments addressed - commit message comments addressed - SET_VLAN_VID and SET_VLAN_PCP actions deprecated, but will not be removed in 22.11
Deprecated symbols are to prevent new code using them, but for this case there is no alternative, since PMDs still don't support 'RTE_FLOW_ACTION_TYPE_MODIFY_FIELD' yet. This patch is forcing users to use deprecated actions (except from mlx). What about a slight change: 1- In this release, update header/document as 'RTE_FLOW_ACTION_TYPE_MODIFY_FIELD' is preferred way if supported. Instead of deprecating old ones. 2- Have an agreement with PMD maintainers to switch to new action before v22.11, and don't accept old action implementation in PMDs anymore. Based on agreement update 'deprecation.rst' in this release to note that old actions will be removed on v22.11. (It would be good to have a check to prevent old actions merged during that time.) 3- In v22.11, remove old actions, the PMDs that don't support MODIFY_FIELD action will lose the feature. What do you think? Andrew, Ajit, Somnath, Rahul, We need your confirmation for item (2) above, do you have any objection?

