net/sched: act_mpls: Add extack messages for offload failure
authorIdo Schimmel <idosch@nvidia.com>
Thu, 7 Apr 2022 07:35:25 +0000 (10:35 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Apr 2022 12:45:43 +0000 (13:45 +0100)
For better error reporting to user space, add extack messages when mpls
action offload fails.

Example:

 # echo 1 > /sys/kernel/tracing/events/netlink/netlink_extack/enable

 # tc filter add dev dummy0 ingress pref 1 proto all matchall skip_sw action mpls dec_ttl
 Error: cls_matchall: Failed to setup flow action.
 We have an error talking to the kernel

 # cat /sys/kernel/tracing/trace_pipe
       tc-182     [000] b..1.    18.693915: netlink_extack: msg=act_mpls: Offload not supported when "dec_ttl" option is used
       tc-182     [000] .....    18.693921: netlink_extack: msg=cls_matchall: Failed to setup flow action

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_mpls.c

index 23fcfa5..adabecc 100644 (file)
@@ -411,7 +411,14 @@ static int tcf_mpls_offload_act_setup(struct tc_action *act, void *entry_data,
                        entry->mpls_mangle.bos = tcf_mpls_bos(act);
                        entry->mpls_mangle.ttl = tcf_mpls_ttl(act);
                        break;
+               case TCA_MPLS_ACT_DEC_TTL:
+                       NL_SET_ERR_MSG_MOD(extack, "Offload not supported when \"dec_ttl\" option is used");
+                       return -EOPNOTSUPP;
+               case TCA_MPLS_ACT_MAC_PUSH:
+                       NL_SET_ERR_MSG_MOD(extack, "Offload not supported when \"mac_push\" option is used");
+                       return -EOPNOTSUPP;
                default:
+                       NL_SET_ERR_MSG_MOD(extack, "Unsupported MPLS mode offload");
                        return -EOPNOTSUPP;
                }
                *index_inc = 1;