Commit Graph

427 Commits

Author SHA1 Message Date
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
Shaun Ruffell
a017f39fc4 dahdi: Keep psuedo channels on pseudo_chan_list.
Since pseudo channels are without spans and we would like to use the
span list to enumerate through all the channels, keeping the psuedo
channels on their own list is required.  I believe this is a more
natural choice than making a dummy spans for pseudos since pseudo
channels should *really* just be an implementation detail that the user
shouldn't care about.

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@9383 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:32 +00:00
Shaun Ruffell
4bdc2afebf dahdi: Define psuedo channels as being without a span.
Therefore we can use the fact that the span pointer on the channel is
NULL to identify them.

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@9382 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:27 +00:00
Shaun Ruffell
a03f6a2eb3 dahdi: Reduce 'chans' references in dahdi_ctl_ioctl.
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@9381 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:23 +00:00
Shaun Ruffell
4ae563309a dahdi: 'user_data' is extraneous in dahdi_ctl_ioctl.
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@9380 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:19 +00:00
Shaun Ruffell
0be6a86f5c dahdi: Remove unused unit from dahdi_common_ioctl.
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@9379 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:15 +00:00
Shaun Ruffell
71b3fbaa9d dahdi: Move DAHDI_SPANSTAT ioctl handlers into separate functions.
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@9378 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:11 +00:00
Shaun Ruffell
6b8751fb8b dahdi: Remove unit parameter from dahdi_chanandpsuedo_ioctl.
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@9377 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:07 +00:00
Shaun Ruffell
e16c7479e7 dahdi: Remove unit parameter to dahdi_prechan_ioctl
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@9376 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:34:03 +00:00
Shaun Ruffell
44ee940137 dahdi: Remove unit parameter from dahdi_chan_poll.
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@9375 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:59 +00:00
Shaun Ruffell
c25fc5633f dahdi: Remove unit parameter from dahdi_ioctl_[get|set]gains.
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@9374 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:55 +00:00
Shaun Ruffell
5309a1d682 dahdi: Remove unit parameter from dahdi_specchan_release.
This change also involves setting the DAHDI_FLAGBIT_CLOSE bit on the
channel before calling the 'close' callback in span ops.  It appears
that only the dynamic spans may delete the channels on close, but that
code path doesn't check the DAHDI_FLAGBIT_CLOSE bit anyway.

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@9373 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:51 +00:00
Shaun Ruffell
72a6c95ac1 dahdi: dahdi_specchan_open also does not need the unit parameter.
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@9372 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:47 +00:00
Shaun Ruffell
c54662d799 dahdi: 'unit' -> 'chan->channo' in a CONFIG_DAHDI_DEBUG block.
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@9371 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:43 +00:00
Shaun Ruffell
83dcb53e6d dahdi: Remove what appears to be stale debug code in dahdi_chan_read/write.
If someone was still using this...feel free to add it back in with a
comment about why it needs to be in the mainline.  It looked better to
remove it than edit it to make sure it worked.

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@9370 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:39 +00:00
Shaun Ruffell
5c1857d95e dahdi: Remove the unit parameter from dahdi_chan_ioctl.
This ioctl is called either via the "/dev/dahdi/channel" file or via a
/dev/dahdi/channo file.  In either case, either the minor number of the
device file will match up with a channel, or the "private_data" member
on the channel will be set, so the unit is redundant.

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@9369 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:35 +00:00
Shaun Ruffell
7e7bd68d9a dahdi: Reduce chans array indexing in dahdi_chan_unreg.
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@9368 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:31 +00:00
Shaun Ruffell
39ae189624 dahdi: Modify "is_monitor_mode" to be usable by dahdi_chan_unreg.
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@9367 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:27 +00:00
Shaun Ruffell
eb89c39f84 dahdi: Reduce 'chans' dereferencing in dahdi_check_conf
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@9366 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:23 +00:00
Shaun Ruffell
3e6b113991 dahdi: Issue warning if DAHDI_INDIRECT ioctl is used.
DAHDI_INDIRECT is only used when setting up pciradio channels.
dahdi_cfg no longer should need DAHDI_INDIRECT since revision 9352.

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@9365 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:19 +00:00
Shaun Ruffell
d5e718ec03 dahdi: Use 'chan' convenience pointer in dahdi_receive.
Simplifies the function and may increase performance due to decreased
dereferencing of the span and channel array.

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@9364 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:15 +00:00
Shaun Ruffell
c885e2ae3b dahdi: Use 'chan' convenience pointer in process_masterspan.
Reduces the amount of indexing into the global channel array.

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@9363 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:11 +00:00
Shaun Ruffell
f907dc01b3 dahdi: Use 'chan' convenience pointer in dahdi_transmit.
I believe this makes it a little more clear what is happening.  Also could
provide a potential speedup if the span doesn't need to be constantly
dereferenced (although an optimizer might make this moot).  Regardless, this
change doesn't hurt.

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@9362 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:07 +00:00
Shaun Ruffell
488a849209 dahdi: chans[ms->confna] -> conf_chan.
In  __dahdi_process_getaudio_chunk and __dahdi_process_putaudio_chunk we
can streamline the operation slightly by saving a constant pointer to
the conference channel instead of constantly dereferencing the master
channel and indexing into the chan array.

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@9361 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:33:03 +00:00
Shaun Ruffell
3e0f903861 dahdi: Remove unused parameter in three ioctl handlers.
The 'int cmd' parameter is unused and unneeded in dahdi_ioctl_getgains,
dahdi_ioctl_setgains, and dahdi_ioctl_chandiag.

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@9360 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:59 +00:00
Shaun Ruffell
3c774e386b dahdi: Move handlers for DAHDI_[GET|SET]_PARAMS into separate functions.
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@9359 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:55 +00:00
Shaun Ruffell
b7545e9d0d dahdi: Move the conferencing ioctls into their own functions.
DAHDI_GETCONF, DAHDI_SETCONF, DAHDI_CONFLINK, and DAHDI_CONFDIAG are all
now in their own functions.

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@9358 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:51 +00:00
Shaun Ruffell
1e068dcf6c dahdi: Move DAHDI_CHANCONFIG ioctl into separate function.
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@9357 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:47 +00:00
Shaun Ruffell
8a8d98f210 dahdi: Move DAHDI_CHANDIAG ioctl into separate function.
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@9356 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:43 +00:00
Shaun Ruffell
01267db394 dahdi: Refactor some of the access to the 'spans' array.
It is still used at span registration / unregistration to assign the span
number, and when iterating through all spans. Otherwise, moves the code base a
step closer to removal of the 'spans' array.

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@9355 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:39 +00:00
Shaun Ruffell
ee7057f87a dahdi: Embed the proc entries in struct dahdi_span.
Part of preparations for replacing the array of spans with a list of
spans.

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@9354 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:35 +00:00
Shaun Ruffell
5514b84e06 dahdi: Be more tolerant of surprise removal of channels.
Enable DAHDI to detect if an operation on a file handle refers to a
channel that may have been unregistered. This can occur, for example,
when a board driver is hot-swapped out in a live system.

This patch ensures that file->private_data is always properly set for
any open channel, and it's set back to NULL when a channel is
unregistered.  This way file->private_data can be used to check whether
it's valid to perform an operation on the channel.  (NOTE:  There is
still a race condition here if the driver was unbound on one processor
during the window of time between when file->private_data was checked
and the system call finishes).

Also, since DAHDI should only return -ENODEV on read or write when there
was a surprise device removal on a running system this sleep can prevent
the system from becoming unresponsive if the userspace application does
not check for the -ENODEV error and constantly tries to call read with
elevated privileges.

(issue #17669)
Reported by: tzafrir
Tested by: sruffell

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@9353 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-09-20 20:32:29 +00:00