xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/marvell/prestera/prestera_dsa.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2*4882a593Smuzhiyun /* Copyright (c) 2020 Marvell International Ltd. All rights reserved. */
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #ifndef __PRESTERA_DSA_H_
5*4882a593Smuzhiyun #define __PRESTERA_DSA_H_
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #include <linux/types.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define PRESTERA_DSA_HLEN	16
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun enum prestera_dsa_cmd {
12*4882a593Smuzhiyun 	/* DSA command is "To CPU" */
13*4882a593Smuzhiyun 	PRESTERA_DSA_CMD_TO_CPU = 0,
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun 	/* DSA command is "From CPU" */
16*4882a593Smuzhiyun 	PRESTERA_DSA_CMD_FROM_CPU,
17*4882a593Smuzhiyun };
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun struct prestera_dsa_vlan {
20*4882a593Smuzhiyun 	u16 vid;
21*4882a593Smuzhiyun 	u8 vpt;
22*4882a593Smuzhiyun 	u8 cfi_bit;
23*4882a593Smuzhiyun 	bool is_tagged;
24*4882a593Smuzhiyun };
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun struct prestera_dsa {
27*4882a593Smuzhiyun 	struct prestera_dsa_vlan vlan;
28*4882a593Smuzhiyun 	u32 hw_dev_num;
29*4882a593Smuzhiyun 	u32 port_num;
30*4882a593Smuzhiyun };
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf);
33*4882a593Smuzhiyun int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf);
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #endif /* _PRESTERA_DSA_H_ */
36