Linux Audio

Check our new training course

In-person Linux kernel drivers training

Jun 16-20, 2025
Register
Loading...
Note: File does not exist in v3.1.
 1/* SPDX-License-Identifier: GPL-2.0+ */
 2/* Microchip Sparx5 Switch driver VCAP implementation
 3 *
 4 * Copyright (c) 2022 Microchip Technology Inc. and its subsidiaries.
 5 *
 6 * The Sparx5 Chip Register Model can be browsed at this location:
 7 * https://github.com/microchip-ung/sparx-5_reginfo
 8 */
 9
10#ifndef __SPARX5_VCAP_IMPL_H__
11#define __SPARX5_VCAP_IMPL_H__
12
13#include <linux/types.h>
14#include <linux/list.h>
15
16#include "vcap_api.h"
17#include "vcap_api_client.h"
18
19#define SPARX5_VCAP_CID_IS2_L0 VCAP_CID_INGRESS_STAGE2_L0 /* IS2 lookup 0 */
20#define SPARX5_VCAP_CID_IS2_L1 VCAP_CID_INGRESS_STAGE2_L1 /* IS2 lookup 1 */
21#define SPARX5_VCAP_CID_IS2_L2 VCAP_CID_INGRESS_STAGE2_L2 /* IS2 lookup 2 */
22#define SPARX5_VCAP_CID_IS2_L3 VCAP_CID_INGRESS_STAGE2_L3 /* IS2 lookup 3 */
23#define SPARX5_VCAP_CID_IS2_MAX \
24	(VCAP_CID_INGRESS_STAGE2_L3 + VCAP_CID_LOOKUP_SIZE - 1) /* IS2 Max */
25
26/* IS2 port keyset selection control */
27
28/* IS2 non-ethernet traffic type keyset generation */
29enum vcap_is2_port_sel_noneth {
30	VCAP_IS2_PS_NONETH_MAC_ETYPE,
31	VCAP_IS2_PS_NONETH_CUSTOM_1,
32	VCAP_IS2_PS_NONETH_CUSTOM_2,
33	VCAP_IS2_PS_NONETH_NO_LOOKUP
34};
35
36/* IS2 IPv4 unicast traffic type keyset generation */
37enum vcap_is2_port_sel_ipv4_uc {
38	VCAP_IS2_PS_IPV4_UC_MAC_ETYPE,
39	VCAP_IS2_PS_IPV4_UC_IP4_TCP_UDP_OTHER,
40	VCAP_IS2_PS_IPV4_UC_IP_7TUPLE,
41};
42
43/* IS2 IPv4 multicast traffic type keyset generation */
44enum vcap_is2_port_sel_ipv4_mc {
45	VCAP_IS2_PS_IPV4_MC_MAC_ETYPE,
46	VCAP_IS2_PS_IPV4_MC_IP4_TCP_UDP_OTHER,
47	VCAP_IS2_PS_IPV4_MC_IP_7TUPLE,
48	VCAP_IS2_PS_IPV4_MC_IP4_VID,
49};
50
51/* IS2 IPv6 unicast traffic type keyset generation */
52enum vcap_is2_port_sel_ipv6_uc {
53	VCAP_IS2_PS_IPV6_UC_MAC_ETYPE,
54	VCAP_IS2_PS_IPV6_UC_IP_7TUPLE,
55	VCAP_IS2_PS_IPV6_UC_IP6_STD,
56	VCAP_IS2_PS_IPV6_UC_IP4_TCP_UDP_OTHER,
57};
58
59/* IS2 IPv6 multicast traffic type keyset generation */
60enum vcap_is2_port_sel_ipv6_mc {
61	VCAP_IS2_PS_IPV6_MC_MAC_ETYPE,
62	VCAP_IS2_PS_IPV6_MC_IP_7TUPLE,
63	VCAP_IS2_PS_IPV6_MC_IP6_VID,
64	VCAP_IS2_PS_IPV6_MC_IP6_STD,
65	VCAP_IS2_PS_IPV6_MC_IP4_TCP_UDP_OTHER,
66};
67
68/* IS2 ARP traffic type keyset generation */
69enum vcap_is2_port_sel_arp {
70	VCAP_IS2_PS_ARP_MAC_ETYPE,
71	VCAP_IS2_PS_ARP_ARP,
72};
73
74/* Get the port keyset for the vcap lookup */
75int sparx5_vcap_get_port_keyset(struct net_device *ndev,
76				struct vcap_admin *admin,
77				int cid,
78				u16 l3_proto,
79				struct vcap_keyset_list *kslist);
80
81#endif /* __SPARX5_VCAP_IMPL_H__ */