net: sched: include mpls actions in hardware intermediate representation
A recent addition to TC actions is the ability to manipulate the MPLS headers on packets. In preparation to offload such actions to hardware, update the IR code to accept and prepare the new actions. Note that no driver currently impliments the MPLS dec_ttl action so this is not included. Signed-off-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
658688ce6c
commit
6749d59016
@@ -36,6 +36,7 @@
|
||||
#include <net/tc_act/tc_sample.h>
|
||||
#include <net/tc_act/tc_skbedit.h>
|
||||
#include <net/tc_act/tc_ct.h>
|
||||
#include <net/tc_act/tc_mpls.h>
|
||||
|
||||
extern const struct nla_policy rtm_tca_policy[TCA_MAX + 1];
|
||||
|
||||
@@ -3269,6 +3270,30 @@ int tc_setup_flow_action(struct flow_action *flow_action,
|
||||
entry->id = FLOW_ACTION_CT;
|
||||
entry->ct.action = tcf_ct_action(act);
|
||||
entry->ct.zone = tcf_ct_zone(act);
|
||||
} else if (is_tcf_mpls(act)) {
|
||||
switch (tcf_mpls_action(act)) {
|
||||
case TCA_MPLS_ACT_PUSH:
|
||||
entry->id = FLOW_ACTION_MPLS_PUSH;
|
||||
entry->mpls_push.proto = tcf_mpls_proto(act);
|
||||
entry->mpls_push.label = tcf_mpls_label(act);
|
||||
entry->mpls_push.tc = tcf_mpls_tc(act);
|
||||
entry->mpls_push.bos = tcf_mpls_bos(act);
|
||||
entry->mpls_push.ttl = tcf_mpls_ttl(act);
|
||||
break;
|
||||
case TCA_MPLS_ACT_POP:
|
||||
entry->id = FLOW_ACTION_MPLS_POP;
|
||||
entry->mpls_pop.proto = tcf_mpls_proto(act);
|
||||
break;
|
||||
case TCA_MPLS_ACT_MODIFY:
|
||||
entry->id = FLOW_ACTION_MPLS_MANGLE;
|
||||
entry->mpls_mangle.label = tcf_mpls_label(act);
|
||||
entry->mpls_mangle.tc = tcf_mpls_tc(act);
|
||||
entry->mpls_mangle.bos = tcf_mpls_bos(act);
|
||||
entry->mpls_mangle.ttl = tcf_mpls_ttl(act);
|
||||
break;
|
||||
default:
|
||||
goto err_out;
|
||||
}
|
||||
} else {
|
||||
goto err_out;
|
||||
}
|
||||
|
Reference in New Issue
Block a user