summaryrefslogtreecommitdiffstats
path: root/drivers/net/wan/sbni.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wan/sbni.h')
-rw-r--r--drivers/net/wan/sbni.h194
1 files changed, 194 insertions, 0 deletions
diff --git a/drivers/net/wan/sbni.h b/drivers/net/wan/sbni.h
new file mode 100644
index 000000000..2e34d8d34
--- /dev/null
+++ b/drivers/net/wan/sbni.h
@@ -0,0 +1,194 @@
+/*
+ * sbni.h - header file for sbni linux device driver
+ *
+ * Copyright (C) 1999 Granch ltd., Yaroslav Polyakov (xenon@granch.ru).
+ *
+ */
+
+/*
+ * SBNI12 definitions
+ *
+ * Revision 2.0.0 1997/08/27
+ * Initial revision
+ *
+ * Revision 2.1.0 1999/04/26
+ * dev_priv structure changed to support balancing and some other features.
+ *
+ */
+
+#ifndef __SBNI_H
+#define __SBNI_H
+
+#define SBNI_DEBUG 0
+
+#if SBNI_DEBUG
+#define DP( A ) A
+#else
+#define DP( A )
+#endif
+
+typedef unsigned char BOOLEAN;
+
+#define TRUE 1
+#define FALSE 0
+
+#define SBNI_IO_EXTENT 0x4
+#define SB_MAX_BUFFER_ARRAY 1023
+
+#define CSR0 0
+#define CSR1 1
+
+#define DAT 2
+
+/* CSR0 mapping */
+#define BU_EMP (1 << 1) /* r z */
+#define RC_CHK (1 << 2) /* rw */
+#define CT_ZER (1 << 3) /* w */
+#define TR_REQ (1 << 4) /* rwz* */
+
+#define TR_RDY (1 << 5) /* r z */
+#define EN_INT (1 << 6) /* rwz* */
+#define RC_RDY (1 << 7) /* r z */
+
+/* CSR1 mapping */
+#define PR_RES (1 << 7) /* w */
+
+struct sbni_csr1 {
+ unsigned rxl:5;
+ unsigned rate:2;
+ unsigned:1;
+};
+
+#define DEF_RXL_DELTA -1
+#define DEF_RXL 0xf
+#define DEF_RATE 0
+#define DEF_FRAME_LEN (1023 - 14 - 9)
+
+#ifdef MODULE
+
+#define SBNI_MAX_NUM_CARDS 8
+#define SBNI_MAX_SLAVES 8
+
+
+#endif /* MODULE */
+
+#define SBNI_SIG 0x5a
+
+#define SB_ETHER_MIN_LEN 60
+
+#define SB_FILLING_CHAR (unsigned char)0x00
+#define TR_ERROR_COUNT 32
+#define CHANGE_LEVEL_START_TICKS 4
+#define SBNI_INTERNAL_QUEUE_SIZE 10 /* 100 ? */
+
+#define PACKET_FIRST_FRAME (unsigned short)0x8000
+#define RECEIVE_FRAME_RESEND (unsigned short)0x0800
+#define PACKET_RESEND 0x4000
+#define PACKET_SEND_OK 0x3000
+#define PACKET_LEN_MASK (unsigned short)0x03ff
+#define PACKET_INF_MASK (unsigned short)0x7000
+
+#define ETHER_ADDR_LEN 6
+
+#define SBNI_TIMEOUT HZ/10 /* ticks to wait for pong or packet */
+ /* sbni watchdog called SBNI_HZ times per sec. */
+
+struct sbni_in_stats {
+ unsigned int all_rx_number;
+ unsigned int bad_rx_number;
+ unsigned int timeout_number;
+ unsigned int all_tx_number;
+ unsigned int resend_tx_number;
+};
+
+
+/*
+ * Board-specific info in dev->priv.
+ */
+struct net_local {
+ struct enet_statistics stats;
+
+ struct timer_list watchdog;
+ unsigned int realframelen; /* the current size of the SB-frame */
+ unsigned int eth_trans_buffer_len; /* tx buffer length */
+ unsigned int outpos;
+ unsigned int inppos;
+ unsigned int frame_len; /* The set SB-frame size */
+ unsigned int tr_err;
+ unsigned int timer_ticks;
+ BOOLEAN last_receive_OK;
+ BOOLEAN tr_resend;
+
+ unsigned char wait_frame_number;
+ unsigned char eth_trans_buffer[1520]; /* tx buffer */
+ unsigned char HSCounter; /* Reserved field */
+ unsigned char eth_rcv_buffer[2600]; /* rx buffer */
+ struct sbni_csr1 csr1;
+ /* Internal Statistics */
+ struct sbni_in_stats in_stats;
+
+ int rxl_curr; /* current receive level value [0..0xf] */
+ int rxl_delta; /* receive level delta (+1, -1)
+ rxl_delta == 0 - receive level
+ autodetection
+ disabled */
+ unsigned int ok_curr; /* current ok frames received */
+ unsigned int ok_prev; /* previous ok frames received */
+ unsigned int timeout_rxl;
+
+ struct sk_buff_head queue;
+ struct sk_buff *currframe;
+ BOOLEAN waitack;
+
+ struct net_device *m; /* master */
+ struct net_device *me; /* me */
+ struct net_local *next_lp; /* next lp */
+
+ int carrier;
+
+
+};
+
+
+struct sbni_hard_header {
+
+ /* internal sbni stuff */
+ unsigned int crc; /* 4 */
+ unsigned short packetlen; /* 2 */
+ unsigned char number; /* 1 */
+ unsigned char reserv; /* 1 */
+
+ /* 8 */
+
+ /* ethernet stuff */
+ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
+ unsigned char h_source[ETH_ALEN]; /* source ether addr */
+ unsigned short h_proto; /* packet type ID field */
+ /* +14 */
+ /* 22 */
+
+};
+
+#define SBNI_HH_SZ 22
+
+struct sbni_flags {
+ unsigned rxl:4;
+ unsigned rate:2;
+ unsigned fixed_rxl:1;
+ unsigned fixed_rate:1;
+};
+
+#define RCV_NO 0
+#define RCV_OK 1
+#define RCV_WR 2
+
+
+#define SIOCDEVGETINSTATS SIOCDEVPRIVATE
+#define SIOCDEVRESINSTATS SIOCDEVPRIVATE+1
+#define SIOCDEVGHWSTATE SIOCDEVPRIVATE+2
+#define SIOCDEVSHWSTATE SIOCDEVPRIVATE+3
+#define SIOCDEVENSLAVE SIOCDEVPRIVATE+4
+#define SIOCDEVEMANSIPATE SIOCDEVPRIVATE+5
+
+
+#endif /* __SBNI_H */