1 /******************************************************************************/
3 /* bypass library, Copyright (c) 2004 Silicom, Ltd */
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. */
14 /******************************************************************************/
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 */
44 #define WD_MIN_TIME_GET(desc) (desc & 0xf)
45 #define WDT_STEP_TIME 0x10
53 * is_bypass - check if device is a Bypass controlling device
54 * @if_index: network device index
57 * 1 - if device is bypass controlling device,
58 * 0 - if device is bypass slave device
59 * -1 - device not support Bypass
61 int is_bypass_sd(int if_index);
64 * get_bypass_slave - get second port participate in the Bypass pair
65 * @if_index: network device index
68 * network device index of the slave device
69 * -1 - on failure (device not support Bypass or it's a slave device)
71 int get_bypass_slave_sd(int if_index);
74 * get_bypass_caps - get second port participate in the Bypass pair
75 * @if_index: network device index
78 * flags word on success;flag word is a 32-bit mask word with each bit defines different
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
84 * 0 BP_CAP The interface is Bypass capable in general
86 * 1 BP_STATUS_CAP The interface can report of the current Bypass mode
88 * 2 BP_STATUS_CHANGE_CAP The interface can report on a change to bypass mode from
89 * the last time the mode was defined
91 * 3 SW_CTL_CAP The interface is Software controlled capable for bypass/non bypass modes.
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
96 * watchdog timeout or set bypass command.
98 * 5 BP_DIS_STATUS_CAP The interface can report of the current DIS_BP_CAP
100 * 6 STD_NIC_CAP The interface is capable to be configured to operate as standard, non Bypass,
101 * NIC interface (have direct connection to interfaces at all power modes)
103 * 7 BP_PWOFF_NO_CAP The interface can be in Bypass mode at power off state
105 * 8 BP_PWOFF_OFF_CAP The interface can disconnect the Bypass mode at power off state without
106 * effecting all the other states of operation
108 * 9 BP_PWOFF_CTL_CAP The behavior of the Bypass mode at Power-off state can be controlled by
109 * software without effecting any other state
111 *10 BP_PWUP_ON_CAP The interface can be in Bypass mode when power is turned on
112 * (until the system take control of the bypass functionality)
114 *11 BP_PWUP_OFF_CAP The interface can disconnect from Bypass mode when power is turned on
115 * (until the system take control of the bypass functionality)
117 *12 BP_PWUP_CTL_CAP The behavior of the Bypass mode at Power-up can be controlled by software
119 *13 WD_CTL_CAP The interface has watchdog capabilities to turn to Bypass mode when not reset
120 * for defined period of time.
122 *14 WD_STATUS_CAP The interface can report on the watchdog status (Active/inactive)
124 *15 WD_TIMEOUT_CAP The interface can report the time left till watchdog triggers to Bypass mode.
129 int get_bypass_caps_sd(int if_index);
132 * get_wd_set_caps - Obtain watchdog timer setting capabilities
133 * @if_index: network device index
137 * Set of numbers defining the various parameters of the watchdog capable
138 * to be set to as described bellow.
139 * -1 - on failure (device not support Bypass or it's a slave device)
141 * Bit feature description
143 * 0-3 WD_MIN_TIME The interface WD minimal time period in 100mS units
145 * 4 WD_STEP_TIME The steps of the WD timer in
146 * 0 - for linear steps (WD_MIN_TIME * X)
147 * 1 - for multiply by 2 from previous step (WD_MIN_TIME * 2^X)
149 * 5-8 WD_STEP_COUNT Number of steps the WD timer supports in 2^X
150 * (X bit available for defining the value)
155 int get_wd_set_caps_sd(int if_index);
158 * set_bypass - set Bypass state
159 * @if_index: network device index of the controlling device
160 * @bypass_mode: bypass mode (1=on, 0=off)
163 * -1 - on failure (device not support Bypass or it's a slave device)
165 int set_bypass_sd(int if_index, int bypass_mode);
168 * get_bypass - Get Bypass mode state
169 * @if_index: network device index of the controlling device
171 * 0/1 - (off/on) on success
172 * -1 - on failure (device not support Bypass or it's a slave device)
174 int get_bypass_sd(int if_index);
177 * get_bypass_change - Get change of Bypass mode state from last status check
178 * @if_index: network device index of the controlling device
180 * 0/1 - (off/on) on success
181 * -1 - on failure (device not support Bypass or it's a slave device)
183 int get_bypass_change_sd(int if_index);
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)
191 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
192 * or it's a slave device)
194 int set_dis_bypass_sd(int if_index, int dis_bypass);
197 * get_dis_bypass - Get Disable Bypass mode state
198 * @if_index: network device index of the controlling device
200 * 0/1 - on success (normal Bypass mode/ Disable bypass)
201 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
202 * or it's a slave device)
204 int get_dis_bypass_sd(int if_index);
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)
212 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
213 * or it's a slave device)
215 int set_bypass_pwoff_sd(int if_index, int bypass_mode);
218 * get_bypass_pwoff - Get Bypass mode state at power-off state
219 * @if_index: network device index of the controlling device
221 * 0/1 - on success (Disable bypass at power off state / normal Bypass mode)
222 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
223 * or it's a slave device)
225 int get_bypass_pwoff_sd(int if_index);
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)
233 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
234 * or it's a slave device)
236 int set_bypass_pwup_sd(int if_index, int bypass_mode);
239 * get_bypass_pwup - Get Bypass mode state at power-up state
240 * @if_index: network device index of the controlling device
242 * 0/1 - on success (Disable bypass at power up state / normal Bypass mode)
243 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
244 * or it's a slave device)
246 int get_bypass_pwup_sd(int if_index);
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
252 * @ms_timeout_set(output): requested timeout (in ms units),
253 * that the adapter supports and will be used by the watchdog
256 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
257 * or it's a slave device)
259 int set_bypass_wd_sd(int if_index, int ms_timeout, int *ms_timeout_set);
262 * get_bypass_wd - Get watchdog state
263 * @if_index: network device index of the controlling device
264 * @ms_timeout (output): WDT timeout (in ms units),
265 * -1 for unknown wdt status
266 * 0 if WDT is disabled
269 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
270 * or it's a slave device)
272 int get_bypass_wd_sd(int if_index, int *ms_timeout_set);
275 * get_wd_expire_time - Get watchdog expire
276 * @if_index: network device index of the controlling device
277 * @ms_time_left (output): time left till watchdog time expire,
278 * -1 if WDT has expired
279 * 0 if WDT is disabled
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)
285 int get_wd_expire_time_sd(int if_index, int *ms_time_left);
288 * reset_bypass_wd_timer - Reset watchdog timer
289 * @if_index: network device index of the controlling device
293 * 0 - watchdog is not configured
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)
297 int reset_bypass_wd_timer_sd(int if_index);
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)
306 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
307 * or it's a slave device)
309 int set_std_nic_sd(int if_index, int nic_mode);
312 * get_std_nic - Get Standard NIC mode setting
313 * @if_index: network device index of the controlling device
316 * 0/1 (Default Bypass mode / Standard NIC mode) on success
317 * -1 - on failure (device is not capable of the operation ordevice not support Bypass
318 * or it's a slave device)
320 int get_std_nic_sd(int if_index);
323 * set_tx - set transmitter enable/disable
324 * @if_index: network device index of the controlling device
325 * @tx_state: 0/1 (Transmit Disable / Transmit Enable)
329 * -1 - on failure (device is not capable of the operation )
331 int set_tx_sd(int if_index, int tx_state);
334 * get_tx - get transmitter state (disable / enable)
335 * @if_index: network device index of the controlling device
338 * 0/1 (ransmit Disable / Transmit Enable) on success
339 * -1 - on failure (device is not capable of the operation ordevice not support Bypass)
341 int get_tx_sd(int if_index);
344 * set_tpl - set TPL enable/disable
345 * @if_index: network device index of the controlling device
346 * @tx_state: 0/1 (TPL Disable / TPL Enable)
350 * -1 - on failure (device is not capable of the operation )
352 int set_tpl_sd(int if_index, int tpl_state);
355 * get_tpl - get TPL state (disable / enable)
356 * @if_index: network device index of the controlling device
359 * 0/1 (TPL Disable / TPL Enable) on success
360 * -1 - on failure (device is not capable of the operation)
362 int get_tpl_sd(int if_index);
364 int get_bp_hw_reset_sd(int if_index);
366 int set_bp_hw_reset_sd(int if_index, int status);
369 * set_tap - set TAP state
370 * @if_index: network device index of the controlling device
371 * @tap_mode: 1 tap mode , 0 normal nic mode
374 * -1 - on failure (device not support TAP or it's a slave device)
376 int set_tap_sd(int if_index, int tap_mode);
379 * get_tap - Get TAP mode state
380 * @if_index: network device index of the controlling device
382 * 0/1 - (off/on) on success
383 * -1 - on failure (device not support TAP or it's a slave device)
385 int get_tap_sd(int if_index);
388 * get_tap_change - Get change of TAP mode state from last status check
389 * @if_index: network device index of the controlling device
391 * 0/1 - (off/on) on success
392 * -1 - on failure (device not support TAP or it's a slave device)
394 int get_tap_change_sd(int if_index);
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)
402 * -1 - on failure (device is not capable of the operation ordevice not support TAP
403 * or it's a slave device)
405 int set_dis_tap_sd(int if_index, int dis_tap);
408 * get_dis_tap - Get Disable TAP mode state
409 * @if_index: network device index of the controlling device
411 * 0/1 - on success (normal TAP mode/ Disable TAP)
412 * -1 - on failure (device is not capable of the operation ordevice not support TAP
413 * or it's a slave device)
415 int get_dis_tap_sd(int if_index);
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)
423 * -1 - on failure (device is not capable of the operation ordevice not support TAP
424 * or it's a slave device)
426 int set_tap_pwup_sd(int if_index, int tap_mode);
429 * get_tap_pwup - Get TAP mode state at power-up state
430 * @if_index: network device index of the controlling device
432 * 0/1 - on success (Disable TAP at power up state / normal TAP mode)
433 * -1 - on failure (device is not capable of the operation ordevice not support TAP
434 * or it's a slave device)
436 int get_tap_pwup_sd(int if_index);
439 * set_wd_exp_mode - Set adapter state when WDT expired.
440 * @if_index: network device index of the controlling device
441 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
444 * -1 - on failure (device not support Bypass or it's a slave device)
446 int set_wd_exp_mode_sd(int if_index, int bypass_mode);
449 * get_wd_exp_mode - Get adapter state when WDT expired.
450 * @if_index: network device index of the controlling device
452 * 0/1 - (bypass/tap) on success
453 * -1 - on failure (device not support Bypass or it's a slave device)
455 int get_wd_exp_mode_sd(int if_index);
458 * set_wd_autoreset - reset WDT periodically.
459 * @if_index: network device index of the controlling device
460 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
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)
466 int set_wd_autoreset_sd(int if_index, int time);
469 * set_wd_autoreset - reset WDT periodically.
470 * @if_index: network device index of the controlling device
471 * @bypass_mode: adapter mode (1=tap mode, 0=bypass mode)
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)
477 int get_wd_autoreset_sd(int if_index);
479 * set_disc - set DISC state
480 * @if_index: network device index of the controlling device
481 * @tap_mode: 1 DISC mode , 0 normal nic mode
484 * -1 - on failure (device not support disconnect or it's a slave device)
486 int set_bp_disc_sd(int if_index, int disc_mode);
489 * get_disc - Get disc mode state
490 * @if_index: network device index of the controlling device
492 * 0/1 - (off/on) on success
493 * -1 - on failure (device not support disconnect or it's a slave device)
495 int get_bp_disc_sd(int if_index);
498 * get_disc_change - Get change of DISC mode state from last status check
499 * @if_index: network device index of the controlling device
501 * 0/1 - (off/on) on success
502 * -1 - on failure (device not support disconnect or it's a slave device)
504 int get_bp_disc_change_sd(int if_index);
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)
512 * -1 - on failure (device is not capable of the operation ordevice not support DISC
513 * or it's a slave device)
515 int set_bp_dis_disc_sd(int if_index, int dis_disc);
518 * get_dis_disc - Get Disable DISC mode state
519 * @if_index: network device index of the controlling device
521 * 0/1 - on success (normal DISC mode/ Disable DISC)
522 * -1 - on failure (device is not capable of the operation ordevice not support TAP
523 * or it's a slave device)
525 int get_bp_dis_disc_sd(int if_index);
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)
533 * -1 - on failure (device is not capable of the operation ordevice not support DISC
534 * or it's a slave device)
536 int set_bp_disc_pwup_sd(int if_index, int disc_mode);
539 * get_disc_pwup - Get DISC mode state at power-up state
540 * @if_index: network device index of the controlling device
542 * 0/1 - on success (Disable DISC at power up state / normal DISC mode)
543 * -1 - on failure (device is not capable of the operation ordevice not support DISC
544 * or it's a slave device)
546 int get_bp_disc_pwup_sd(int if_index);
548 int get_bypass_info_sd(int if_index, struct bp_info *bp_info);
549 int bp_if_scan_sd(void);
550 /*int get_dev_num_sd(void);*/