Commit Graph

158 Commits

Author SHA1 Message Date
Shaun Ruffell
3db405486e dahdi: Eliminate NULL dereference when bridging channels.
When using conference mode DAHDI_CONF_DIGITALMON ensure conf_chan is
set.  Otherwise we dereference a NULL 'conf_chan'.

Fixes regression introduced in revision 9381

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9457 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-25 18:26:27 +00:00
Shaun Ruffell
cba1734e18 wctdm24xxp: Detect FXS modules based on the 3210 SLIC.
Fixes a regression introduced in revision 5916 where FXS modules based
on the 3210 were not properly detected.

(closes issue #18184)
Reported by: bsexton
Patches:
      dahdi-fxo-detect.diff uploaded by bsexton (license 1133)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9456 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-25 18:26:17 +00:00
Tzafrir Cohen
d9cdda31aa wcb4xxp: Support beroNet BN4S0e PCI Express card
Add extra PCI IDs to support "beroNet BN4S0e PCI Express 4x S0 Karte".

Origin: http://bugs.debian.org/600839


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9451 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 17:52:47 +00:00
Kinsey Moore
27899f256c dahdi-base: Fixed null pointer dereference in dahdi_check_conf
Fixes regression from rev 9366


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9449 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 16:20:30 +00:00
Shaun Ruffell
92e2a646eb dahdi: Remove CONFIG_OLD_HDLC_API since that is kernel 2.4 specific.
DAHDI does not support any kernels older than 2.6.9.  No need
to keep the old HDLC interface support around.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9447 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:28 +00:00
Shaun Ruffell
15182a4a18 wctdm24xxp, wcte12xp: Remove unused 'whichframe' parameter.
'cmd_dequeue_vpmadt032' in the wctdm24xxp and wcte12xp drivers no longer
care about which frame they are on.  The command will be packed into the
eframe specified by "writechunk".

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9446 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:26 +00:00
Shaun Ruffell
53d674dc21 dahdi: Drop some 'zt' prefixes on chan.
'zt' is a carry over from the Zaptel days.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9445 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:23 +00:00
Shaun Ruffell
aa5c973611 dahdi: Atomically set/test if channel has associated network device.
Push all tests for the DAHDI_FLAGBIT_NETDEV flag behind a
'dahdi_have_netdev' function so if CONFIG_DAHDI_NET is not defined the
compiler can just remove all the flag tests.  Also, makes sure that the
bit is checked / set atomically.

(closes issue #9379)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9444 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:16 +00:00
Shaun Ruffell
072ccc9b69 dahdi_echocan_oslec: Call olsec_hpf_tx if CONFIG_DAHDI_PROCESS_ECHOCAN_TX is defined.
It can be necessary to have low frequency filter for tx signal of DAHDI.
Otherwise, low-frequency signal from IP can reach a leased line, and
return back with nonlinear distortions. This will break an echo
canceler.

(closes issue #13562)
Reported by: biohumanoid
Patches:
      dahdi_echocan_oslec.c.patch uploaded by biohumanoid (license 459)

I slightly modified the above patch in order to use echocan_process_tx
as the interface.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9443 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:11 +00:00
Shaun Ruffell
2ba1b4c201 dahdi: Add compile time DAHDI_ECHOCAN_PROCESS_TX option.
Add optional interface to allow software echo cans to process the
transmitted samples.  Can be used for things like DC removal.

I used the following patches uploaded by biohumanoid but changed the
name of 'echocan_hpf_tx' to 'echoan_process_tx and put the changes
behind a compile time option.

(issue #13562)
Reported by: biohumanoid
Patches:
      kernel.h.patch uploaded by biohumanoid (license 459)
      dahdi-base.c.#2.patch uploaded by biohumanoid (license 459)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9442 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:06 +00:00
Shaun Ruffell
5b08a20526 wctdm24xxp: Leave FXO (DAA) always in full-wave ring detect mode.
In zaptel commit 4096 [1], all the debouncing of ring signals were moved
into software as opposed to using the ring validation circuit in DAA.
That commit failed to remove the initial check and set of the ring
validation circuit.

[1] http://svn.digium.com/view/zaptel?view=revision&revision=4096

(closes issue #16894)
Reported by: rde42

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9441 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:23:02 +00:00
Shaun Ruffell
141a61d64e wctc4xxp: Space required after ','.
Trivial formatting change.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9440 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:59 +00:00
Shaun Ruffell
9dc983cc0d wctc4xxp: Remove trailing whitespace.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9439 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:57 +00:00
Shaun Ruffell
615c6b6800 wctc4xxp: Cannot print the encoder/decoder channels before we know them.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9438 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:54 +00:00
Shaun Ruffell
8d29ecb783 wctc4xxp: 'WARN_ON(1)' -> 'dev_info(...' on channel creation failure.
If the DSP ever finds it's way into a bad state it can be possible for a
timeslot to get 'wedged'.  All attempts to create a channel in a wedged
timeslot will fail and the WARN_ON macro can quickly fill the logs.

This change adds some more debugging information (which timeslot is wedged)
along with the result code from the DSP and puts it all behind a
printk_ratelimit.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9437 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:52 +00:00
Shaun Ruffell
b4170d8f40 wctc4xxp: Drop 'DTE_PRINTK' macro in favor of standard 'dev_xxx'
Just use the standard way to print messages associated with a particular
device. Also dropped the "Attached to device at" message since that
information is now printed on every print.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9436 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:49 +00:00
Shaun Ruffell
8ac8b90bd4 wctc4xxp: Remove 'service_dte' function and a few inline keywords.
'service_dte' was only called in one place and is only two lines.  I do
not think it is adding much anymore. Also, let compiler should decide if
'service_rx_ring' and 'service_tx_ring' should be inlined.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9435 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:47 +00:00
Shaun Ruffell
8897a79f5b dahdi: '-o' -> '--no-same-owner' in drivers/dahdi/firmware/Makefile
It appears that in Centos 4, the version of tar doesn't like the -o
flag, but will honor the --no-same-owner flag.

(closes issue #16063)
Reported by: tzafrir

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9434 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:42 +00:00
Shaun Ruffell
f5f0958381 dahdi: dahdi_chan_unreg was not cleaning up conferenced channels properly.
'is_monitor_mode()' and DAHDI_CONF_DIGITALMON were mutally exclusive.
Fixes recent regression introduced in revision 9367.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9433 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:39 +00:00
Shaun Ruffell
a8b1e2b662 vpmadt032: Honor the CONFIG_DAHDI_NO_ECHOCAN_DISABLE flag.
Setting this configuration option would not have had any impact when a
hardware echo canceler was in use.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9432 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-20 12:22:35 +00:00
Tzafrir Cohen
53b658db1b xpp: Fixes init error for PRI devices with < 4 ports
Fixes a regression singce r8873: if pri_protocol is not explicitly set
(in /etc/dahdi/xpp.conf) and the device has (licences for) less than 4
"PRI" (E1/T1) ports, the initialization script will attempt to read from
a non-existing SysFS file, and bail out, resulting in a the device
failing to initialize.

For those non-existing ports we can just skip that part of the
initialization. So we just skip it.

Work around: explicitly set pri_protocol to E1 or T1, as needed.

Xorcom Rev: 8047. Ticket: 1334.


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9430 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-18 14:50:03 +00:00
Tzafrir Cohen
6646cba099 Ignore oct612x generated files in SVN
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9428 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-18 13:37:57 +00:00
Shaun Ruffell
c4ae51ffae dahdi: 'if (chan)' -> 'if (!chan)' in dahdi_ioctl_getgains.
Fixes a typo recently introduced that was preventing asterisk from
setting the swgains on a channel.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9423 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-04 17:20:47 +00:00
Kinsey Moore
408787c77b dahdi: Anonymous member in dahdi_echocan_events union.
Make explicit what part of the union is being accessed.

(closes issue #15908)
Reported by: ys
Patches:
      dahdi-dahdi_echocan_events.diff uploaded by ys (license 281)

Signed-off-by: Kinsey Moore <kmoore@digium.com>
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9421 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-29 22:00:22 +00:00
Kinsey Moore
b0185d1e84 dahdi: Fix 'void *' pointer arithmetic warnings.
(closes issue #15927)
Reported by: Max Khon
Patches:
      dahdi_echocan2.diff uploaded by Max Khon (license 884)
      void2.diff uploaded by Max Khon (license 884)

Signed-off-by: Kinsey Moore <kmoore@digium.com>
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9420 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-29 21:32:55 +00:00
Kinsey Moore
d802a2738d make_version: svn and git metadata directory not checked properly.
(closes issue #16143)
Reported by: Max Khon

Signed-off-by: Kinsey Moore <kmoore@digium.com>
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9418 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-29 21:21:45 +00:00
Shaun Ruffell
3400734174 wcb4xxp: Spelling 'LOOKBACK_SUPPORTED' -> 'LOOPBACK_SUPPORTED'
(closes issue #16658)
Reported by: kurtlidl
Patches:
      base.c.diff uploaded by kurtlidl (license 962)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9416 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-27 15:57:13 +00:00
Shaun Ruffell
1c462653e7 dahdi: Remove bigzaplock by converting chan_lock to spinlock_t.
The bigzaplock was used to prevent changes to all the channels during
masterspan processing while conference parameters were changing.  The
master span processing also took a global lock out on the chan_lock to
prevent new channels from being registered or unregistered during
processing.  Instead of grabbing both those locks, just changing the
semantics of chan_lock to those of bigzaplock seems to fit the bill and
removes another lock from the driver (and saves ~10 ns on a 2.40 GHz
Xeon in prcocess_masterspan)

chan_lock is a candidate for conversion to RCU but usage in conferencing
(bigzaplock type usage) needs to be audited carefully before conversion.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9414 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:45:07 +00:00
Shaun Ruffell
c3ae5634d7 dahdi: process_timers is already called with interrupts disabled.
Very slight performance increase when timertest is running in the
background.  Measured at ~10 ns improvement over 10K samples.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9413 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:45:03 +00:00
Shaun Ruffell
87336d22fc dahdi: Rename 'zaptimer' -> 'dahdi_timer'
DAHDI is not Zaptel anymore.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9412 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:59 +00:00
Shaun Ruffell
283235686d Move test for DEFINE_SPINLOCK into include/dahdi/kernel.h
The check for DEFINE_SPINLOCK was spread throughout the source tree. If
not defined we can just define it in inlucde/dahdi/kernel.h.  Now
include/dahdi/kernel.h is the only place that references
SPIN_LOCK_UNLOCKED (which breaks lockdep checking if DEFINE_SPINLOCK is
otherwise defined in the kernel).

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9411 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:53 +00:00
Shaun Ruffell
41825e7c32 dahdi: Remove remaining #if 0 locations from dahdi-base.
Dead code elimination.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9410 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:49 +00:00
Shaun Ruffell
7a83fe8e19 dahdi: Add '+' on KMAKE definition to enable parallel make.
Now 'make -j 5' works the way it's supposed to on multi core machines.
On one test machine build times went from ~33 seconds to ~11 seconds.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9409 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:45 +00:00
Shaun Ruffell
7872d47517 make_version: '[[' -> '[' since it's not a bash script.
'[[' is a bash construct specifically, yet #!/bin/sh is at the top of the
file.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9408 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:41 +00:00
Shaun Ruffell
731b5868d4 dahdi: Allow core DAHDI software timing to work when DAHDI_CHUNKSIZE > 8.
When no hardware spans are configured DAHDI will use a kernel timer in order
provide timing for conferences. This is what dahdi_dummy historically was used
for. When kernel timers are used to provide timing DAHDI can both potentially
slow the rate at which time timer runs and also needs to account for how many
milliseconds of audio are processed for each 'tick' of process_masterspan.

The result is that if you are only using DAHDI for app_meetme, you can change
DAHDI_CHUNKSIZE to 40 (5ms) or 80 (10ms) bytes to reduce overhead since user
space is dealing with chunks of 20ms by default anyway.

NOTE: If you set this, you may still need to comment out the board drivers in
drivers/dahdi/Kbuild since they all do not support operating with a
DAHDI_CHUNKSIZE != 8 currently.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9407 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:37 +00:00
Shaun Ruffell
d08cdac785 dahdi: Only disable/enable interrupts once when iterating through channels.
dahdi_receive, dahdi_transmit, and dahdi_ec_span are mostly called from
interrupt context anyway, so we can save a few cycles by not saving and
restoring the interrupt flags for every channel.

On one 2.40GHz Xeon test machine, for a span with 24 channels w/o echocan
enabled with ~10000 samples:

Function        Avg Before   Avg After
======================================
dahdi_receive   2.109 us     1.547 us
dahdi_transmit  3.203 us     2.766 us
dahdi_ec_span   0.416 us     0.454 us

NOTE: The time went up slightly on dahdi_ec_span since I did not have
software echocan enabled and this change calls local_irq_save regardless
in dahdi_ec_span.  The slight increase in processing time in this case
is overshadowed by the savings in dahdi_receive and dahdi_transmit. If
echocan was enabled on all the channels there would be a time savings
in that dahdi_ec_span too.

When dahdi_receive/dahdi_transmit are called every millisecond (when
DAHDI_CHUNKSIZE == 8) this saves ~0.1% CPU time for each span.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Review: https://reviewboard.asterisk.org/r/940/

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9406 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-24 22:44:30 +00:00
Shaun Ruffell
6d807c7dfc dahdi: trivial spelling 'implemnted' -> 'implemented'
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9404 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:39:02 +00:00
Shaun Ruffell
6d602c96b9 dahdi_dynamic: Update copyright.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9403 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:38:57 +00:00
Shaun Ruffell
5618e9e812 wcte12xp, wctdm24xxp: Convert vbb cache from kmem_cache to dma_pool.
The voicebus interface constantly uses the same buffers for moving data
to/from the card.  A fixed pool has less overhead in this case than
constantly mapping/unmapping the kmem_cache_alloced buffers.

Saves about ~2.608 us for each run of vb_isr on a 2.40 GHz Xeon test
machine.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9402 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:38:52 +00:00
Shaun Ruffell
9038e0a2cd wcte12xp, wctdm24xxp: Remove comment about converting from IO space.
This change was made in revision 8176.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9401 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:38:48 +00:00
Shaun Ruffell
6d1e5996af wct4xxp: Drop usage of 'volatile' qualifier.
The registers on the device are already accessed with readl/writel and
the readchunk and writechunk are mapped into coherent DMA region.  The
contents of those buffers should not be changing in the middle of any
transmit/receive prep call.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9400 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:38:43 +00:00
Shaun Ruffell
7852d30cb5 wct4xxp: Add debug option to log detected RBS bit changes.
Normally you can see RBS bit states in dahdi_tool, but you might also
want them logged to dmesg for troubleshooting.

(issue #18025)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9399 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-23 21:38:37 +00:00
Shaun Ruffell
1cfc5180c8 wcte12xp, wctdm24xxp: Do not rely on polling main memory.
The voicebus library by default configures the PCI interface to poll the
descriptor ring for available buffers.  There are some platforms like
the Intel SG3420P motherboard where this does not appear to be
sufficient.  Writing to the transmit demand poll register resolves this
problem on these troublesome platforms. DAHDI-700 DAHDI-702.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9397 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-21 19:26:22 +00:00
Shaun Ruffell
f19999c8d9 dahdi: Generate include/dahdi/version.h when building in a git repository.
If building within a git repository search the last log message for a
'git-svn-id'.  If found, the commit has a corresponding svn revision
number and we will use the SVN-xxx-rxxx revision form. Otherwise use the
output of 'git describe --long --always --tags --dirty=M' as the
version.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9396 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-21 19:26:17 +00:00
Shaun Ruffell
72f727fe8c dahdi: Fix comment ZapRAS -> DAHDIRAS.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9394 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-21 16:25:37 +00:00
Shaun Ruffell
ccf5487ac9 dahdi: Make CONFIG_DAHDI_PPP off by default.
Before CONFIG_DAHDI_PPP can be on by default, some more work needs to be
done to ensure that the ppp_generic module is not always loaded and
that all channels do not carry around all the PPP members unnecessarily.

(issue #17990)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kevin P. Fleming <kpfleming@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9392 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-21 16:16:00 +00:00
Shaun Ruffell
b45e166253 wctdm24xxp: Add optional FXO digital loopback if DEBUG is defined.
This module parameter will allow patgen/pattest to be used only on FXO
ports. *ALL* FXO ports will be placed in digital loopback mode when
set.

The current intent is for this to be removed as an optional module
parameter when there is a channel by channel representation in sysfs.
Otherwise, a new IOCTL would have to be defined and a tool written in
order to support this. DAHDI-696.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9391 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-21 15:36:34 +00:00
Shaun Ruffell
67fdba958c dahdi: Channels can have their own file_operations structure.
If we know that an open file is associated with a channel (pseudo or
real) we can just update the file->f_ops pointer so that we can short
circuit some of the checks in read/write/poll. Trades sizeof(file_operations)
bytes for less function call overhead in the "hot" path.

On a 2.4 GHz Xeon, saves around 150 ns on each read / write.

Review: https://reviewboard.asterisk.org/r/905/

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9386 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:44 +00:00
Shaun Ruffell
851203c182 dahdi: Remove redundant 'gainalloc' member from struct dahdi_chan.
I want to add some new members to dahdi_chan, but I don't want to
increase the overall size any more than necessary.

Review: https://reviewboard.asterisk.org/r/905/

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9385 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:40 +00:00
Shaun Ruffell
08cfbeb03e dahdi: Change iteration through pseudo/real chans in process_masterspan.
Since we have the pseudo channels on their own list, we don't need to
step through the chans array when we just want to find the pseudo
channels. Likewise, all the real channels will have be on a span.  Also
removes references to the global chans array in process_masterspan.

Review: https://reviewboard.asterisk.org/r/905/

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9384 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:36 +00:00