From 60e53c078d01dde090ab90a7067f5c3e40ce0211 Mon Sep 17 00:00:00 2001 From: Ivan Malov Date: Sat, 6 Nov 2021 00:54:09 +0300 Subject: [PATCH] net/sfc: support decrement IP TTL actions in transfer flows These actions map to MAE action DECR_IP_TTL. It affects the outermost header in the current processing state of the packet, which might have been decapsulated by prior action DECAP. It also updates IPv4 checksum accordingly. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- doc/guides/nics/features/sfc.ini | 2 ++ doc/guides/nics/sfc_efx.rst | 4 ++++ drivers/net/sfc/sfc_mae.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini index 0d785f4765..1ce2dc46ba 100644 --- a/doc/guides/nics/features/sfc.ini +++ b/doc/guides/nics/features/sfc.ini @@ -62,10 +62,12 @@ vxlan = Y [rte_flow actions] count = Y +dec_ttl = Y drop = Y flag = Y jump = P mark = Y +of_dec_nw_ttl = Y of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 960e25bf98..00b95a4f58 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -234,6 +234,10 @@ Supported actions (***transfer*** rules): - OF_VLAN_SET_PCP +- OF_DEC_NW_TTL + +- DEC_TTL + - VXLAN_DECAP - VXLAN_ENCAP diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index 411f2ac27e..93cce60a3e 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -3587,6 +3587,14 @@ sfc_mae_rule_parse_action(struct sfc_adapter *sa, bundle->actions_mask); rc = efx_mae_action_set_populate_vlan_pop(spec); break; + case RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL: + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL, + bundle->actions_mask); + SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_DEC_TTL, + bundle->actions_mask); + rc = efx_mae_action_set_populate_decr_ip_ttl(spec); + break; case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN: SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN, bundle->actions_mask); -- 2.20.1