25/11/2021 16:14, Ferruh Yigit: > On 11/25/2021 1:56 PM, Slava Ovsiienko wrote: > > From: Ferruh Yigit <ferruh.yi...@intel.com> > >> 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: > > [.. snip ..] > >>> > >>> 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? > > > > Yes, this is a main concern - these actions are supported by multiple PMDs, > > and its handling might be a little bit complicated. For example, in mlx5 > > SET_VLAN_ID can be translated into different HW/FW primitives > > depending on presence of PUSH_VLAN action. I think any PMD should do > > the check of VLAN actions order for the case of PUSH, replacing with > > MODIFY_FIELD would sophisticate the check > > > > In mlx5 we are going to support MODIFY_FIELD and kept SET_VLAN_XX > > in any combinations, but, actually, there is no objection about dropping > > SET_VLAN_XXX regarding mlx5. I just would not like to force > > the commitments for that from other PMDs. > > > >>> Signed-off-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> > >>> > >>> -- > >>> 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? > > > > In my opinion, deprecation warns about coming changes - entity is going to > > be > > removed or changed. It does not force to take some immediate action now, > > just to be aware about. > > > > There are two questions: > > - do we want to replace a bunch of legacy actions with new one? I suppose - > > yes, there > > is a lot of advantages > > - are we going to do this with MODIFY_FIELD? Yes, this is an intention. > > > > So, we have answers for these questions now, and should handle legacy > > actions accordingly - > > mark as deprecated and provide the clue about MODIFY_FIELD. > > > > The question remaining - how we are going to proceed. Actions can't be > > removed till > > alternative is provided. So, in my understanding the process should be: > > > > A. mark actions as deprecated, to advertise an intention > > B. implement MODIFY_FIELD support (maintainers agreement/commitment), > > assign the due date for this > > C. advertise the date of legacy actions removal (if it was not claimed in B) > > D. remove legacy actions entirely > > > > We are doing step A now. > > Also step B is imposed by advertising the removal date. It is ultimate > > approach, and is not exactly what we need. > > Do we have alternative softened way to encourage PMDs to be updated? No > > objections to follow 😊. > > > > We are aligned on the intention.
Yes we are mostly aligned, but we do not put the same meaning to word "deprecate". First of all, "deprecate" does not mean "removed" or "forbidden". The intention is to warn that it is not the latest or future-proof API. > For (A), those symbols interface with both drivers and applications, > for drivers no concern on deprecating the symbols but I think it is wrong > to deprecate from applications perspective. > > Slightly updated version: > A. document legacy actions as not preferred way, but applications still can > use them, Of course applications can use them, because they are not removed. If we don't agree on the word "deprecated", we can reword to something like that: "This is a legacy API, please consider using MODIFY_FIELD action". > and no change is required by applications (unless they prefer to use new > action). > For PMDs we don't allow any more implementation of these actions. Yes we should not allow new implementation of the legacy API. > B. PMDs implement 'MODIFY_FIELD', have a deadline for it (same with your B.) > Assuming deadline is v22.11, announce that old actions will be deprecated > on v22.11 in this release. > C. on v22.11 deprecate old actions, exiting applications still can use them > but new code should use 'MODIFY_FIELD' action. > Announce removal date for the legacy actions I think we should remove most of the actions in 22.11, except VLAN ones. > D. Remove legacy actions entirely Maybe we will keep VLAN actions forever.