⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wanpipe.h

📁 umon bootloader source code, support mips cpu.
💻 H
📖 第 1 页 / 共 2 页
字号:

#define WANPIPE		0x00
#define API		0x01
#define BRIDGE		0x02
#define BRIDGE_NODE	0x03

#ifdef	__KERNEL__
/****** Kernel Interface ****************************************************/

#include <linux/sdladrv.h>	/* SDLA support module API definitions */
#include <linux/sdlasfm.h>	/* SDLA firmware module definitions */
#include <linux/workqueue.h>
#include <linux/serial.h>
#include <linux/serialP.h>
#include <linux/serial_reg.h>
#include <asm/serial.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>


#define	is_digit(ch) (((ch)>=(unsigned)'0'&&(ch)<=(unsigned)'9')?1:0)
#define	is_alpha(ch) ((((ch)>=(unsigned)'a'&&(ch)<=(unsigned)'z')||\
	 	  ((ch)>=(unsigned)'A'&&(ch)<=(unsigned)'Z'))?1:0)
#define	is_hex_digit(ch) ((((ch)>=(unsigned)'0'&&(ch)<=(unsigned)'9')||\
	 	  ((ch)>=(unsigned)'a'&&(ch)<=(unsigned)'f')||\
	 	  ((ch)>=(unsigned)'A'&&(ch)<=(unsigned)'F'))?1:0)


/****** Data Structures *****************************************************/

/* Adapter Data Space.
 * This structure is needed because we handle multiple cards, otherwise
 * static data would do it.
 */
typedef struct sdla
{
	char devname[WAN_DRVNAME_SZ+1];	/* card name */
	sdlahw_t hw;			/* hardware configuration */
	struct wan_device wandev;	/* WAN device data space */
	
	unsigned open_cnt;		/* number of open interfaces */
	unsigned long state_tick;	/* link state timestamp */
	unsigned intr_mode;		/* Type of Interrupt Mode */
	char in_isr;			/* interrupt-in-service flag */
	char buff_int_mode_unbusy;	/* flag for carrying out dev_tint */  
	char dlci_int_mode_unbusy;	/* flag for carrying out dev_tint */
	long configured;		/* flag for previous configurations */
	
	unsigned short irq_dis_if_send_count; /* Disabling irqs in if_send*/
	unsigned short irq_dis_poll_count;   /* Disabling irqs in poll routine*/
	unsigned short force_enable_irq;
	char TracingEnabled;		/* flag for enabling trace */
	global_stats_t statistics;	/* global statistics */
	void* mbox;			/* -> mailbox */
	void* rxmb;			/* -> receive mailbox */
	void* flags;			/* -> adapter status flags */
	void (*isr)(struct sdla* card);	/* interrupt service routine */
	void (*poll)(struct sdla* card); /* polling routine */
	int (*exec)(struct sdla* card, void* u_cmd, void* u_data);
					/* Used by the listen() system call */		
	/* Wanpipe Socket Interface */
	int   (*func) (struct sk_buff *, struct sock *);
	struct sock *sk;

	/* Shutdown function */
	void (*disable_comm) (struct sdla *card);

	/* Secondary Port Device: Piggibacking */
	struct sdla *next;

	/* TTY driver variables */
	unsigned char tty_opt;
	struct tty_struct *tty;
	unsigned int tty_minor;
	unsigned int tty_open;
	unsigned char *tty_buf;
	unsigned char *tty_rx;
	struct work_struct tty_work;
	
	union
	{
		struct
		{			/****** X.25 specific data **********/
			u32 lo_pvc;
			u32 hi_pvc;
			u32 lo_svc;
			u32 hi_svc;
			struct net_device *svc_to_dev_map[MAX_X25_LCN];
			struct net_device *pvc_to_dev_map[MAX_X25_LCN];
			struct net_device *tx_dev;
			struct net_device *cmd_dev;
			u32 no_dev;
			volatile u8 *hdlc_buf_status;
			u32 tx_interrupts_pending;
                        u16 timer_int_enabled;
			struct net_device *poll_device;
			atomic_t command_busy;

			u16 udp_pkt_lgth;
                        u32 udp_type;
                        u8  udp_pkt_src;
			u32 udp_lcn;
                        struct net_device *udp_dev;
                        s8 udp_pkt_data[MAX_LGTH_UDP_MGNT_PKT];

		 	u8 LAPB_hdlc;		/* Option to turn off X25 and run only LAPB */
			u8 logging;		/* Option to log call messages */
			u8 oob_on_modem;	/* Option to send modem status to the api */
			u16 num_of_ch;		/* Number of channels configured by the user */

			struct work_struct x25_poll_work;
			struct timer_list x25_timer;
		} x;
		struct
		{			/****** frame relay specific data ***/
			void* rxmb_base;	/* -> first Rx buffer */
			void* rxmb_last;	/* -> last Rx buffer */
			unsigned rx_base;	/* S508 receive buffer base */
			unsigned rx_top;	/* S508 receive buffer end */
			unsigned short node_dlci[100];
			unsigned short dlci_num;
                        struct net_device *dlci_to_dev_map[991 + 1];
                        unsigned tx_interrupts_pending;
                        unsigned short timer_int_enabled;
                        unsigned short udp_pkt_lgth;
                        int udp_type;
                        char udp_pkt_src;
                        unsigned udp_dlci;
                        char udp_pkt_data[MAX_LGTH_UDP_MGNT_PKT];
                        void* trc_el_base;      		/* first trace element */
                        void* trc_el_last;      		/* last trace element */
                        void *curr_trc_el;      		/* current trace element */
                        unsigned short trc_bfr_space; 		/* trace buffer space */
			unsigned char  update_comms_stats;
			struct net_device *arp_dev;
			spinlock_t if_send_lock;
		} f;
		struct			/****** PPP-specific data ***********/
		{
			char if_name[WAN_IFNAME_SZ+1];	/* interface name */
			void* txbuf;		/* -> current Tx buffer */
			void* txbuf_base;	/* -> first Tx buffer */
			void* txbuf_last;	/* -> last Tx buffer */
			void* rxbuf_base;	/* -> first Rx buffer */
			void* rxbuf_last;	/* -> last Rx buffer */
			unsigned rx_base;	/* S508 receive buffer base */
			unsigned rx_top;	/* S508 receive buffer end */
			char ip_mode;		/* STATIC/HOST/PEER IP Mode */
			char authenticator;	/* Authenticator for PAP/CHAP */
			unsigned char comm_enabled; /* Is comm enabled or not */
			unsigned char peer_route;   /* Process Peer Route */	
			unsigned long *txbuf_next;  /* Next Tx buffer to use */ 
			unsigned long *rxbuf_next;  /* Next Rx buffer to use */
		} p;
		struct			/* Cisco HDLC-specific data */
		{
			char if_name[WAN_IFNAME_SZ+1];	/* interface name */
			unsigned char comm_port;/* Communication Port O or 1 */
			unsigned char usedby;  /* Used by WANPIPE or API */
			void* rxmb;		/* Receive mail box */
			void* flags;		/* flags */
			void* tx_status;	/* Tx status element */
			void* rx_status;	/* Rx status element */
			void* txbuf;		/* -> current Tx buffer */
			void* txbuf_base;	/* -> first Tx buffer */
			void* txbuf_last;	/* -> last Tx buffer */
			void* rxbuf_base;	/* -> first Rx buffer */
			void* rxbuf_last;	/* -> last Rx buffer */
			unsigned rx_base;	/* S508 receive buffer base */
			unsigned rx_top;	/* S508 receive buffer end */
			unsigned char receive_only; /* high speed receivers */
			unsigned short protocol_options;
			unsigned short kpalv_tx;	/* Tx kpalv timer */
			unsigned short kpalv_rx;	/* Rx kpalv timer */
			unsigned short kpalv_err;	/* Error tolerance */
			unsigned short slarp_timer;	/* SLARP req timer */
			unsigned state;			/* state of the link */
			unsigned char api_status;
			unsigned char update_call_count;
			unsigned short api_options;	/* for async config */
			unsigned char  async_mode;
		        unsigned short tx_bits_per_char;
		        unsigned short rx_bits_per_char;
		        unsigned short stop_bits;
		        unsigned short parity;
			unsigned short break_timer;
		        unsigned short inter_char_timer;
		        unsigned short rx_complete_length;
		        unsigned short xon_char;
		        unsigned short xoff_char;
			unsigned char comm_enabled; /* Is comm enabled or not */
			unsigned char backup;
		} c;
		struct
		{
			void* tx_status;	/* Tx status element */
			void* rx_status;	/* Rx status element */
			void* trace_status;	/* Trace status element */
			void* txbuf;		/* -> current Tx buffer */
			void* txbuf_base;	/* -> first Tx buffer */
			void* txbuf_last;	/* -> last Tx buffer */
			void* rxbuf_base;	/* -> first Rx buffer */
			void* rxbuf_last;	/* -> last Rx buffer */
			void* tracebuf;		/* -> current Trace buffer */
			void* tracebuf_base;	/* -> current Trace buffer */
			void* tracebuf_last;	/* -> current Trace buffer */
			unsigned rx_base;	/* receive buffer base */
			unsigned rx_end;	/* receive buffer end */
			unsigned trace_base;	/* trace buffer base */
			unsigned trace_end;	/* trace buffer end */

		} h;
	} u;
} sdla_t;

/****** Public Functions ****************************************************/

void wanpipe_open      (sdla_t* card);			/* wpmain.c */
void wanpipe_close     (sdla_t* card);			/* wpmain.c */
void wanpipe_set_state (sdla_t* card, int state);	/* wpmain.c */

int wpx_init (sdla_t* card, wandev_conf_t* conf);	/* wpx.c */
int wpf_init (sdla_t* card, wandev_conf_t* conf);	/* wpf.c */
int wpp_init (sdla_t* card, wandev_conf_t* conf);	/* wpp.c */
int wpc_init (sdla_t* card, wandev_conf_t* conf); /* Cisco HDLC */
int bsc_init (sdla_t* card, wandev_conf_t* conf);	/* BSC streaming */
int hdlc_init(sdla_t* card, wandev_conf_t* conf);	/* HDLC support */
int wpft1_init (sdla_t* card, wandev_conf_t* conf);     /* FT1 Config support */
int wsppp_init (sdla_t* card, wandev_conf_t* conf);	/* Sync PPP on top of RAW CHDLC */

extern sdla_t * wanpipe_find_card(char *);
extern sdla_t * wanpipe_find_card_num (int);

extern void wanpipe_queue_work (struct work_struct *);
extern void wanpipe_mark_bh (void);
extern void wakeup_sk_bh(struct net_device *dev);
extern int change_dev_flags(struct net_device *dev, unsigned flags);
extern unsigned long get_ip_address(struct net_device *dev, int option);
extern void add_gateway(sdla_t *card, struct net_device *dev);


#endif	/* __KERNEL__ */
#endif	/* _WANPIPE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -