brcmfmac: use control channel in roamed status reporting
[deliverable/linux.git] / drivers / staging / silicom / libbp_sd.h
CommitLineData
7040e556
D
1/******************************************************************************/
2/* */
3/* bypass library, Copyright (c) 2004 Silicom, Ltd */
4/* Corporation. */
5/* */
6/* This program is free software; you can redistribute it and/or modify */
7/* it under the terms of the GNU General Public License as published by */
8/* the Free Software Foundation, located in the file LICENSE. */
9/* */
10/* Ver 1.0.0 */
11/* */
12/* libbypass.h */
13/* */
14/******************************************************************************/
15
6aa2039d
D
16#define BP_CAP 0x01 /* BIT_0 */
17#define BP_STATUS_CAP 0x02
18#define BP_STATUS_CHANGE_CAP 0x04
19#define SW_CTL_CAP 0x08
20#define BP_DIS_CAP 0x10
21#define BP_DIS_STATUS_CAP 0x20
22#define STD_NIC_CAP 0x40
23#define BP_PWOFF_ON_CAP 0x80
24#define BP_PWOFF_OFF_CAP 0x0100
25#define BP_PWOFF_CTL_CAP 0x0200
26#define BP_PWUP_ON_CAP 0x0400
27#define BP_PWUP_OFF_CAP 0x0800
28#define BP_PWUP_CTL_CAP 0x1000
29#define WD_CTL_CAP 0x2000
30#define WD_STATUS_CAP 0x4000
31#define WD_TIMEOUT_CAP 0x8000
32#define TX_CTL_CAP 0x10000
33#define TX_STATUS_CAP 0x20000
34#define TAP_CAP 0x40000
35#define TAP_STATUS_CAP 0x80000
36#define TAP_STATUS_CHANGE_CAP 0x100000
37#define TAP_DIS_CAP 0x200000
38#define TAP_DIS_STATUS_CAP 0x400000
39#define TAP_PWUP_ON_CAP 0x800000
40#define TAP_PWUP_OFF_CAP 0x1000000
41#define TAP_PWUP_CTL_CAP 0x2000000
42#define NIC_CAP_NEG 0x4000000 /* BIT 26 */
7040e556
D
43
44#define WD_MIN_TIME_GET(desc) (desc & 0xf)
7040e556
D
45#define WDT_STEP_TIME 0x10
46
47struct bp_info {
48 char prod_name[14];
49 unsigned char fw_ver;
50};
51
52/**
53 * is_bypass - check if device is a Bypass controlling device
54 * @if_index: network device index
55 *
56 * Output:
65af0ae3 57 * 1 - if device is bypass controlling device,
7040e556
D
58 * 0 - if device is bypass slave device
59 * -1 - device not support Bypass
60 **/
61int is_bypass_sd(int if_index);
62
63/**
64 * get_bypass_slave - get second port participate in the Bypass pair
65 * @if_index: network device index
66 *
67 * Output:
68 * network device index of the slave device
65af0ae3 69 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
70 **/
71int get_bypass_slave_sd(int if_index);
72
73/**
74 * get_bypass_caps - get second port participate in the Bypass pair
75 * @if_index: network device index
76 *
77 * Output:
65af0ae3 78 * flags word on success;flag word is a 32-bit mask word with each bit defines different
7040e556
D
79 * capability as described bellow.
80 * Value of 1 for supporting this feature. 0 for not supporting this feature.
81 * -1 - on failure (if the device is not capable of the operation or not a Bypass device)
82 * Bit feature description
65af0ae3 83 *
7040e556 84 * 0 BP_CAP The interface is Bypass capable in general
65af0ae3 85 *
7040e556 86 * 1 BP_STATUS_CAP The interface can report of the current Bypass mode
65af0ae3
DC
87 *
88 * 2 BP_STATUS_CHANGE_CAP The interface can report on a change to bypass mode from
7040e556 89 * the last time the mode was defined
65af0ae3 90 *
7040e556 91 * 3 SW_CTL_CAP The interface is Software controlled capable for bypass/non bypass modes.
65af0ae3
DC
92 *
93 * 4 BP_DIS_CAP The interface is capable of disabling the Bypass mode at all times.
94 * This mode will retain its mode even during power loss and also after
95 * power recovery. This will overcome on any bypass operation due to
7040e556 96 * watchdog timeout or set bypass command.
65af0ae3 97 *
7040e556 98 * 5 BP_DIS_STATUS_CAP The interface can report of the current DIS_BP_CAP
65af0ae3
DC
99 *
100 * 6 STD_NIC_CAP The interface is capable to be configured to operate as standard, non Bypass,
7040e556 101 * NIC interface (have direct connection to interfaces at all power modes)
65af0ae3 102 *
7040e556 103 * 7 BP_PWOFF_NO_CAP The interface can be in Bypass mode at power off state
65af0ae3
DC
104 *
105 * 8 BP_PWOFF_OFF_CAP The interface can disconnect the Bypass mode at power off state without
7040e556 106 * effecting all the other states of operation
65af0ae3
DC
107 *
108 * 9 BP_PWOFF_CTL_CAP The behavior of the Bypass mode at Power-off state can be controlled by
7040e556 109 * software without effecting any other state
65af0ae3
DC
110 *
111 *10 BP_PWUP_ON_CAP The interface can be in Bypass mode when power is turned on
7040e556 112 * (until the system take control of the bypass functionality)
65af0ae3
DC
113 *
114 *11 BP_PWUP_OFF_CAP The interface can disconnect from Bypass mode when power is turned on
7040e556 115 * (until the system take control of the bypass functionality)
65af0ae3 116 *
7040e556 117 *12 BP_PWUP_CTL_CAP The behavior of the Bypass mode at Power-up can be controlled by software
65af0ae3
DC
118 *
119 *13 WD_CTL_CAP The interface has watchdog capabilities to turn to Bypass mode when not reset
7040e556 120 * for defined period of time.
f8402b63 121 *
7040e556 122 *14 WD_STATUS_CAP The interface can report on the watchdog status (Active/inactive)
f8402b63 123 *
7040e556 124 *15 WD_TIMEOUT_CAP The interface can report the time left till watchdog triggers to Bypass mode.
f8402b63
DC
125 *
126 *16-31 RESERVED
7040e556
D
127 *
128 * **/
129int get_bypass_caps_sd(int if_index);
130
131/**
132 * get_wd_set_caps - Obtain watchdog timer setting capabilities
133 * @if_index: network device index
134 *
135 * Output:
f8402b63
DC
136 *
137 * Set of numbers defining the various parameters of the watchdog capable
7040e556
D
138 * to be set to as described bellow.
139 * -1 - on failure (device not support Bypass or it's a slave device)
f8402b63 140 *
7040e556 141 * Bit feature description
f8402b63 142 *
7040e556 143 * 0-3 WD_MIN_TIME The interface WD minimal time period in 100mS units
f8402b63
DC
144 *
145 * 4 WD_STEP_TIME The steps of the WD timer in
7040e556
D
146 * 0 - for linear steps (WD_MIN_TIME * X)
147 * 1 - for multiply by 2 from previous step (WD_MIN_TIME * 2^X)
f8402b63
DC
148 *
149 * 5-8 WD_STEP_COUNT Number of steps the WD timer supports in 2^X
7040e556 150 * (X bit available for defining the value)
f8402b63
DC
151 *
152 *
153 *
7040e556
D
154 **/
155int get_wd_set_caps_sd(int if_index);
156
157/**
158 * set_bypass - set Bypass state
159 * @if_index: network device index of the controlling device
f8402b63 160 * @bypass_mode: bypass mode (1=on, 0=off)
7040e556
D
161 * Output:
162 * 0 - on success
f8402b63 163 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
164 **/
165int set_bypass_sd(int if_index, int bypass_mode);
166
167/**
168 * get_bypass - Get Bypass mode state
169 * @if_index: network device index of the controlling device
170 * Output:
171 * 0/1 - (off/on) on success
f8402b63 172 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
173 **/
174int get_bypass_sd(int if_index);
175
176/**
177 * get_bypass_change - Get change of Bypass mode state from last status check
178 * @if_index: network device index of the controlling device
179 * Output:
180 * 0/1 - (off/on) on success
f8402b63 181 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
182 **/
183int get_bypass_change_sd(int if_index);
184
185/**
186 * set_dis_bypass - Set Disable Bypass mode
187 * @if_index: network device index of the controlling device
188 * @dis_bypass: disable bypass(1=dis, 0=en)
189 * Output:
190 * 0 - on success
f8402b63
DC
191 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
192 * or it's a slave device)
7040e556
D
193 **/
194int set_dis_bypass_sd(int if_index, int dis_bypass);
195
196/**
197 * get_dis_bypass - Get Disable Bypass mode state
198 * @if_index: network device index of the controlling device
199 * Output:
200 * 0/1 - on success (normal Bypass mode/ Disable bypass)
f8402b63
DC
201 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
202 * or it's a slave device)
7040e556
D
203 **/
204int get_dis_bypass_sd(int if_index);
205
206/**
207 * set_bypass_pwoff - Set Bypass mode at power-off state
208 * @if_index: network device index of the controlling device
209 * @bypass_mode: bypass mode setting at power off state (1=BP en, 0=BP Dis)
210 * Output:
f8402b63
DC
211 * 0 - on success
212 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
213 * or it's a slave device)
7040e556
D
214 **/
215int set_bypass_pwoff_sd(int if_index, int bypass_mode);
216
217/**
218 * get_bypass_pwoff - Get Bypass mode state at power-off state
219 * @if_index: network device index of the controlling device
220 * Output:
221 * 0/1 - on success (Disable bypass at power off state / normal Bypass mode)
f8402b63
DC
222 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
223 * or it's a slave device)
7040e556
D
224 **/
225int get_bypass_pwoff_sd(int if_index);
226
227/**
228 * set_bypass_pwup - Set Bypass mode at power-up state
229 * @if_index: network device index of the controlling device
230 * @bypass_mode: bypass mode setting at power up state (1=BP en, 0=BP Dis)
231 * Output:
f8402b63
DC
232 * 0 - on success
233 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
234 * or it's a slave device)
7040e556
D
235 **/
236int set_bypass_pwup_sd(int if_index, int bypass_mode);
237
238/**
239 * get_bypass_pwup - Get Bypass mode state at power-up state
240 * @if_index: network device index of the controlling device
241 * Output:
242 * 0/1 - on success (Disable bypass at power up state / normal Bypass mode)
f8402b63
DC
243 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
244 * or it's a slave device)
7040e556
D
245 **/
246int get_bypass_pwup_sd(int if_index);
247
248/**
249 * set_bypass_wd - Set watchdog state
250 * @if_index: network device index of the controlling device
251 * @ms_timeout: requested timeout (in ms units), 0 for disabling the watchdog timer
f8402b63 252 * @ms_timeout_set(output): requested timeout (in ms units),
7040e556
D
253 * that the adapter supports and will be used by the watchdog
254 * Output:
f8402b63
DC
255 * 0 - on success
256 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
257 * or it's a slave device)
7040e556
D
258 **/
259int set_bypass_wd_sd(int if_index, int ms_timeout, int *ms_timeout_set);
260
261/**
262 * get_bypass_wd - Get watchdog state
263 * @if_index: network device index of the controlling device
f8402b63 264 * @ms_timeout (output): WDT timeout (in ms units),
7040e556
D
265 * -1 for unknown wdt status
266 * 0 if WDT is disabled
267 * Output:
268 * 0 - on success
f8402b63
DC
269 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
270 * or it's a slave device)
7040e556
D
271 **/
272int get_bypass_wd_sd(int if_index, int *ms_timeout_set);
273
274/**
275 * get_wd_expire_time - Get watchdog expire
276 * @if_index: network device index of the controlling device
f8402b63 277 * @ms_time_left (output): time left till watchdog time expire,
7040e556
D
278 * -1 if WDT has expired
279 * 0 if WDT is disabled
280 * Output:
281 * 0 - on success
f8402b63
DC
282 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
283 * or it's a slave device or unknown wdt status)
7040e556
D
284 **/
285int get_wd_expire_time_sd(int if_index, int *ms_time_left);
286
287/**
288 * reset_bypass_wd_timer - Reset watchdog timer
289 * @if_index: network device index of the controlling device
f8402b63 290 *
7040e556
D
291 * Output:
292 * 1 - on success
293 * 0 - watchdog is not configured
f8402b63
DC
294 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
295 * or it's a slave device or unknown wdt status)
7040e556
D
296 **/
297int reset_bypass_wd_timer_sd(int if_index);
298
299/**
300 * set_std_nic - Standard NIC mode of operation
301 * @if_index: network device index of the controlling device
302 * @nic_mode: 0/1 (Default Bypass mode / Standard NIC mode)
f8402b63 303 *
7040e556
D
304 * Output:
305 * 0 - on success
f8402b63
DC
306 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
307 * or it's a slave device)
7040e556
D
308 **/
309int set_std_nic_sd(int if_index, int nic_mode);
310
311/**
312 * get_std_nic - Get Standard NIC mode setting
313 * @if_index: network device index of the controlling device
f8402b63 314 *
7040e556
D
315 * Output:
316 * 0/1 (Default Bypass mode / Standard NIC mode) on success
f8402b63
DC
317 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
318 * or it's a slave device)
7040e556
D
319 **/
320int get_std_nic_sd(int if_index);
321
322/**
f8402b63 323 * set_tx - set transmitter enable/disable
7040e556
D
324 * @if_index: network device index of the controlling device
325 * @tx_state: 0/1 (Transmit Disable / Transmit Enable)
f8402b63 326 *
7040e556
D
327 * Output:
328 * 0 - on success
f8402b63 329 * -1 - on failure (device is not capable of the operation )
7040e556
D
330 **/
331int set_tx_sd(int if_index, int tx_state);
332
333/**
334 * get_tx - get transmitter state (disable / enable)
335 * @if_index: network device index of the controlling device
f8402b63 336 *
7040e556
D
337 * Output:
338 * 0/1 (ransmit Disable / Transmit Enable) on success
f8402b63 339 * -1 - on failure (device is not capable of the operation ordevice not support Bypass)
7040e556
D
340 **/
341int get_tx_sd(int if_index);
342
343/**
f8402b63 344 * set_tpl - set TPL enable/disable
7040e556
D
345 * @if_index: network device index of the controlling device
346 * @tx_state: 0/1 (TPL Disable / TPL Enable)
f8402b63 347 *
7040e556
D
348 * Output:
349 * 0 - on success
f8402b63 350 * -1 - on failure (device is not capable of the operation )
7040e556
D
351 **/
352int set_tpl_sd(int if_index, int tpl_state);
353
354/**
355 * get_tpl - get TPL state (disable / enable)
356 * @if_index: network device index of the controlling device
f8402b63 357 *
7040e556
D
358 * Output:
359 * 0/1 (TPL Disable / TPL Enable) on success
f8402b63 360 * -1 - on failure (device is not capable of the operation)
7040e556
D
361 **/
362int get_tpl_sd(int if_index);
363
364int get_bp_hw_reset_sd(int if_index);
365
366int set_bp_hw_reset_sd(int if_index, int status);
367
368/**
369 * set_tap - set TAP state
370 * @if_index: network device index of the controlling device
f8402b63 371 * @tap_mode: 1 tap mode , 0 normal nic mode
7040e556
D
372 * Output:
373 * 0 - on success
f8402b63 374 * -1 - on failure (device not support TAP or it's a slave device)
7040e556
D
375 **/
376int set_tap_sd(int if_index, int tap_mode);
377
378/**
379 * get_tap - Get TAP mode state
380 * @if_index: network device index of the controlling device
381 * Output:
382 * 0/1 - (off/on) on success
f8402b63 383 * -1 - on failure (device not support TAP or it's a slave device)
7040e556
D
384 **/
385int get_tap_sd(int if_index);
386
387/**
388 * get_tap_change - Get change of TAP mode state from last status check
389 * @if_index: network device index of the controlling device
390 * Output:
391 * 0/1 - (off/on) on success
f8402b63 392 * -1 - on failure (device not support TAP or it's a slave device)
7040e556
D
393 **/
394int get_tap_change_sd(int if_index);
395
396/**
397 * set_dis_tap - Set Disable TAP mode
398 * @if_index: network device index of the controlling device
399 * @dis_tap: disable tap(1=dis, 0=en)
400 * Output:
401 * 0 - on success
f8402b63
DC
402 * -1 - on failure (device is not capable of the operation ordevice not support TAP
403 * or it's a slave device)
7040e556
D
404 **/
405int set_dis_tap_sd(int if_index, int dis_tap);
406
407/**
408 * get_dis_tap - Get Disable TAP mode state
409 * @if_index: network device index of the controlling device
410 * Output:
411 * 0/1 - on success (normal TAP mode/ Disable TAP)
f8402b63
DC
412 * -1 - on failure (device is not capable of the operation ordevice not support TAP
413 * or it's a slave device)
7040e556
D
414 **/
415int get_dis_tap_sd(int if_index);
416
417/**
418 * set_tap_pwup - Set TAP mode at power-up state
419 * @if_index: network device index of the controlling device
420 * @bypass_mode: tap mode setting at power up state (1=TAP en, 0=TAP Dis)
421 * Output:
f8402b63 422 * 0 - on success
25dd8512
DC
423 * -1 - on failure (device is not capable of the operation ordevice not support TAP
424 * or it's a slave device)
7040e556
D
425 **/
426int set_tap_pwup_sd(int if_index, int tap_mode);
427
428/**
429 * get_tap_pwup - Get TAP mode state at power-up state
430 * @if_index: network device index of the controlling device
431 * Output:
432 * 0/1 - on success (Disable TAP at power up state / normal TAP mode)
25dd8512
DC
433 * -1 - on failure (device is not capable of the operation ordevice not support TAP
434 * or it's a slave device)
7040e556
D
435 **/
436int get_tap_pwup_sd(int if_index);
437
438/**
439 * set_wd_exp_mode - Set adapter state when WDT expired.
440 * @if_index: network device index of the controlling device
25dd8512 441 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
7040e556
D
442 * Output:
443 * 0 - on success
25dd8512 444 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
445 **/
446int set_wd_exp_mode_sd(int if_index, int bypass_mode);
447
448/**
449 * get_wd_exp_mode - Get adapter state when WDT expired.
450 * @if_index: network device index of the controlling device
451 * Output:
452 * 0/1 - (bypass/tap) on success
25dd8512 453 * -1 - on failure (device not support Bypass or it's a slave device)
7040e556
D
454 **/
455int get_wd_exp_mode_sd(int if_index);
456
457/**
458 * set_wd_autoreset - reset WDT periodically.
459 * @if_index: network device index of the controlling device
25dd8512 460 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
7040e556
D
461 * Output:
462 * 1 - on success
25dd8512
DC
463 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
464 * or it's a slave device or unknown wdt status)
7040e556
D
465 **/
466int set_wd_autoreset_sd(int if_index, int time);
467
468/**
469 * set_wd_autoreset - reset WDT periodically.
470 * @if_index: network device index of the controlling device
25dd8512 471 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
7040e556
D
472 * Output:
473 * 1 - on success
25dd8512
DC
474 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
475 * or it's a slave device or unknown wdt status)
7040e556
D
476 **/
477int get_wd_autoreset_sd(int if_index);
478/**
479 * set_disc - set DISC state
480 * @if_index: network device index of the controlling device
25dd8512 481 * @tap_mode: 1 DISC mode , 0 normal nic mode
7040e556
D
482 * Output:
483 * 0 - on success
25dd8512 484 * -1 - on failure (device not support disconnect or it's a slave device)
7040e556
D
485 **/
486int set_bp_disc_sd(int if_index, int disc_mode);
487
488/**
489 * get_disc - Get disc mode state
490 * @if_index: network device index of the controlling device
491 * Output:
492 * 0/1 - (off/on) on success
25dd8512 493 * -1 - on failure (device not support disconnect or it's a slave device)
7040e556
D
494 **/
495int get_bp_disc_sd(int if_index);
496
497/**
498 * get_disc_change - Get change of DISC mode state from last status check
499 * @if_index: network device index of the controlling device
500 * Output:
501 * 0/1 - (off/on) on success
25dd8512 502 * -1 - on failure (device not support disconnect or it's a slave device)
7040e556
D
503 **/
504int get_bp_disc_change_sd(int if_index);
505
506/**
507 * set_dis_disc - Set Disable DISC mode
508 * @if_index: network device index of the controlling device
509 * @dis_disc: disable disconnect(1=dis, 0=en)
510 * Output:
511 * 0 - on success
25dd8512
DC
512 * -1 - on failure (device is not capable of the operation ordevice not support DISC
513 * or it's a slave device)
7040e556
D
514 **/
515int set_bp_dis_disc_sd(int if_index, int dis_disc);
516
517/**
518 * get_dis_disc - Get Disable DISC mode state
519 * @if_index: network device index of the controlling device
520 * Output:
521 * 0/1 - on success (normal DISC mode/ Disable DISC)
25dd8512
DC
522 * -1 - on failure (device is not capable of the operation ordevice not support TAP
523 * or it's a slave device)
7040e556
D
524 **/
525int get_bp_dis_disc_sd(int if_index);
526
527/**
528 * set_disc_pwup - Set DISC mode at power-up state
529 * @if_index: network device index of the controlling device
530 * @disc_mode: DISC mode setting at power up state (1= en, 0= Dis)
531 * Output:
25dd8512
DC
532 * 0 - on success
533 * -1 - on failure (device is not capable of the operation ordevice not support DISC
534 * or it's a slave device)
7040e556
D
535 **/
536int set_bp_disc_pwup_sd(int if_index, int disc_mode);
537
538/**
539 * get_disc_pwup - Get DISC mode state at power-up state
540 * @if_index: network device index of the controlling device
541 * Output:
542 * 0/1 - on success (Disable DISC at power up state / normal DISC mode)
25dd8512
DC
543 * -1 - on failure (device is not capable of the operation ordevice not support DISC
544 * or it's a slave device)
7040e556
D
545 **/
546int get_bp_disc_pwup_sd(int if_index);
547
548int get_bypass_info_sd(int if_index, struct bp_info *bp_info);
549int bp_if_scan_sd(void);
550/*int get_dev_num_sd(void);*/
This page took 0.070862 seconds and 5 git commands to generate.