brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 7ef470b Raw
109 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/* Microchip Sparx5 Switch driver3 *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 */15enum 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/* Controls ES0 forwarding  */25enum SPX5_FORWARDING_SEL {26	SPX5_FWSEL_NO_ACTION,27	SPX5_FWSEL_COPY_TO_LOOPBACK,28	SPX5_FWSEL_REDIRECT_TO_LOOPBACK,29	SPX5_FWSEL_DISCARD,30};31 32/* Controls tag A (outer tagging) */33enum SPX5_OUTER_TAG_SEL {34	SPX5_OTAG_PORT,35	SPX5_OTAG_TAG_A,36	SPX5_OTAG_FORCED_PORT,37	SPX5_OTAG_UNTAG,38};39 40/* Selects TPID for ES0 tag A */41enum SPX5_TPID_A_SEL {42	SPX5_TPID_A_8100,43	SPX5_TPID_A_88A8,44	SPX5_TPID_A_CUST1,45	SPX5_TPID_A_CUST2,46	SPX5_TPID_A_CUST3,47	SPX5_TPID_A_CLASSIFIED,48};49 50/* Selects VID for ES0 tag A */51enum SPX5_VID_A_SEL {52	SPX5_VID_A_CLASSIFIED,53	SPX5_VID_A_VAL,54	SPX5_VID_A_IFH,55	SPX5_VID_A_RESERVED,56};57 58/* Select PCP source for ES0 tag A */59enum SPX5_PCP_A_SEL {60	SPX5_PCP_A_CLASSIFIED,61	SPX5_PCP_A_VAL,62	SPX5_PCP_A_RESERVED,63	SPX5_PCP_A_POPPED,64	SPX5_PCP_A_MAPPED_0,65	SPX5_PCP_A_MAPPED_1,66	SPX5_PCP_A_MAPPED_2,67	SPX5_PCP_A_MAPPED_3,68};69 70/* Select DEI source for ES0 tag A */71enum SPX5_DEI_A_SEL {72	SPX5_DEI_A_CLASSIFIED,73	SPX5_DEI_A_VAL,74	SPX5_DEI_A_REW,75	SPX5_DEI_A_POPPED,76	SPX5_DEI_A_MAPPED_0,77	SPX5_DEI_A_MAPPED_1,78	SPX5_DEI_A_MAPPED_2,79	SPX5_DEI_A_MAPPED_3,80};81 82/* Controls tag B (inner tagging) */83enum SPX5_INNER_TAG_SEL {84	SPX5_ITAG_NO_PUSH,85	SPX5_ITAG_PUSH_B_TAG,86};87 88/* Selects TPID for ES0 tag B. */89enum SPX5_TPID_B_SEL {90	SPX5_TPID_B_8100,91	SPX5_TPID_B_88A8,92	SPX5_TPID_B_CUST1,93	SPX5_TPID_B_CUST2,94	SPX5_TPID_B_CUST3,95	SPX5_TPID_B_CLASSIFIED,96};97 98int sparx5_port_setup_tc(struct net_device *ndev, enum tc_setup_type type,99			 void *type_data);100 101int sparx5_tc_matchall(struct net_device *ndev,102		       struct tc_cls_matchall_offload *tmo,103		       bool ingress);104 105int sparx5_tc_flower(struct net_device *ndev, struct flow_cls_offload *fco,106		     bool ingress);107 108#endif	/* __SPARX5_TC_H__ */109