xref: /linux/drivers/net/ethernet/microchip/sparx5/sparx5_tc.h (revision 67f49869106f78882a8a09b736d4884be85aba18)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /* Microchip Sparx5 Switch driver
3  *
4  * Copyright (c) 2022 Microchip Technology Inc. and its subsidiaries.
5  */
6 
7 #ifndef __SPARX5_TC_H__
8 #define __SPARX5_TC_H__
9 
10 #include <net/flow_offload.h>
11 #include <net/pkt_cls.h>
12 #include <linux/netdevice.h>
13 
14 /* Controls how PORT_MASK is applied */
15 enum SPX5_PORT_MASK_MODE {
16 	SPX5_PMM_OR_DSTMASK,
17 	SPX5_PMM_AND_VLANMASK,
18 	SPX5_PMM_REPLACE_PGID,
19 	SPX5_PMM_REPLACE_ALL,
20 	SPX5_PMM_REDIR_PGID,
21 	SPX5_PMM_OR_PGID_MASK,
22 };
23 
24 int sparx5_port_setup_tc(struct net_device *ndev, enum tc_setup_type type,
25 			 void *type_data);
26 
27 int sparx5_tc_matchall(struct net_device *ndev,
28 		       struct tc_cls_matchall_offload *tmo,
29 		       bool ingress);
30 
31 int sparx5_tc_flower(struct net_device *ndev, struct flow_cls_offload *fco,
32 		     bool ingress);
33 
34 #endif	/* __SPARX5_TC_H__ */
35