]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/etherswitch/etherswitch_if.m
dts: Update our copy for arm, arm64 and riscv dts to Linux 5.5
[FreeBSD/FreeBSD.git] / sys / dev / etherswitch / etherswitch_if.m
1 # $FreeBSD$
2
3 #include <sys/bus.h>
4
5 # Needed for ifreq/ifmediareq
6 #include <sys/socket.h>
7 #include <net/if.h>
8
9 #include <dev/etherswitch/etherswitch.h>
10
11 INTERFACE etherswitch;
12
13 #
14 # Default implementation
15 #
16 CODE {
17         static void
18         null_etherswitch_lock(device_t dev)
19         {
20         }
21
22         static void
23         null_etherswitch_unlock(device_t dev)
24         {
25         }
26
27         static int
28         null_etherswitch_getconf(device_t dev, etherswitch_conf_t *conf)
29         {
30                 return (0);
31         }
32
33         static int
34         null_etherswitch_setconf(device_t dev, etherswitch_conf_t *conf)
35         {
36                 return (0);
37         }
38
39         static int
40         null_etherswitch_flush_all(device_t dev)
41         {
42
43                 return (ENXIO);
44         }
45
46         static int
47         null_etherswitch_flush_port(device_t dev, int port)
48         {
49
50                 return (ENXIO);
51         }
52
53         static int
54         null_etherswitch_flush_mac(device_t dev,
55             etherswitch_atu_flush_macentry_t *e)
56         {
57
58                 return (ENXIO);
59         }
60
61         static int
62         null_etherswitch_fetch_table(device_t dev,
63             etherswitch_atu_table_t *table)
64         {
65
66                 table->es_nitems = 0;
67                 return (ENXIO);
68         }
69
70         static int
71         null_etherswitch_fetch_entry(device_t dev,
72             etherswitch_atu_entry_t *e)
73         {
74
75                 return (ENXIO);
76         }
77 };
78
79 #
80 # Return device info
81 #
82 METHOD etherswitch_info_t* getinfo {
83         device_t        dev;
84 }
85
86 #
87 # Lock access to switch registers
88 #
89 METHOD void lock {
90         device_t        dev;
91 } DEFAULT null_etherswitch_lock;
92
93 #
94 # Unlock access to switch registers
95 #
96 METHOD void unlock {
97         device_t        dev;
98 } DEFAULT null_etherswitch_unlock;
99
100 #
101 # Read switch register
102 #
103 METHOD int readreg {
104         device_t        dev;
105         int             reg;
106 };
107
108 #
109 # Write switch register
110 #
111 METHOD int writereg {
112         device_t        dev;
113         int             reg;
114         int             value;
115 };
116
117 #
118 # Read PHY register
119 #
120 METHOD int readphyreg {
121         device_t        dev;
122         int             phy;
123         int             reg;
124 };
125
126 #
127 # Write PHY register
128 #
129 METHOD int writephyreg {
130         device_t        dev;
131         int             phy;
132         int             reg;
133         int             value;
134 };
135
136 #
137 # Get port configuration
138 #
139 METHOD int getport {
140         device_t        dev;
141         etherswitch_port_t *vg;
142 }
143
144 #
145 # Set port configuration
146 #
147 METHOD int setport {
148         device_t        dev;
149         etherswitch_port_t *vg;
150 }
151
152 #
153 # Get VLAN group configuration
154 #
155 METHOD int getvgroup {
156         device_t        dev;
157         etherswitch_vlangroup_t *vg;
158 }
159
160 #
161 # Set VLAN group configuration
162 #
163 METHOD int setvgroup {
164         device_t        dev;
165         etherswitch_vlangroup_t *vg;
166 }
167
168 #
169 # Get the Switch configuration
170 #
171 METHOD int getconf {
172         device_t        dev;
173         etherswitch_conf_t      *conf;
174 } DEFAULT null_etherswitch_getconf;
175
176 #
177 # Set the Switch configuration
178 #
179 METHOD int setconf {
180         device_t        dev;
181         etherswitch_conf_t      *conf;
182 } DEFAULT null_etherswitch_setconf;
183
184 #
185 # Flush all of the programmed/learnt MAC addresses
186 #
187 METHOD int flush_all {
188         device_t dev;
189 } DEFAULT null_etherswitch_flush_all;
190
191 #
192 # Flush a single MAC address entry
193 #
194 METHOD int flush_mac {
195         device_t dev;
196         etherswitch_atu_flush_macentry_t *entry;
197 } DEFAULT null_etherswitch_flush_mac;
198
199 #
200 # Flush all of the dynamic MAC addresses on a given port
201 #
202 METHOD int flush_port {
203         device_t dev;
204         int port;
205 } DEFAULT null_etherswitch_flush_port;
206
207 #
208 # Fetch the address table from the ethernet switch.
209 #
210 METHOD int fetch_table {
211         device_t dev;
212         etherswitch_atu_table_t *table;
213 } DEFAULT null_etherswitch_fetch_table;
214
215 #
216 # Fetch a single entry from the ethernet switch table.
217 #
218 METHOD int fetch_table_entry {
219         device_t dev;
220         etherswitch_atu_entry_t *entry;
221 } DEFAULT null_etherswitch_fetch_entry;