diff options
author | John Hurley <john.hurley@netronome.com> | 2019-04-15 16:56:03 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-04-15 15:45:36 -0700 |
commit | 8af56f40e53b102a1f7ef5cd2b057cd6db776d6e (patch) | |
tree | afc33722607e7a62e09133bd2619e4d16c2b0fbf /drivers/net/ethernet/netronome/nfp/flower/main.h | |
parent | aa6ce2ea0c9301f7d418982d3c0612eec926ac91 (diff) | |
download | linux-8af56f40e53b102a1f7ef5cd2b057cd6db776d6e.tar.bz2 |
nfp: flower: offload merge flows
A merge flow is formed from 2 sub flows. The match fields of the merge are
the same as the first sub flow that has formed it, with the actions being
a combination of the first and second sub flow. Therefore, a merge flow
should replace sub flow 1 when offloaded.
Offload valid merge flows by using a new 'flow mod' message type to
replace an existing offloaded rule. Track the deletion of sub flows that
are linked to a merge flow and revert offloaded merge rules if required.
Signed-off-by: John Hurley <john.hurley@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/flower/main.h')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/flower/main.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h index 896f538d6997..675f43f06526 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.h +++ b/drivers/net/ethernet/netronome/nfp/flower/main.h @@ -253,6 +253,7 @@ struct nfp_fl_payload { char *mask_data; char *action_data; struct list_head linked_flows; + bool in_hw; }; struct nfp_fl_payload_link { @@ -329,6 +330,8 @@ int nfp_compile_flow_metadata(struct nfp_app *app, struct tc_cls_flower_offload *flow, struct nfp_fl_payload *nfp_flow, struct net_device *netdev); +void __nfp_modify_flow_metadata(struct nfp_flower_priv *priv, + struct nfp_fl_payload *nfp_flow); int nfp_modify_flow_metadata(struct nfp_app *app, struct nfp_fl_payload *nfp_flow); |