summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wct4xxp
diff options
context:
space:
mode:
authorRuss Meyerriecks <rmeyerriecks@digium.com>2010-07-26 23:18:57 +0000
committerRuss Meyerriecks <rmeyerriecks@digium.com>2010-07-26 23:18:57 +0000
commite5f76c64ad75d59fb984fd2f88e3c753730d72c1 (patch)
tree3c19a25856f997c9a46866d61598bcd1e074dc1b /drivers/dahdi/wct4xxp
parent3eba5c3c21c11486e9485d7a717706836216b7f8 (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.c23
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);