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

📄 sl_x400p.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 5 页
字号:
{	if (canputnext(RD(q))) {		mblk_t *mp;		lmi_stats_ind_t *p;		if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {			mp->b_datap->db_type = M_PROTO;			p = (typeof(p)) mp->b_wptr;			mp->b_wptr += sizeof(*p);			p->lmi_primitive = LMI_STATS_IND;			p->lmi_interval = interval;			p->lmi_timestamp = jiffies;			printd(("%s: %p: <- LMI_STATS_IND\n", DRV_NAME, xp));			putnext(RD(q), mp);			return (QR_DONE);		}		rare();		return (-ENOBUFS);	}	rare();	return (-EBUSY);}/* *  LMI_EVENT_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_event_ind(struct xp *xp, queue_t *q, sl_ulong oid, sl_ulong level){	if (canput(RD(q))) {		mblk_t *mp;		lmi_event_ind_t *p;		if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {			mp->b_datap->db_type = M_PROTO;			p = (typeof(p)) mp->b_wptr;			mp->b_wptr += sizeof(*p);			p->lmi_primitive = LMI_EVENT_IND;			p->lmi_objectid = oid;			p->lmi_timestamp = jiffies;			p->lmi_severity = level;			printd(("%s: %p: <- LMI_EVENT_IND\n", DRV_NAME, xp));			put(RD(q), mp);			return (QR_DONE);		}		rare();		return (-ENOBUFS);	}	rare();	return (-EBUSY);}#endif/* *  ========================================================================= * *  PROTOCOL STATE MACHINE FUNCTIONS * *  ========================================================================= *//* *  ------------------------------------------------------------------------ * *  Default Configuration * *  ------------------------------------------------------------------------ */STATIC lmi_option_t lmi_default_e1_chan = {	.pvar = SS7_PVAR_ITUT_00,	.popt = 0,};STATIC lmi_option_t lmi_default_t1_chan = {	.pvar = SS7_PVAR_ANSI_00,	.popt = SS7_POPT_MPLEV,};STATIC lmi_option_t lmi_default_j1_chan = {	.pvar = SS7_PVAR_JTTC_94,	.popt = SS7_POPT_MPLEV,};STATIC lmi_option_t lmi_default_e1_span = {	.pvar = SS7_PVAR_ITUT_00,	.popt = SS7_POPT_HSL | SS7_POPT_XSN,};STATIC lmi_option_t lmi_default_t1_span = {	.pvar = SS7_PVAR_ANSI_00,	.popt = SS7_POPT_MPLEV | SS7_POPT_HSL | SS7_POPT_XSN,};STATIC lmi_option_t lmi_default_j1_span = {	.pvar = SS7_PVAR_JTTC_94,	.popt = SS7_POPT_MPLEV | SS7_POPT_HSL | SS7_POPT_XSN,};STATIC sl_config_t sl_default_e1_chan = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sl_config_t sl_default_e1_span = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sl_config_t sl_default_t1_chan = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sl_config_t sl_default_t1_span = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sl_config_t sl_default_j1_chan = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sl_config_t sl_default_j1_span = {	.t1 = 45 * 1000,	.t2 = 5 * 1000,	.t2l = 20 * 1000,	.t2h = 100 * 1000,	.t3 = 1 * 1000,	.t4n = 8 * 1000,	.t4e = 500,	.t5 = 100,	.t6 = 4 * 1000,	.t7 = 1 * 1000,	.rb_abate = 3,	.rb_accept = 6,	.rb_discard = 9,	.tb_abate_1 = 128 * 272,	.tb_onset_1 = 256 * 272,	.tb_discd_1 = 384 * 272,	.tb_abate_2 = 512 * 272,	.tb_onset_2 = 640 * 272,	.tb_discd_2 = 768 * 272,	.tb_abate_3 = 896 * 272,	.tb_onset_3 = 1024 * 272,	.tb_discd_3 = 1152 * 272,	.N1 = 127,	.N2 = 8192,	.M = 5,};STATIC sdt_config_t sdt_default_e1_span = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 793544,	.De = 11328000,	.Ue = 198384000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdt_config_t sdt_default_t1_span = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 577169,	.De = 9308000,	.Ue = 144292000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdt_config_t sdt_default_j1_span = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 577169,	.De = 9308000,	.Ue = 144292000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdt_config_t sdt_default_e1_chan = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 793544,	.De = 11328000,	.Ue = 198384000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdt_config_t sdt_default_t1_chan = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 577169,	.De = 9308000,	.Ue = 144292000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdt_config_t sdt_default_j1_chan = {	.Tin = 4,	.Tie = 1,	.T = 64,	.D = 256,	.t8 = 100,	.Te = 577169,	.De = 9308000,	.Ue = 144292000,	.N = 16,	.m = 272,	.b = 8,	.f = SDT_FLAGS_ONE,};STATIC sdl_config_t sdl_default_e1_chan = {	.ifname = NULL,	.ifflags = 0,	.iftype = SDL_TYPE_DS0,	.ifrate = 64000,	.ifgtype = SDL_GTYPE_E1,	.ifgrate = 2048000,	.ifmode = SDL_MODE_PEER,	.ifgmode = SDL_GMODE_NONE,	.ifgcrc = SDL_GCRC_CRC5,	.ifclock = SDL_CLOCK_SLAVE,	.ifcoding = SDL_CODING_HDB3,	.ifframing = SDL_FRAMING_CCS,	.ifblksize = 8,	.ifleads = 0,	.ifbpv = 0,	.ifalarms = 0,	.ifrxlevel = 0,	.iftxlevel = 1,	.ifsync = 0,	.ifsyncsrc = {0, 0, 0, 0}	,};STATIC sdl_config_t sdl_default_t1_chan = {	.ifname = NULL,	.ifflags = 0,	.iftype = SDL_TYPE_DS0,	.ifrate = 64000,	.ifgtype = SDL_GTYPE_T1,	.ifgrate = 1544000,	.ifmode = SDL_MODE_PEER,	.ifgmode = SDL_GMODE_NONE,	.ifgcrc = SDL_GCRC_CRC6,	.ifclock = SDL_CLOCK_LOOP,	.ifcoding = SDL_CODING_B8ZS,	.ifframing = SDL_FRAMING_ESF,	.ifblksize = 8,	.ifleads = 0,	.ifbpv = 0,	.ifalarms = 0,	.ifrxlevel = 0,	.iftxlevel = 0,	.ifsync = 0,	.ifsyncsrc = {0, 0, 0, 0}	,};STATIC sdl_config_t sdl_default_j1_chan = {	.ifname = NULL,	.ifflags = 0,	.iftype = SDL_TYPE_DS0A,	.ifrate = 64000,	.ifgtype = SDL_GTYPE_J1,	.ifgrate = 1544000,	.ifmode = SDL_MODE_PEER,	.ifgmode = SDL_GMODE_NONE,	.ifgcrc = SDL_GCRC_CRC6J,	.ifclock = SDL_CLOCK_LOOP,	.ifcoding = SDL_CODING_B8ZS,	.ifframing = SDL_FRAMING_ESF,	.ifblksize = 8,	.ifleads = 0,	.ifbpv = 0,	.ifalarms = 0,	.ifrxlevel = 0,	.iftxlevel = 0,	.ifsync = 0,	.ifsyncsrc = {0, 0, 0, 0}	,};STATIC noinline __unlikely intxp_span_config(struct cd *cd, int span, bool timeouts){	struct sp *sp = cd->spans[span];	volatile unsigned char *xlb = &cd->xlb[span << 8];	int offset;	unsigned long timeout;	switch (cd->board) {	case V400PE:	case E400P:	case E400PSS7:	{		uint8_t ccr1 = 0, tcr1 = 0, reg18 = 0, regac = 0;		xlb[0x1a] = 0x04;	/* CCR2: set LOTCMC */#if 1		/* wierd thing to do */		for (offset = 0; offset <= 8; offset++)			xlb[offset] = 0x00;		for (offset = 0x10; offset <= 0x4f; offset++)			if (offset != 0x1a)				xlb[offset] = 0x00;#endif		xlb[0x10] = 0x20;	/* RCR1: Rsync as input */		xlb[0x11] = 0x06;	/* RCR2: Sysclk = 2.048 Mhz */		xlb[0x12] = 0x09;	/* TCR1: TSiS mode */		tcr1 = 0x09;	/* TCR1: TSiS mode */		switch (sp->config.ifframing) {		default:		case SDL_FRAMING_CCS:			ccr1 |= 0x08;			break;		case SDL_FRAMING_CAS:			tcr1 |= 0x20;			break;		}		switch (sp->config.ifcoding) {		default:		case SDL_CODING_HDB3:			ccr1 |= 0x44;			break;		case SDL_CODING_AMI:			ccr1 |= 0x00;			break;		}		switch (sp->config.ifgcrc) {		case SDL_GCRC_CRC4:			ccr1 |= 0x11;			break;		default:			ccr1 |= 0x00;			break;		}		xlb[0x12] = tcr1;		xlb[0x14] = ccr1;		if (sp->config.iftxlevel < 8) {			/* not monitoring mode */			regac = 0x00;	/* TEST3 no gain */			reg18 = 0x00;	/* 75 Ohm, Normal, transmitter on */			reg18 |= ((sp->config.iftxlevel & 0x7) << 5);	/* LBO */		} else {			/* monitoring mode */			regac = 0x00;	/* TEST3 no gain */			reg18 = 0x01;	/* 75 Ohm norm, transmitter off */			switch (sp->config.iftxlevel & 0x3) {			case 0:				break;			case 1:				regac |= 0x72;	/* TEST3 12dB gain */				break;			case 2:			case 3:				regac |= 0x70;	/* TEST3 30dB gain */				break;			}		}		// reg18 |= 0x01; /* disable transmitter */		xlb[0xac] = regac;		xlb[0x18] = reg18;		xlb[0x1b] = 0x8a;	/* CRC3: LIRST & TSCLKM */		xlb[0x20] = 0x1b;	/* TAFR */		xlb[0x21] = 0x5f;	/* TNAFR */		xlb[0x40] = 0x0b;	/* TSR1 */		if (timeouts) {			/* wierd thing to do */			for (offset = 0x41; offset <= 0x4f; offset++)

⌨️ 快捷键说明

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