wanpipe-kernel-sources/kdrivers/include/wanpipe_xdlc_iface.h

112 lines
2.8 KiB
C

/*
* These are the public elements of the Linux XDLC module.
*/
#ifndef _WP_XDLC_IFACE_H
#define _WP_XDLC_IFACE_H
enum xdlc_error_codes{
EXCEP_LINK_CONNECTED = 0,
EXCEP_LINK_CONNECTING,
EXCEP_LINK_DISCONNECTED,
EXCEP_LINK_DISCONNECTING,
EXCEP_OOB_EXCEPTIONS,
EXCEP_NO_RESPONSE_COUNTER,
EXCEP_FRM_RETRANS_COUNTER,
EXCEP_RNR_COUNTER,
EXCEP_SEC_NRM_TIMEOUT,
EXCEP_PRI_RD_FRAME_RECEIVED,
EXCEP_FRM_DM_FRAME_RECEIVED,
EXCEP_SEC_SNRM_FRAME_RECEIVED,
EXCEP_SEC_DISC_FRAME_RECEIVED,
EXCEP_FRMR_FRAME_RECEIVED,
EXCEP_FRMR_FRAME_TRANSMITTED
};
#define XDLC_STATE_DECODE(_state_) (\
(_state_==EXCEP_LINK_CONNECTED)?"Connected": \
(_state_==EXCEP_LINK_CONNECTING)?"Connecting": \
(_state_==EXCEP_LINK_DISCONNECTED)?"Disconnected": \
(_state_==EXCEP_LINK_DISCONNECTING)?"Disconnecting": "Unknown" )
#define XDLC_EXCEP_DECODE(_error_) (\
(_error_==EXCEP_NO_RESPONSE_COUNTER)?"No Response Timeout": \
(_error_==EXCEP_FRM_RETRANS_COUNTER)?"Frame Re-Transmit Timeout": \
\
(_error_==EXCEP_RNR_COUNTER)?"Consec RNR Rx Timeout": \
(_error_==EXCEP_SEC_NRM_TIMEOUT)?"Sec NRM Timeout": \
\
(_error_==EXCEP_PRI_RD_FRAME_RECEIVED)?"Pri RD Received": \
(_error_==EXCEP_FRM_DM_FRAME_RECEIVED)?"DM Frame Received": \
(_error_==EXCEP_SEC_SNRM_FRAME_RECEIVED)?"Sec SNRM Received": \
(_error_==EXCEP_SEC_DISC_FRAME_RECEIVED)?"Sec DISC Received": \
\
(_error_==EXCEP_FRMR_FRAME_RECEIVED)?"Frame Reject Received": \
(_error_==EXCEP_FRMR_FRAME_TRANSMITTED)?"Frame Reject Transmiteed" : "None")
enum xdlc_ioctl_cmds {
SIOCS_XDLC_SET_CONF,
SIOCS_XDLC_GET_CONF,
SIOCS_XDLC_START,
SIOCS_XDLC_STOP,
SIOCS_XDLC_ENABLE_IFRAMES,
SIOCS_XDLC_DISABLE_IFRAMES,
SIOCS_XDLC_CLEAR_POLL_TMR,
SIOCS_XDLC_FLUSH_TX_BUF,
SIOCS_XDLC_GET_STATS,
SIOCS_XDLC_FLUSH_STATS
};
typedef struct{
unsigned char state;
unsigned char address;
unsigned short exception;
}wp_xdlc_excep_t;
#if 0
typedef struct wp_xdlc_reg
{
int (*prot_state_change) (void *, int, unsigned char*, int);
int (*chan_state_change) (void *, int, unsigned char*, int);
int (*tx_down) (void *, void *);
int (*rx_up) (void *, void *);
}wp_xdlc_reg_t;
#endif
extern void *wp_reg_xdlc_prot(void *link_ptr,
char *devname,
void *conf,
wplip_prot_reg_t *prot_reg);
extern int wp_unreg_xdlc_prot(void *xdlc_link_ptr);
extern void *wp_reg_xdlc_addr(void *,
void *,
char *,
void *,
unsigned char);
extern int wp_unreg_xdlc_addr(void *);
extern int wp_xdlc_open(void *);
extern int wp_xdlc_close(void *);
extern int wp_xdlc_rx(void *, void *);
extern int wp_xdlc_rx_kick(void *);
extern int wp_xdlc_bh(void *);
extern int wp_xdlc_tx(void *, void *, int type);
extern int wp_xdlc_timer(void *, unsigned int *period, unsigned int);
extern int wp_xdlc_ioctl(void *, int, void *);
#endif