From bc110fe9b114b8e3b99f068ad9b3aac6466ee63d Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Tue, 19 May 2009 15:58:14 +0000 Subject: xpp: report in sysfs if bri module uses hardhdlc support git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@6640 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/xpp/card_bri.c | 25 ++++++++++++++++++++++++- drivers/dahdi/xpp/xdefs.h | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/dahdi/xpp/card_bri.c b/drivers/dahdi/xpp/card_bri.c index 47e62a3..fb5fdd2 100644 --- a/drivers/dahdi/xpp/card_bri.c +++ b/drivers/dahdi/xpp/card_bri.c @@ -443,7 +443,9 @@ static void bri_hdlc_abort(xpd_t *xpd, struct dahdi_chan *dchan, int event) priv = xpd->priv; BUG_ON(!priv); #ifdef CONFIG_DAHDI_BRI_DCHANS - dump_hex_buf(xpd, "D-Chan RX: dchan_rbuf", priv->dchan_rbuf, priv->dchan_r_idx); + 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); @@ -1143,6 +1145,7 @@ static int BRI_card_close(xpd_t *xpd, lineno_t pos) #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; @@ -1753,6 +1756,22 @@ static int proc_bri_info_read(char *page, char **start, off_t off, int count, in return len; } +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; @@ -1795,6 +1814,9 @@ static int __init card_bri_startup(void) 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"); @@ -1812,6 +1834,7 @@ static void __exit card_bri_cleanup(void) { DBG(GENERAL, "\n"); xproto_unregister(&PROTO_TABLE(BRI)); + driver_remove_file(&bri_driver.driver, &driver_attr_dchan_hardhdlc); xpd_driver_unregister(&bri_driver.driver); } diff --git a/drivers/dahdi/xpp/xdefs.h b/drivers/dahdi/xpp/xdefs.h index 1a25e68..e55c706 100644 --- a/drivers/dahdi/xpp/xdefs.h +++ b/drivers/dahdi/xpp/xdefs.h @@ -135,6 +135,8 @@ typedef unsigned char byte; #define DEVICE_ATTR_WRITER(name,dev,buf, count) \ ssize_t name(struct device *dev, const char *buf, size_t count) #endif +#define DRIVER_ATTR_READER(name,drv,buf) \ + ssize_t name(struct device_driver *drv, char * buf) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) #define dev_name(dev) (dev)->bus_id -- cgit v1.2.3