[RFC] ethdev: add generic TTL rewrite actions

Message ID DB6PR0501MB202314B2A175949F6C3D7670CC270@DB6PR0501MB2023.eurprd05.prod.outlook.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [RFC] ethdev: add generic TTL rewrite actions |

Checks

Context Check Description
ci/Intel-compilation fail apply issues

Commit Message

Xiaoyu Min Aug. 7, 2018, 2:20 p.m. UTC
  There is a need to rewrite TTL by decrease or just set it directly,
and it's not necessary to check if the final result is zero or not.

This is slightly different from the one defined by openflow and
make the actions more generic.




Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
---
 lib/librte_ethdev/rte_flow.h | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
  

Comments

Ferruh Yigit Aug. 23, 2018, 2 p.m. UTC | #1
On 8/7/2018 3:20 PM, Jack Min wrote:
> There is a need to rewrite TTL by decrease or just set it directly,
> and it's not necessary to check if the final result is zero or not.
> 
> This is slightly different from the one defined by openflow and
> make the actions more generic.
> 
> 
> 
> 
> Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>

Looks good to me.

Can we use existing testpmd commands to test these new actions?
  
Xiaoyu Min Aug. 24, 2018, 7:17 a.m. UTC | #2
On Thu, Aug 23, 2018 at 03:00:53PM +0100, Ferruh Yigit wrote:
> On 8/7/2018 3:20 PM, Jack Min wrote:
> > There is a need to rewrite TTL by decrease or just set it directly,
> > and it's not necessary to check if the final result is zero or not.
> > 
> > This is slightly different from the one defined by openflow and
> > make the actions more generic.
> > 
> > 
> > 
> > 
> > Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
> 
> Looks good to me.
> 
> Can we use existing testpmd commands to test these new actions?
No, I don't think so.
The current TTL related testpmd commands are all for OpenFlow variety

-Jack
  
Ferruh Yigit Aug. 24, 2018, 8:48 a.m. UTC | #3
On 8/24/2018 8:17 AM, Jack MIN wrote:
> On Thu, Aug 23, 2018 at 03:00:53PM +0100, Ferruh Yigit wrote:
>> On 8/7/2018 3:20 PM, Jack Min wrote:
>>> There is a need to rewrite TTL by decrease or just set it directly,
>>> and it's not necessary to check if the final result is zero or not.
>>>
>>> This is slightly different from the one defined by openflow and
>>> make the actions more generic.
>>>
>>>
>>>
>>>
>>> Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
>>
>> Looks good to me.
>>
>> Can we use existing testpmd commands to test these new actions?
> No, I don't think so.

Can you please update testpmd counterpart of new actions so that they can be tested?

> The current TTL related testpmd commands are all for OpenFlow variety
> 
> -Jack
>
  

Patch

diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
index f8ba71cdb..fbf88f9fd 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -1505,6 +1505,26 @@  enum rte_flow_action_type {
         * error.
         */
        RTE_FLOW_ACTION_TYPE_NVGRE_DECAP,
+
+       /**
+        * Decrease TTL value directly
+        *
+        * If flow pattern doesn't define a valid RTE_FLOW_ITEM_TYPE_IPV4, or
+        * RTE_FLOW_ITEM_TYPE_IPV6, the PMD should return a
+        * RTE_FLOW_ERROR_TYPE_ACTION error.
+        */
+       RTE_FLOW_ACTION_TYPE_DEC_TTL,
+
+       /**
+        * Set TTL value
+        *
+        * If flow pattern doesn't define a valid RTE_FLOW_ITEM_TYPE_IPV4, or
+        * RTE_FLOW_ITEM_TYPE_IPV6, the PMD should return a
+        * RTE_FLOW_ERROR_TYPE_ACTION error.
+        *
+        * See struct rte_flow_action_set_ttl
+        */
+       RTE_FLOW_ACTION_TYPE_SET_TTL,
 };
 
 /**
@@ -1868,6 +1888,20 @@  struct rte_flow_action_nvgre_encap {
        struct rte_flow_item *definition;
 };
 
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * RTE_FLOW_ACTION_TYPE_SET_TTL
+ *
+ * Set the TTL value directly for IPv4 or IPv6
+ * The RTE_FLOW_ITEM_TYPE_IPV4 or RTE_FLOW_ITEM_TYPE_IPV6
+ * must be present in pattern
+ */
+struct rte_flow_action_set_ttl {
+       uint8_t ttl_value;
+}
+
 /*
  * Definition of a single action.
  *