18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
28c2ecf20Sopenharmony_ci/* Copyright (c) 2020 Marvell International Ltd. All rights reserved. */
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#ifndef __PRESTERA_DSA_H_
58c2ecf20Sopenharmony_ci#define __PRESTERA_DSA_H_
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#include <linux/types.h>
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#define PRESTERA_DSA_HLEN	16
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_cienum prestera_dsa_cmd {
128c2ecf20Sopenharmony_ci	/* DSA command is "To CPU" */
138c2ecf20Sopenharmony_ci	PRESTERA_DSA_CMD_TO_CPU = 0,
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci	/* DSA command is "From CPU" */
168c2ecf20Sopenharmony_ci	PRESTERA_DSA_CMD_FROM_CPU,
178c2ecf20Sopenharmony_ci};
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cistruct prestera_dsa_vlan {
208c2ecf20Sopenharmony_ci	u16 vid;
218c2ecf20Sopenharmony_ci	u8 vpt;
228c2ecf20Sopenharmony_ci	u8 cfi_bit;
238c2ecf20Sopenharmony_ci	bool is_tagged;
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cistruct prestera_dsa {
278c2ecf20Sopenharmony_ci	struct prestera_dsa_vlan vlan;
288c2ecf20Sopenharmony_ci	u32 hw_dev_num;
298c2ecf20Sopenharmony_ci	u32 port_num;
308c2ecf20Sopenharmony_ci};
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciint prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf);
338c2ecf20Sopenharmony_ciint prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#endif /* _PRESTERA_DSA_H_ */
36