/* * MPC external interface * Note that ctc_mpc_xyz are called with a lock on ................
*/
/* port_number is the mpc device 0, 1, 2 etc mpc2 is port_number 2 */
/* passive open Just wait for XID2 exchange */ externint ctc_mpc_alloc_channel(int port, void (*callback)(int port_num, int max_write_size)); /* active open Alloc then send XID2 */ externvoid ctc_mpc_establish_connectivity(int port, void (*callback)(int port_num, int rc, int max_write_size));
externvoid ctc_mpc_dealloc_ch(int port); externvoid ctc_mpc_flow_control(int port, int flowc);
/* * other MPC Group prototypes and structures
*/
#define ETH_P_SNA_DIX 0x80D5
/* * Declaration of an XID2 *
*/ #define ALLZEROS 0x0000000000000000
struct mpc_group { struct tasklet_struct mpc_tasklet; struct tasklet_struct mpc_tasklet2; int changed_side; int saved_state; int channels_terminating; int out_of_sequence; int flow_off_called; int port_num; int port_persist; int alloc_called;
__u32 xid2_adj_id;
__u8 xid2_tgnum;
__u32 xid2_sender_id; int num_channel_paths; int active_channels[2];
__u16 group_max_buflen; int outstanding_xid2; int outstanding_xid7; int outstanding_xid7_p2; int sweep_req_pend_num; int sweep_rsp_pend_num; struct sk_buff *xid_skb; char *xid_skb_data; struct th_header *xid_th; struct xid2 *xid; char *xid_id; struct th_header *rcvd_xid_th; struct sk_buff *rcvd_xid_skb; char *rcvd_xid_data;
__u8 in_sweep;
__u8 roll; struct xid2 *saved_xid2; void (*allochanfunc)(int, int); int allocchan_callback_retries; void (*estconnfunc)(int, int, int); int estconn_callback_retries; int estconn_called; int xidnogood; int send_qllc_disc;
fsm_timer timer;
fsm_instance *fsm; /* group xid fsm */
};
#ifdef DEBUGDATA void ctcmpc_dumpit(char *buf, int len); #else staticinlinevoid ctcmpc_dumpit(char *buf, int len)
{
} #endif
#ifdef DEBUGDATA /* * Dump header and first 16 bytes of an sk_buff for debugging purposes. * * skb The struct sk_buff to dump. * offset Offset relative to skb-data, where to start the dump.
*/ void ctcmpc_dump_skb(struct sk_buff *skb, int offset); #else staticinlinevoid ctcmpc_dump_skb(struct sk_buff *skb, int offset)
{} #endif
staticinlinevoid ctcmpc_dump32(char *buf, int len)
{ if (len < 32)
ctcmpc_dumpit(buf, len); else
ctcmpc_dumpit(buf, 32);
}
void ctcm_ccw_check_rc(struct channel *, int, char *); void mpc_group_ready(unsignedlong adev); void mpc_channel_action(struct channel *ch, int direction, int action); void mpc_action_send_discontact(unsignedlong thischan); void mpc_action_discontact(fsm_instance *fi, int event, void *arg); void ctcmpc_bh(unsignedlong thischan); #endif /* --- This is the END my friend --- */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.