]>
Commit | Line | Data |
---|---|---|
4ea54e3f CC |
1 | /* |
2 | * Copyright 2015 Freescale Semiconductor, Inc. | |
3 | * | |
4 | * SPDX-License-Identifier: GPL-2.0+ | |
5 | * | |
6 | * Ethernet Switch commands | |
7 | */ | |
8 | ||
9 | #ifndef _CMD_ETHSW_H_ | |
10 | #define _CMD_ETHSW_H_ | |
11 | ||
12 | #define ETHSW_MAX_CMD_PARAMS 20 | |
13 | #define ETHSW_CMD_PORT_ALL -1 | |
22449858 | 14 | #define ETHSW_CMD_VLAN_ALL -1 |
4ea54e3f CC |
15 | |
16 | /* IDs used to track keywords in a command */ | |
17 | enum ethsw_keyword_id { | |
18 | ethsw_id_key_end = -1, | |
19 | ethsw_id_help, | |
20 | ethsw_id_show, | |
21 | ethsw_id_port, | |
22 | ethsw_id_enable, | |
23 | ethsw_id_disable, | |
86719f0c CC |
24 | ethsw_id_statistics, |
25 | ethsw_id_clear, | |
68c929da CC |
26 | ethsw_id_learning, |
27 | ethsw_id_auto, | |
22449858 CC |
28 | ethsw_id_vlan, |
29 | ethsw_id_fdb, | |
30 | ethsw_id_add, | |
31 | ethsw_id_del, | |
32 | ethsw_id_flush, | |
a2477924 CC |
33 | ethsw_id_pvid, |
34 | ethsw_id_untagged, | |
35 | ethsw_id_all, | |
36 | ethsw_id_none, | |
37 | ethsw_id_egress, | |
38 | ethsw_id_tag, | |
39 | ethsw_id_classified, | |
21d214fc CC |
40 | ethsw_id_shared, |
41 | ethsw_id_private, | |
5ed1bacd CC |
42 | ethsw_id_ingress, |
43 | ethsw_id_filtering, | |
4ea54e3f CC |
44 | ethsw_id_count, /* keep last */ |
45 | }; | |
46 | ||
47 | enum ethsw_keyword_opt_id { | |
48 | ethsw_id_port_no = ethsw_id_count + 1, | |
22449858 | 49 | ethsw_id_vlan_no, |
a2477924 | 50 | ethsw_id_pvid_no, |
22449858 CC |
51 | ethsw_id_add_del_no, |
52 | ethsw_id_add_del_mac, | |
4ea54e3f CC |
53 | ethsw_id_count_all, /* keep last */ |
54 | }; | |
55 | ||
56 | struct ethsw_command_def { | |
57 | int cmd_to_keywords[ETHSW_MAX_CMD_PARAMS]; | |
58 | int cmd_keywords_nr; | |
59 | int port; | |
22449858 CC |
60 | int vid; |
61 | uchar ethaddr[6]; | |
4ea54e3f CC |
62 | int (*cmd_function)(struct ethsw_command_def *parsed_cmd); |
63 | }; | |
64 | ||
65 | /* Structure to be created and initialized by an Ethernet Switch driver */ | |
66 | struct ethsw_command_func { | |
67 | const char *ethsw_name; | |
68 | int (*port_enable)(struct ethsw_command_def *parsed_cmd); | |
69 | int (*port_disable)(struct ethsw_command_def *parsed_cmd); | |
70 | int (*port_show)(struct ethsw_command_def *parsed_cmd); | |
86719f0c CC |
71 | int (*port_stats)(struct ethsw_command_def *parsed_cmd); |
72 | int (*port_stats_clear)(struct ethsw_command_def *parsed_cmd); | |
68c929da CC |
73 | int (*port_learn)(struct ethsw_command_def *parsed_cmd); |
74 | int (*port_learn_show)(struct ethsw_command_def *parsed_cmd); | |
22449858 CC |
75 | int (*fdb_show)(struct ethsw_command_def *parsed_cmd); |
76 | int (*fdb_flush)(struct ethsw_command_def *parsed_cmd); | |
77 | int (*fdb_entry_add)(struct ethsw_command_def *parsed_cmd); | |
78 | int (*fdb_entry_del)(struct ethsw_command_def *parsed_cmd); | |
a2477924 CC |
79 | int (*pvid_show)(struct ethsw_command_def *parsed_cmd); |
80 | int (*pvid_set)(struct ethsw_command_def *parsed_cmd); | |
81 | int (*vlan_show)(struct ethsw_command_def *parsed_cmd); | |
82 | int (*vlan_set)(struct ethsw_command_def *parsed_cmd); | |
83 | int (*port_untag_show)(struct ethsw_command_def *parsed_cmd); | |
84 | int (*port_untag_set)(struct ethsw_command_def *parsed_cmd); | |
85 | int (*port_egr_vlan_show)(struct ethsw_command_def *parsed_cmd); | |
86 | int (*port_egr_vlan_set)(struct ethsw_command_def *parsed_cmd); | |
21d214fc CC |
87 | int (*vlan_learn_show)(struct ethsw_command_def *parsed_cmd); |
88 | int (*vlan_learn_set)(struct ethsw_command_def *parsed_cmd); | |
5ed1bacd CC |
89 | int (*port_ingr_filt_show)(struct ethsw_command_def *parsed_cmd); |
90 | int (*port_ingr_filt_set)(struct ethsw_command_def *parsed_cmd); | |
4ea54e3f CC |
91 | }; |
92 | ||
93 | int ethsw_define_functions(const struct ethsw_command_func *cmd_func); | |
94 | ||
95 | #endif /* _CMD_ETHSW_H_ */ |