162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (c) 2020 Marvell International Ltd. All rights reserved. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __PRESTERA_DSA_H_ 562306a36Sopenharmony_ci#define __PRESTERA_DSA_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/types.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define PRESTERA_DSA_HLEN 16 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cienum prestera_dsa_cmd { 1262306a36Sopenharmony_ci /* DSA command is "To CPU" */ 1362306a36Sopenharmony_ci PRESTERA_DSA_CMD_TO_CPU = 0, 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci /* DSA command is "From CPU" */ 1662306a36Sopenharmony_ci PRESTERA_DSA_CMD_FROM_CPU, 1762306a36Sopenharmony_ci}; 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct prestera_dsa_vlan { 2062306a36Sopenharmony_ci u16 vid; 2162306a36Sopenharmony_ci u8 vpt; 2262306a36Sopenharmony_ci u8 cfi_bit; 2362306a36Sopenharmony_ci bool is_tagged; 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistruct prestera_dsa { 2762306a36Sopenharmony_ci struct prestera_dsa_vlan vlan; 2862306a36Sopenharmony_ci u32 hw_dev_num; 2962306a36Sopenharmony_ci u32 port_num; 3062306a36Sopenharmony_ci u8 cpu_code; 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciint prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf); 3462306a36Sopenharmony_ciint prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf); 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#endif /* _PRESTERA_DSA_H_ */ 37