1e36db1eeSRoi Dayan /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2e36db1eeSRoi Dayan /* Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */
3e36db1eeSRoi Dayan 
4e36db1eeSRoi Dayan #ifndef __MLX5_EN_TC_ACT_PEDIT_H__
5e36db1eeSRoi Dayan #define __MLX5_EN_TC_ACT_PEDIT_H__
6e36db1eeSRoi Dayan 
7e36db1eeSRoi Dayan #include "en_tc.h"
8e36db1eeSRoi Dayan 
9e36db1eeSRoi Dayan struct pedit_headers {
10e36db1eeSRoi Dayan 	struct ethhdr   eth;
11e36db1eeSRoi Dayan 	struct vlan_hdr vlan;
12e36db1eeSRoi Dayan 	struct iphdr    ip4;
13e36db1eeSRoi Dayan 	struct ipv6hdr  ip6;
14e36db1eeSRoi Dayan 	struct tcphdr   tcp;
15e36db1eeSRoi Dayan 	struct udphdr   udp;
16e36db1eeSRoi Dayan };
17e36db1eeSRoi Dayan 
18e36db1eeSRoi Dayan struct pedit_headers_action {
19e36db1eeSRoi Dayan 	struct pedit_headers vals;
20e36db1eeSRoi Dayan 	struct pedit_headers masks;
21e36db1eeSRoi Dayan 	u32 pedits;
22e36db1eeSRoi Dayan };
23e36db1eeSRoi Dayan 
24e36db1eeSRoi Dayan int
25e36db1eeSRoi Dayan mlx5e_tc_act_pedit_parse_action(struct mlx5e_priv *priv,
26e36db1eeSRoi Dayan 				const struct flow_action_entry *act, int namespace,
27697319b2SMaor Dickman 				struct pedit_headers_action *hdrs,
28e36db1eeSRoi Dayan 				struct netlink_ext_ack *extack);
29e36db1eeSRoi Dayan 
30e36db1eeSRoi Dayan #endif /* __MLX5_EN_TC_ACT_PEDIT_H__ */
31