112 lines
2.8 KiB
C
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
|