xref: /linux/drivers/net/dsa/realtek/rtl8365mb_vlan.h (revision 9da2c8672f77108a1f09232320f22225ab53dde9)
1*9da2c867SAlvin Šipraga /* SPDX-License-Identifier: GPL-2.0 */
2*9da2c867SAlvin Šipraga /* VLAN configuration interface for the rtl8365mb switch family
3*9da2c867SAlvin Šipraga  *
4*9da2c867SAlvin Šipraga  * Copyright (C) 2022 Alvin Šipraga <alsi@bang-olufsen.dk>
5*9da2c867SAlvin Šipraga  *
6*9da2c867SAlvin Šipraga  */
7*9da2c867SAlvin Šipraga 
8*9da2c867SAlvin Šipraga #ifndef _REALTEK_RTL8365MB_VLAN_H
9*9da2c867SAlvin Šipraga #define _REALTEK_RTL8365MB_VLAN_H
10*9da2c867SAlvin Šipraga 
11*9da2c867SAlvin Šipraga #include <linux/types.h>
12*9da2c867SAlvin Šipraga 
13*9da2c867SAlvin Šipraga #include "realtek.h"
14*9da2c867SAlvin Šipraga 
15*9da2c867SAlvin Šipraga enum rtl8365mb_frame_ingress {
16*9da2c867SAlvin Šipraga 	RTL8365MB_FRAME_TYPE_ANY_FRAME = 0,
17*9da2c867SAlvin Šipraga 	RTL8365MB_FRAME_TYPE_TAGGED_ONLY,
18*9da2c867SAlvin Šipraga 	RTL8365MB_FRAME_TYPE_UNTAGGED_ONLY,
19*9da2c867SAlvin Šipraga };
20*9da2c867SAlvin Šipraga 
21*9da2c867SAlvin Šipraga int rtl8365mb_vlan_port_get_pvid(struct realtek_priv *priv, int port,
22*9da2c867SAlvin Šipraga 				 u16 *pvid);
23*9da2c867SAlvin Šipraga int
24*9da2c867SAlvin Šipraga rtl8365mb_vlan_port_get_framefilter(struct realtek_priv *priv,
25*9da2c867SAlvin Šipraga 				    int port,
26*9da2c867SAlvin Šipraga 				    enum rtl8365mb_frame_ingress *frame_type);
27*9da2c867SAlvin Šipraga int
28*9da2c867SAlvin Šipraga rtl8365mb_vlan_port_set_framefilter(struct realtek_priv *priv,
29*9da2c867SAlvin Šipraga 				    int port,
30*9da2c867SAlvin Šipraga 				    enum rtl8365mb_frame_ingress frame_type);
31*9da2c867SAlvin Šipraga int rtl8365mb_vlan_4k_port_add(struct dsa_switch *ds, int port,
32*9da2c867SAlvin Šipraga 			       const struct switchdev_obj_port_vlan *vlan,
33*9da2c867SAlvin Šipraga 			       struct netlink_ext_ack *extack);
34*9da2c867SAlvin Šipraga int rtl8365mb_vlan_4k_port_del(struct dsa_switch *ds, int port,
35*9da2c867SAlvin Šipraga 			       const struct switchdev_obj_port_vlan *vlan);
36*9da2c867SAlvin Šipraga int rtl8365mb_vlan_pvid_port_set(struct dsa_switch *ds, int port, u16 vid,
37*9da2c867SAlvin Šipraga 				 struct netlink_ext_ack *extack);
38*9da2c867SAlvin Šipraga int rtl8365mb_vlan_pvid_port_clear(struct dsa_switch *ds, int port, u16 vid);
39*9da2c867SAlvin Šipraga #endif /* _REALTEK_RTL8365MB_VLAN_H */
40