[svn-commits] tzafrir: linux/trunk r10387 - /linux/trunk/drivers/dahdi/xpp/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Mon Jan 2 08:06:05 CST 2012
Author: tzafrir
Date: Mon Jan 2 08:05:58 2012
New Revision: 10387
URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10387
Log:
xpp: BRI: remove legacy BRISTUFF code
Signed-off-by: Oron Peled <oron.peled at xorcom.com>
Acked-By: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
Modified:
linux/trunk/drivers/dahdi/xpp/card_bri.c
linux/trunk/drivers/dahdi/xpp/xpp_dahdi.c
Modified: linux/trunk/drivers/dahdi/xpp/card_bri.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/xpp/card_bri.c?view=diff&rev=10387&r1=10386&r2=10387
==============================================================================
--- linux/trunk/drivers/dahdi/xpp/card_bri.c (original)
+++ linux/trunk/drivers/dahdi/xpp/card_bri.c Mon Jan 2 08:05:58 2012
@@ -34,6 +34,10 @@
#include "xbus-core.h"
static const char rcsid[] = "$Id$";
+
+#ifndef DAHDI_SIG_HARDHDLC
+#error Cannot build BRI without HARDHDLC supprt
+#endif
static DEF_PARM(int, debug, 0, 0644, "Print DBG statements"); /* must be before dahdi_debug.h */
static DEF_PARM(uint, poll_interval, 500, 0644, "Poll channel state interval in milliseconds (0 - disable)");
@@ -129,22 +133,7 @@
#define REG30_LOST 3 /* in polls */
#define DCHAN_LOST 15000 /* in ticks */
-#ifdef CONFIG_DAHDI_BRI_DCHANS
-#define BRI_DCHAN_SIGCAP ( \
- DAHDI_SIG_EM | \
- DAHDI_SIG_CLEAR | \
- DAHDI_SIG_FXSLS | \
- DAHDI_SIG_FXSGS | \
- DAHDI_SIG_FXSKS | \
- DAHDI_SIG_FXOLS | \
- DAHDI_SIG_FXOGS | \
- DAHDI_SIG_FXOKS | \
- DAHDI_SIG_CAS | \
- DAHDI_SIG_SF \
- )
-#else
#define BRI_DCHAN_SIGCAP DAHDI_SIG_HARDHDLC
-#endif
#define BRI_BCHAN_SIGCAP (DAHDI_SIG_CLEAR | DAHDI_SIG_DACS)
#define IS_NT(xpd) (PHONEDEV(xpd).direction == TO_PHONE)
@@ -218,12 +207,7 @@
/*
* D-Chan: buffers + extra state info.
*/
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- int dchan_r_idx;
- byte dchan_rbuf[DCHAN_BUFSIZE];
-#else
atomic_t hdlc_pending;
-#endif
byte dchan_tbuf[DCHAN_BUFSIZE];
bool txframe_begin;
@@ -444,14 +428,7 @@
priv = xpd->priv;
BUG_ON(!priv);
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- if(debug & DBG_COMMANDS)
- dump_hex_buf(xpd, "D-Chan(abort) RX: dchan_rbuf",
- priv->dchan_rbuf, priv->dchan_r_idx);
- priv->dchan_r_idx = 0;
-#else
dahdi_hdlc_abort(dchan, event);
-#endif
}
static int bri_check_stat(xpd_t *xpd, struct dahdi_chan *dchan, byte *buf, int len)
@@ -461,21 +438,11 @@
priv = xpd->priv;
BUG_ON(!priv);
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- if(priv->dchan_r_idx < 4) {
- XPD_NOTICE(xpd, "D-Chan RX short frame (dchan_r_idx=%d)\n",
- priv->dchan_r_idx);
- dump_hex_buf(xpd, "D-Chan RX: current packet", buf, len);
- bri_hdlc_abort(xpd, dchan, DAHDI_EVENT_ABORT);
- return -EPROTO;
- }
-#else
if(len <= 0) {
XPD_NOTICE(xpd, "D-Chan RX DROP: short frame (len=%d)\n", len);
bri_hdlc_abort(xpd, dchan, DAHDI_EVENT_ABORT);
return -EPROTO;
}
-#endif
status = buf[len-1];
if(status) {
int event = DAHDI_EVENT_ABORT;
@@ -496,29 +463,7 @@
static int bri_hdlc_putbuf(xpd_t *xpd, struct dahdi_chan *dchan,
unsigned char *buf, int len)
{
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- struct BRI_priv_data *priv;
- byte *dchan_buf;
- byte *dst;
- int idx;
-
- priv = xpd->priv;
- BUG_ON(!priv);
- dchan_buf = dchan->readchunk;
- idx = priv->dchan_r_idx;
- if(idx + len >= DCHAN_BUFSIZE) {
- XPD_ERR(xpd, "D-Chan RX overflow: %d\n", idx);
- dump_hex_buf(xpd, " current packet", buf, len);
- dump_hex_buf(xpd, " dchan_buf", dchan_buf, idx);
- return -ENOSPC;
- }
- dst = dchan_buf + idx;
- idx += len;
- priv->dchan_r_idx = idx;
- memcpy(dst, buf, len);
-#else
dahdi_hdlc_putbuf(dchan, buf, len);
-#endif
return 0;
}
@@ -528,25 +473,16 @@
priv = xpd->priv;
BUG_ON(!priv);
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- dchan->bytes2receive = priv->dchan_r_idx - 1;
- dchan->eofrx = 1;
-#else
dahdi_hdlc_finish(dchan);
-#endif
-}
-
-#ifdef CONFIG_DAHDI_BRI_DCHANS
+}
+
static int rx_dchan(xpd_t *xpd, reg_cmd_t *regcmd)
{
struct BRI_priv_data *priv;
byte *src;
- byte *dst;
- byte *dchan_buf;
- struct dahdi_chan *dchan;
+ struct dahdi_chan *dchan;
uint len;
bool eoframe;
- int idx;
int ret = 0;
src = REG_XDATA(regcmd);
@@ -559,89 +495,12 @@
BUG_ON(!xpd);
priv = xpd->priv;
BUG_ON(!priv);
- xbus = xpd->xbus;
dchan = XPD_CHAN(xpd, 2);
if(!IS_OFFHOOK(xpd, 2)) { /* D-chan is used? */
static int rate_limit;
if((rate_limit++ % 1000) == 0)
XPD_DBG(SIGNAL, xpd, "D-Chan unused\n");
- dchan->bytes2receive = 0;
- dchan->bytes2transmit = 0;
- goto out;
- }
- dchan_buf = dchan->readchunk;
- idx = priv->dchan_r_idx;
- if(idx + len >= DCHAN_BUFSIZE) {
- XPD_ERR(xpd, "D-Chan RX overflow: %d\n", idx);
- dump_hex_buf(xpd, " current packet", src, len);
- dump_hex_buf(xpd, " dchan_buf", dchan_buf, idx);
- ret = -ENOSPC;
- if(eoframe)
- goto drop;
- goto out;
- }
- dst = dchan_buf + idx;
- idx += len;
- priv->dchan_r_idx = idx;
- memcpy(dst, src, len);
- if(!eoframe)
- goto out;
- if(idx < 4) {
- XPD_NOTICE(xpd, "D-Chan RX short frame (idx=%d)\n", idx);
- dump_hex_buf(xpd, "D-Chan RX: current packet", src, len);
- dump_hex_buf(xpd, "D-Chan RX: chan_buf", dchan_buf, idx);
- ret = -EPROTO;
- goto drop;
- }
- if((ret = bri_check_stat(xpd, dchan, dchan_buf, idx)) < 0)
- goto drop;
- if(debug)
- dump_dchan_packet(xpd, 0, dchan_buf, idx /* - 3 */); /* Print checksum? */
- /*
- * Tell Dahdi that we received idx-1 bytes. They include the data and a 2-byte checksum.
- * The last byte (that we don't pass on) is 0 if the checksum is correct. If it were wrong,
- * we would drop the packet in the "if(dchan_buf[idx-1])" above.
- */
- dchan->bytes2receive = idx - 1;
- dchan->eofrx = 1;
- priv->dchan_rx_counter++;
- priv->dchan_norx_ticks = 0;
-drop:
- priv->dchan_r_idx = 0;
-out:
- return ret;
-}
-#else
-static int rx_dchan(xpd_t *xpd, reg_cmd_t *regcmd)
-{
- struct BRI_priv_data *priv;
- byte *src;
- struct dahdi_chan *dchan;
- uint len;
- bool eoframe;
- int ret = 0;
-
- src = REG_XDATA(regcmd);
- len = regcmd->bytes;
- eoframe = regcmd->eoframe;
- if(len <= 0)
- return 0;
- if(!SPAN_REGISTERED(xpd)) /* Nowhere to copy data */
- return 0;
- BUG_ON(!xpd);
- priv = xpd->priv;
- BUG_ON(!priv);
- dchan = XPD_CHAN(xpd, 2);
- if(!IS_OFFHOOK(xpd, 2)) { /* D-chan is used? */
- static int rate_limit;
-
- if((rate_limit++ % 1000) == 0)
- XPD_DBG(SIGNAL, xpd, "D-Chan unused\n");
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- dchan->bytes2receive = 0;
- dchan->bytes2transmit = 0;
-#endif
goto out;
}
XPD_DBG(GENERAL, xpd, "D-Chan RX: eoframe=%d len=%d\n", eoframe, len);
@@ -663,12 +522,10 @@
out:
return ret;
}
-#endif
/*
* D-Chan transmit
*/
-#ifndef CONFIG_DAHDI_BRI_DCHANS
/* DAHDI calls this when it has data it wants to send to the HDLC controller */
static void bri_hdlc_hard_xmit(struct dahdi_chan *chan)
{
@@ -683,7 +540,6 @@
atomic_inc(&priv->hdlc_pending);
}
}
-#endif
static int bri_hdlc_getbuf(struct dahdi_chan *dchan, unsigned char *buf,
unsigned int *size)
@@ -691,18 +547,7 @@
int len = *size;
int eoframe;
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- len = dchan->bytes2transmit; /* dchan's hdlc package len */
- if(len > *size)
- len = *size; /* Silent truncation */
- eoframe = dchan->eoftx; /* dchan's end of frame */
- dchan->bytes2transmit = 0;
- dchan->eoftx = 0;
- dchan->bytes2receive = 0;
- dchan->eofrx = 0;
-#else
eoframe = dahdi_hdlc_getbuf(dchan, buf, &len);
-#endif
*size = len;
return eoframe;
}
@@ -717,10 +562,8 @@
priv = xpd->priv;
BUG_ON(!priv);
-#ifndef CONFIG_DAHDI_BRI_DCHANS
if(atomic_read(&priv->hdlc_pending) == 0)
return 0;
-#endif
if(!SPAN_REGISTERED(xpd) || !(PHONEDEV(xpd).span.flags & DAHDI_FLAG_RUNNING))
return 0;
dchan = XPD_CHAN(xpd, 2);
@@ -754,9 +597,7 @@
if(ret < 0)
XPD_NOTICE(xpd, "%s: failed sending xframe\n", __FUNCTION__);
if(eoframe) {
-#ifndef CONFIG_DAHDI_BRI_DCHANS
atomic_dec(&priv->hdlc_pending);
-#endif
priv->dchan_tx_counter++;
}
priv->dchan_notx_ticks = 0;
@@ -853,9 +694,7 @@
.chanconfig = bri_chanconfig,
.startup = bri_startup,
.shutdown = bri_shutdown,
-#ifndef CONFIG_DAHDI_BRI_DCHANS
.hdlc_hard_xmit = bri_hdlc_hard_xmit,
-#endif
.open = xpp_open,
.close = xpp_close,
.hooksig = xpp_hooksig, /* Only with RBS bits */
@@ -904,19 +743,7 @@
cur_chan->sigcap = BRI_DCHAN_SIGCAP;
clear_bit(DAHDI_FLAGBIT_HDLC, &cur_chan->flags);
priv->txframe_begin = 1;
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- priv->dchan_r_idx = 0;
- set_bit(DAHDI_FLAGBIT_BRIDCHAN, &cur_chan->flags);
- /* Setup big buffers for D-Channel rx/tx */
- cur_chan->readchunk = priv->dchan_rbuf;
- cur_chan->writechunk = priv->dchan_tbuf;
-
- cur_chan->maxbytes2transmit = MULTIBYTE_MAX_LEN;
- cur_chan->bytes2transmit = 0;
- cur_chan->bytes2receive = 0;
-#else
atomic_set(&priv->hdlc_pending, 0);
-#endif
} else {
cur_chan->sigcap = BRI_BCHAN_SIGCAP;
}
@@ -1146,15 +973,6 @@
static int BRI_card_close(xpd_t *xpd, lineno_t pos)
{
/* Clear D-Channel pending data */
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- struct dahdi_chan *chan = XPD_CHAN(xpd, pos);
-
- /* Clear D-Channel pending data */
- chan->bytes2receive = 0;
- chan->eofrx = 0;
- chan->bytes2transmit = 0;
- chan->eoftx = 0;
-#endif
if(pos == 2) {
LINE_DBG(SIGNAL, xpd, pos, "ONHOOK the whole span\n");
BIT_CLR(PHONEDEV(xpd).offhook_state, 0);
@@ -1255,9 +1073,6 @@
*
* Don't Get Mad, Get Even: Now we override dahdi :-)
*/
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- set_bit(DAHDI_FLAGBIT_BRIDCHAN, &dchan->flags);
-#endif
clear_bit(DAHDI_FLAGBIT_HDLC, &dchan->flags);
}
return 0;
@@ -1790,9 +1605,6 @@
} else {
len += sprintf(page + len, "(dead)\n");
}
-#ifndef CONFIG_DAHDI_BRI_DCHANS
- len += sprintf(page + len, "hdlc_pending=%d\n", atomic_read(&priv->hdlc_pending));
-#endif
len += sprintf(page + len, "dchan_notx_ticks: %d\n", priv->dchan_notx_ticks);
len += sprintf(page + len, "dchan_norx_ticks: %d\n", priv->dchan_norx_ticks);
len += sprintf(page + len, "LED: %-10s = %d\n", "GREEN", priv->ledstate[GREEN_LED]);
@@ -1812,22 +1624,6 @@
}
#endif
-static DRIVER_ATTR_READER(dchan_hardhdlc_show, drv,buf)
-{
- int len = 0;
-
-#if defined(CONFIG_DAHDI_BRI_DCHANS)
- len += sprintf(buf + len, "0\n");
-#elif defined(DAHDI_SIG_HARDHDLC)
- len += sprintf(buf + len, "1\n");
-#else
-#error Cannot build BRI without BRISTUFF or HARDHDLC supprt
-#endif
- return len;
-}
-
-static DRIVER_ATTR(dchan_hardhdlc,S_IRUGO,dchan_hardhdlc_show,NULL);
-
static int bri_xpd_probe(struct device *dev)
{
xpd_t *xpd;
@@ -1870,18 +1666,7 @@
if((ret = xpd_driver_register(&bri_driver.driver)) < 0)
return ret;
- ret = driver_create_file(&bri_driver.driver, &driver_attr_dchan_hardhdlc);
- if(ret < 0)
- return ret;
INFO("revision %s\n", XPP_VERSION);
-#if defined(CONFIG_DAHDI_BRI_DCHANS)
- INFO("FEATURE: WITH BRISTUFF\n");
-#elif defined(DAHDI_SIG_HARDHDLC)
- INFO("FEATURE: WITH HARDHDLC\n");
-#else
-#error Cannot build BRI without BRISTUFF or HARDHDLC supprt
-#endif
-
xproto_register(&PROTO_TABLE(BRI));
return 0;
}
@@ -1890,7 +1675,6 @@
{
DBG(GENERAL, "\n");
xproto_unregister(&PROTO_TABLE(BRI));
- driver_remove_file(&bri_driver.driver, &driver_attr_dchan_hardhdlc);
xpd_driver_unregister(&bri_driver.driver);
}
Modified: linux/trunk/drivers/dahdi/xpp/xpp_dahdi.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/xpp/xpp_dahdi.c?view=diff&rev=10387&r1=10386&r2=10387
==============================================================================
--- linux/trunk/drivers/dahdi/xpp/xpp_dahdi.c (original)
+++ linux/trunk/drivers/dahdi/xpp/xpp_dahdi.c Mon Jan 2 08:05:58 2012
@@ -1136,11 +1136,6 @@
INFO("revision %s MAX_XPDS=%d (%d*%d)\n", XPP_VERSION,
MAX_XPDS, MAX_UNIT, MAX_SUBUNIT);
-#ifdef CONFIG_DAHDI_BRI_DCHANS
- INFO("FEATURE: with BRISTUFF support\n");
-#else
- INFO("FEATURE: without BRISTUFF support\n");
-#endif
#ifdef CONFIG_PROC_FS
xpp_proc_toplevel = proc_mkdir(PROC_DIR, NULL);
if(!xpp_proc_toplevel) {
More information about the svn-commits
mailing list