]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
4ea54e3f CC |
2 | /* |
3 | * Copyright 2015 Freescale Semiconductor, Inc. | |
4 | * | |
4ea54e3f CC |
5 | * Ethernet Switch commands |
6 | */ | |
7 | ||
8 | #ifndef _CMD_ETHSW_H_ | |
9 | #define _CMD_ETHSW_H_ | |
10 | ||
11 | #define ETHSW_MAX_CMD_PARAMS 20 | |
12 | #define ETHSW_CMD_PORT_ALL -1 | |
22449858 | 13 | #define ETHSW_CMD_VLAN_ALL -1 |
aae0e689 | 14 | #define ETHSW_CMD_AGGR_GRP_NONE -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, | |
aae0e689 | 44 | ethsw_id_aggr, |
4ea54e3f CC |
45 | ethsw_id_count, /* keep last */ |
46 | }; | |
47 | ||
48 | enum ethsw_keyword_opt_id { | |
49 | ethsw_id_port_no = ethsw_id_count + 1, | |
22449858 | 50 | ethsw_id_vlan_no, |
a2477924 | 51 | ethsw_id_pvid_no, |
22449858 CC |
52 | ethsw_id_add_del_no, |
53 | ethsw_id_add_del_mac, | |
aae0e689 | 54 | ethsw_id_aggr_no, |
4ea54e3f CC |
55 | ethsw_id_count_all, /* keep last */ |
56 | }; | |
57 | ||
58 | struct ethsw_command_def { | |
59 | int cmd_to_keywords[ETHSW_MAX_CMD_PARAMS]; | |
60 | int cmd_keywords_nr; | |
61 | int port; | |
22449858 | 62 | int vid; |
aae0e689 | 63 | int aggr_grp; |
22449858 | 64 | uchar ethaddr[6]; |
4ea54e3f CC |
65 | int (*cmd_function)(struct ethsw_command_def *parsed_cmd); |
66 | }; | |
67 | ||
68 | /* Structure to be created and initialized by an Ethernet Switch driver */ | |
69 | struct ethsw_command_func { | |
70 | const char *ethsw_name; | |
71 | int (*port_enable)(struct ethsw_command_def *parsed_cmd); | |
72 | int (*port_disable)(struct ethsw_command_def *parsed_cmd); | |
73 | int (*port_show)(struct ethsw_command_def *parsed_cmd); | |
86719f0c CC |
74 | int (*port_stats)(struct ethsw_command_def *parsed_cmd); |
75 | int (*port_stats_clear)(struct ethsw_command_def *parsed_cmd); | |
68c929da CC |
76 | int (*port_learn)(struct ethsw_command_def *parsed_cmd); |
77 | int (*port_learn_show)(struct ethsw_command_def *parsed_cmd); | |
22449858 CC |
78 | int (*fdb_show)(struct ethsw_command_def *parsed_cmd); |
79 | int (*fdb_flush)(struct ethsw_command_def *parsed_cmd); | |
80 | int (*fdb_entry_add)(struct ethsw_command_def *parsed_cmd); | |
81 | int (*fdb_entry_del)(struct ethsw_command_def *parsed_cmd); | |
a2477924 CC |
82 | int (*pvid_show)(struct ethsw_command_def *parsed_cmd); |
83 | int (*pvid_set)(struct ethsw_command_def *parsed_cmd); | |
84 | int (*vlan_show)(struct ethsw_command_def *parsed_cmd); | |
85 | int (*vlan_set)(struct ethsw_command_def *parsed_cmd); | |
86 | int (*port_untag_show)(struct ethsw_command_def *parsed_cmd); | |
87 | int (*port_untag_set)(struct ethsw_command_def *parsed_cmd); | |
88 | int (*port_egr_vlan_show)(struct ethsw_command_def *parsed_cmd); | |
89 | int (*port_egr_vlan_set)(struct ethsw_command_def *parsed_cmd); | |
21d214fc CC |
90 | int (*vlan_learn_show)(struct ethsw_command_def *parsed_cmd); |
91 | int (*vlan_learn_set)(struct ethsw_command_def *parsed_cmd); | |
5ed1bacd CC |
92 | int (*port_ingr_filt_show)(struct ethsw_command_def *parsed_cmd); |
93 | int (*port_ingr_filt_set)(struct ethsw_command_def *parsed_cmd); | |
aae0e689 CC |
94 | int (*port_aggr_show)(struct ethsw_command_def *parsed_cmd); |
95 | int (*port_aggr_set)(struct ethsw_command_def *parsed_cmd); | |
4ea54e3f CC |
96 | }; |
97 | ||
98 | int ethsw_define_functions(const struct ethsw_command_func *cmd_func); | |
99 | ||
100 | #endif /* _CMD_ETHSW_H_ */ |