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