diff options
author | Russ Meyerriecks <rmeyerriecks@digium.com> | 2010-07-26 23:18:57 +0000 |
---|---|---|
committer | Russ Meyerriecks <rmeyerriecks@digium.com> | 2010-07-26 23:18:57 +0000 |
commit | e5f76c64ad75d59fb984fd2f88e3c753730d72c1 (patch) | |
tree | 3c19a25856f997c9a46866d61598bcd1e074dc1b /drivers/dahdi/wct4xxp | |
parent | 3eba5c3c21c11486e9485d7a717706836216b7f8 (diff) |
wct4xxp: Error counter injection for E1 mode
Added support for error counter injection for E1 mode
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9013 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wct4xxp')
-rw-r--r-- | drivers/dahdi/wct4xxp/base.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c index 95c1e4e..d670ee7 100644 --- a/drivers/dahdi/wct4xxp/base.c +++ b/drivers/dahdi/wct4xxp/base.c @@ -1461,6 +1461,27 @@ static int t4_maint(struct dahdi_span *span, int cmd) dev_info(&wc->dev->dev, "Only local loop supported in E1 mode\n"); return -ENOSYS; + case DAHDI_MAINT_FAS_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, IFASE); + break; + case DAHDI_MAINT_MULTI_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, IMFE); + break; + case DAHDI_MAINT_CRC_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, ICRCE); + break; + case DAHDI_MAINT_CAS_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, ICASE); + break; + case DAHDI_MAINT_PRBS_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, IPE); + break; + case DAHDI_MAINT_BIPOLAR_DEFECT: + t4_framer_out(wc, span->offset, IERR_T, IBV); + break; + case DAHDI_RESET_COUNTERS: + t4_reset_counters(span); + break; case DAHDI_MAINT_ALARM_SIM: dev_info(&wc->dev->dev, "Invoking alarm state"); reg = t4_framer_in(wc, span->offset, FMR0); @@ -2411,7 +2432,7 @@ static void __t4_configure_e1(struct t4 *wc, int unit, int lineconfig) __t4_framer_out(wc, unit, FRMR_IMR0, 0xff & ~((wc->tspans[unit]->sigchan) ? HDLC_IMR0_MASK : 0)); /* IMR0: We care about CRC errors, CAS changes, etc */ __t4_framer_out(wc, unit, FRMR_IMR1, 0x3f & ~((wc->tspans[unit]->sigchan) ? HDLC_IMR1_MASK : 0)); /* IMR1: We care about loopup / loopdown */ __t4_framer_out(wc, unit, 0x16, 0x00); /* IMR2: We care about all the alarm stuff! */ - __t4_framer_out(wc, unit, 0x17, 0x44 | imr3extra); /* IMR3: AIS */ + __t4_framer_out(wc, unit, 0x17, 0x04 | imr3extra); /* IMR3: AIS */ __t4_framer_out(wc, unit, 0x18, 0x3f); /* IMR4: We care about slips on transmit */ printk(KERN_INFO "TE%dXXP: Span %d configured for %s/%s%s\n", wc->numspans, unit + 1, framing, line, crc4); |