Commit Graph

347 Commits

Author SHA1 Message Date
Oron Peled
0f25d96af3 replace old proc interface by modern seq_file
Switch to using the newer seq_file interface for procfs. Fixes a
race when you read the "file" while its size increases (e.g. the span
enters an alarm state).

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

(closes issue #18760)
Patches:
      0001-DAHDI-linux-trunk-replace-old-proc-interface-by-mode.patch uploaded by tzafrir (license 46)

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9770 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-20 23:13:20 +00:00
Russ Meyerriecks
cb356737c3 wctdm24xxp,wcte12xp: Replace read/writechunk with eframe/sframe
Trival name change to increase readability in the transmitprep and
recieveprep functions. Now we clearly define if we are working with an
sframe or an eframe.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9768 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-18 20:32:22 +00:00
Shaun Ruffell
b0a9e6f31d wct4xxp: Do not lock interrupts while loading the VPM firmware.
Since the oct6100 API consumes less stack there is no longer a danger of
overflowing our stack during load.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9752 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-10 16:22:59 +00:00
Shaun Ruffell
a340db5e76 wct4xxp: Reduce stack usage in oct612x API.
Reduce the stack usage by replacing the mOCT6100_RETRIEVE_NLP_CONF_DWORD
and mOCT6100_SAVE_NLP_CONF_DWORD macros with functions. Some compilers
do a better job of optimizing the local variables declared in those
macros than others.

For example, with gcc 4.3.0, running

]# make stackcheck | grep Oct6100 | head -n 20 | sed -e 's/^0\S* //g' | uniq

Before:
Oct6100ApiWriteVqeNlpMemory [wct4xxp]:  1112
Oct6100ApiInvalidateChanPlayoutStructs [wct4xxp]:520
Oct6100ApiSetChannelLevelControl [wct4xxp]:     392
Oct6100ApiBridgeEventRemove [wct4xxp]:  344
Oct6100ApiDebugChannelOpen [wct4xxp]:   312
Oct6100ApiWriteVqeAfMemory [wct4xxp]:   296
Oct6100ApiSetChannelTailConfiguration [wct4xxp]:264
Oct6100ApiRandomMemoryWrite [wct4xxp]:  248
Oct6100ApiTransferToneEvents [wct4xxp]: 248
Oct6100ApiModifyChannelStructs [wct4xxp]:       232

After:
Oct6100ApiBridgeEventRemove [wct4xxp]:  344
Oct6100ApiDebugChannelOpen [wct4xxp]:   312
Oct6100ApiRandomMemoryWrite [wct4xxp]:  248
Oct6100ApiTransferToneEvents [wct4xxp]: 248
Oct6100ApiInvalidateChanPlayoutStructs [wct4xxp]:248
Oct6100ApiModifyChannelStructs [wct4xxp]:       232
Oct6100ApiBridgeRemoveParticipantFromChannel [wct4xxp]:216
Oct6100ApiWriteVqeNlpMemory [wct4xxp]:  200
Oct6100ApiInitChannels [wct4xxp]:               168
Oct6100ApiProgramNLP [wct4xxp]:         168

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9751 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-10 16:22:55 +00:00
Shaun Ruffell
c9e258b9b0 wct4xxp: Reduce the memory footprint of the hardware echocanceler.
This saves ~300K of kernel memory for each quad or dual span VPM.  Due
to the fact that this change disables caching of the NLP words (among
other things), the time to disable the echocans appears to have
increased by ~1ms.

Before this change:
=======================================================================
0) ! 356.498 us  |  vpm450m_setecmode(); <--- disable
0) ! 387.762 us  |  vpm450m_setecmode(); <--- enable
0) ! 429.839 us  |  vpm450m_setecmode(); <--- disable

]# echo 1 > /proc/sys/vm/drop_caches && free -k
total       used       free     shared    buffers     cached
Mem:       2005352     228368    1776984          0        132
5540
-/+ buffers/cache:     222696    1782656
Swap:       983036          0     983036

After this change:
=======================================================================
0) ! 1109.515 us |  vpm450m_setecmode(); <--- disable
0) ! 339.017 us  |  vpm450m_setecmode(); <--- enable
0) ! 1431.460 us |  vpm450m_setecmode(); <--- disable

]# echo 1 > /proc/sys/vm/drop_caches && free -k
total       used       free     shared    buffers     cached
Mem:       2005352     228080    1777272          0        112
5484
-/+ buffers/cache:     222484    1782868
Swap:       983036          0     983036

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9750 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-10 16:22:49 +00:00
Shaun Ruffell
e9558d499b wctdm24xxp: Remove the wctdm_regs structure from the stack in wctdm_ioctl.
Drops the size of the wctdm_ioctl stack from 524 to 204 bytes.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9748 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-09 18:57:53 +00:00
Shaun Ruffell
04f50821d4 wctdm24xxp: Remove unused portconfig variable.
The code is duplicated in the config_vpmadt032 function.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9747 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-09 18:57:48 +00:00
Shaun Ruffell
4389604ffd dahdi: Analog spans do not have to be marked RUNNING to become master.
Fixes a regression introduced in r9611. Analog spans would never become
the master since the SPANSTART ioctl is not typically called on them,
and therefore they were never marked RUNNING.  The result could be audio
problems.

I'm marking this as related to issue 13205 since it's generally all
related to how should the drivers select which span is the master.  I
also mark as related to issue 16165 because the problems experienced are
a result of the same fundamental issue.

(issue #13205)(issue #16165)

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9729 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-02-02 19:28:40 +00:00
Tzafrir Cohen
a5ace09e60 xpp: Missing lock release in xpp_dahdi_unregister
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9727 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-31 20:16:33 +00:00
Jaco Kroon
e7d9a67f72 dahdi: Experimentally remove dependency on the Big Kernel Lock.
With the release of Linux 2.6.37, the Big Kernel Lock is now a compile
time option.  This change adds a mutex around the one place in the code
that we already knew was dependent on the lock_kernel/unlock_kernel
calls for serialization and drops the other calls to
lock_kernel/unlock_kernel if CONFIG_BKL is not defined.

This is *mostly* the dahdi-no-bkl.patch with a few minor whitespace
changes, the global_dialparmslock made static, and a warning added to
let people know they are running an experimental configuration.

(issue #18604)
Reported by: jkroon
Patches:
      dahdi-no-bkl.patch uploaded by jkroon (license 714)

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9721 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-31 15:53:31 +00:00
Shaun Ruffell
29020a2521 wctdm24xxp: Remove code for unsupported modules.
The VPM100 and S100M modules are no longer supported. Analog cards supported
by the wctdm24xxp are still compatible with the S110 and VPMADT032 modules.
DAHDI-302

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9720 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-31 15:53:26 +00:00
Oron Peled
c176762902 xpd_pri: Explicit initialization of span.alarms
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9718 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:33:37 +00:00
Oron Peled
37d561780a xpd_pri: Reduce indentation
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9717 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:32:53 +00:00
Oron Peled
c814b79abe xpd_pri: reorder debug messages
Move priv->layer1_up debug message after priv->is_cas debug message.
Otherwise, we get extra meaningless debug message.

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9716 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:32:16 +00:00
Oron Peled
63ccf9b7da xpp: remove unused XPD_STATE() "protocol method"
Folded XPD_STATE() "protocol method" into the card_state() method.
It was only called from these (otherwise empty) methods.

Also it is not a "protocol method" for a very very very long time.

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9715 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:31:35 +00:00
Oron Peled
38f916050a xpp: Remove few extra leading spaces
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9713 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:16:35 +00:00
Oron Peled
41d71c3c99 xpp: Use our KZALLOC/KZFREE
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9712 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:14:49 +00:00
Oron Peled
e208a25a7c xpp: use phonedev_cleanup() instead of inline code
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9711 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:13:39 +00:00
Oron Peled
c94f184673 xpp: Add fixed runtime checks for the PHONEDEV code
Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9710 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:12:02 +00:00
Tzafrir Cohen
5b09167d68 xpp: init_card_4_30: add comment
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9709 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:10:33 +00:00
Oron Peled
a911c10f61 xpp: Kbuild: always update version string
* Keep the xpp version number up-to-date
* Non-verbose build output.

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9708 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 18:06:16 +00:00
Oron Peled
1331610048 xpp: phonedev: Cleanup method macros
* Caller to CALL_XMETHOD() no longer need to explicitly pass xbus
  (calculate xpd->xbus)
* Create CALL_PHONE_METHOD() similar to CALL_XMETHOD() -- inlining
  the extra parameters (more readable)
* Reverse parameter order in PHONE_METHOD() and CALL_PHONE_METHOD()
  to be consistent with XMETHOD() and CALL_XMETHOD()
* Rename XPD_STATE phonedev method to card_state:
  - Consistency with other phonedev methods.
  - These calls now Wrap internal calls to XPD_STATE protocol HOSTCMD
    in PRI, BRI, FXS, FXO

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9706 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 14:14:14 +00:00
Oron Peled
1584ff6a7d xpp: More adaptations for non-PHONEDEV XPDs
* Add IS_PHONEDEV(xpd) macro
* Reject dahdi_register_xpd()/dahdi_unregister_xpd() for non-PHONEDEV
* Make sysfs 'offhook' attribute contain '\n' if empty (no channels)
* Skip PHONEDEV related xbus_tick() parts -- we still want to process
  the end of it for the card_tick() calls.
* Remove BUG_ON() for missing phoneops
  (also remove old duplicate test for XBUS_IS...)
* Call XPD_STATE method only for PHONEDEV XPD's

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9705 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 14:13:22 +00:00
Oron Peled
af702dafff xpp: prepare for phonedev refactor
* Allow having XPDs that represent a device that is not a span.
* Refactor all span related data from 'struct xpd' to 'struct phonedev'
* Refactor span related methods into 'phonedev->phoneops'
* Refactor phone related initialization into phonedev_init()/phonedev_cleanup()

Signed-off-by: Oron Peled <oron@actcom.co.il>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9704 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-30 14:11:49 +00:00
Matthew Fredrickson
dd73a1c778 Fix for bugs in timing selection when B410P card is not the first configured card in system.
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9701 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-27 20:58:40 +00:00
Shaun Ruffell
08200e4a7e wct4xxp: Do not place _t4_remove_one in module exit section.
_t4_remove_one is now used during module initialization so it should not
be placed in the exit section of the module.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9650 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-20 19:01:17 +00:00
Shaun Ruffell
e9aae4933a wctdm24xxp: Replace interruptible_sleep_on with wait_event_interruptible.
Eliminates the interruptible_sleep_on deprecated and prevents the driver from
triggering the SLEEP_ON_BKLCHECK warning.

It is still desirable to convert the cmdq to something more like what is in
the single span to eliminate the need to schedule the sleeping process every
millisecond while we're waiting for the command to complete.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9646 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-20 14:32:58 +00:00
Shaun Ruffell
8b68d2dd1b dahdi: Constify the data parameter to __buf_push.
Just clarifying a parameter that is never updated.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9644 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-18 20:25:35 +00:00
Shaun Ruffell
3cee9adfbb dahdi: Trivial. Move process_masterspan description.
Move the description of the master span processing to above the
process_masterspan function.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9643 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-18 20:25:31 +00:00
Shaun Ruffell
f2b7303161 dahdi: Fix recent regression with native bridging.
This fixes a regression introduced in r9603.  That commit removed
DAHDI_CONF_DIGITALMON handling (which is used to natively bridge two
channels that cannot be crossed in the board driver / hardware) since I
mistakenly thought that it was only part of the DACS handling.  The
symptom of the regression is muted audio when Asterisk tries to natively
bridge two channels.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9642 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-18 20:25:26 +00:00
Shaun Ruffell
4fea8415d6 dahdi: Permit open pseudo channels before spans are registered.
Move pseudo channel numbers up into a high range so that their presence
does not interfere with assigning channel numbers for the channels
implemented on spans. Otherwise, if a pseudo channel was opened up
before an expected span was registered, all the channel numbers in the
newly registered span would be bumped up one. This does limit the number
of real channels that a single system may have registered to 32K (but in
dahdi-linux 2.4.0 and below you were limited to 1024 channels anyway,
both real and pseudo).

Also, the string name of the Pseudo channel is now based off the
number of Pseudo channels and not the total number of channels.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9637 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-17 17:17:52 +00:00
Shaun Ruffell
6b797b607b wct4xxp: Check the return value of dahdi_register call.
If dahdi_register fails, we would like the error to propagate to the
user who ran modprobe.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9636 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-17 17:17:44 +00:00
Shaun Ruffell
9b745d29dd wct4xxp: Perform an extended reset on PCI-Express cards by default.
Extended reset is needed primarily with the PCI express version of the
dual and quad-span cards.  Enable it by default for those cards and
allow it to be forced on or off globally for the driver as a compile
time option.

The options to force it should be able to come out if there aren't any
further reports that the compile time option needs to be set.

DAHDI-773

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9635 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-17 17:17:39 +00:00
Tzafrir Cohen
cd595df1c3 dahdi-sysfs: include slab.h for newer kernels
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9633 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-16 21:12:20 +00:00
Tzafrir Cohen
7e6509855a Remove the (now) duplicate rule
Now that makefw has the proper name, the rule to create it is
automatically generated by Kbuild. Removed.


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9632 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-16 20:19:56 +00:00
Tzafrir Cohen
11edb7d2b5 Fixes accidental generation of drvers/dahdi/$(obj)
If we tell Kbuild (at least of some versions) that the host program is
$obj/makefw , it will attempt to create the full path of $(obj) for it
under the current $(obj).


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9630 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-16 17:21:16 +00:00
Tzafrir Cohen
69f3c96690 Refactor SysFS code to dahdi-sysfs.c
* Refactor SysFS and device-related code to drivers/dahdi/dahdi-sysfs.c .
* Move common headers to drivers/dahdi/dahdi.h .

This commit merely moves existing code and should have no functional
change.

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


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9628 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-16 14:18:18 +00:00
Tzafrir Cohen
adb849e064 cleaner error handling in dahdi_register
* Better error handling in dahdi_register.
* Fail registration if fails creating proc entry for span.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9626 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-10 21:42:49 +00:00
Tzafrir Cohen
52cc07ecb1 span_sysfs_{create,remove}
* Separate out device generation in dahdi_[un]register to separate
  functions.
* As we don't keep anywhere the information of whether or not
* there's
  an existing device node for a channel, I abuse an unused flag:
  DAHDI_FLAGBIT_DEVFILE (25), to mark if the channel has a sysfs node.

DAHDI_FLAGBIT_DEVFILE is expected to be replaced later on with a proper
pointer to the device (or embedding of the device). I prefer a simple
flag for now as it does not break ABI.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9625 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-10 21:42:00 +00:00
Tzafrir Cohen
98aa2844c1 Pass error val from dahdi_register_echocan_factory
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9624 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-10 21:36:41 +00:00
Tzafrir Cohen
244dd928e5 separate device init functions
Separate out device initialization and removal functions:
dahdi_sysfs_init() and dahdi_sysfs_exit(). A safer way of
generating the main device files.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9623 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-10 21:30:54 +00:00
Shaun Ruffell
d5520c533a dahdi: Do not call dahdi_check_conf under lock.
dahdi_check_conf() acqurires the locks as needed when scanning the
channels and should not be called under any spinlocks.

Fixes a regression that Tzafrir reported in #asterisk-dev that he could
trigger via "asterisk -rx 'channel originate Local/600@demo
Application Meetme 3000,d'"

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@9621 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-06 21:34:10 +00:00
Shaun Ruffell
68c0c37691 dahdi: Ensure we have room to keep all span channels contiguous.
This fixes a regression from r9609 that Tzafrir reported.  If you
register multiple spans, then remove the first span and try to register
a new span with more channels then the old span, you could end up with
multiple channels with the same number.

This change ensures that spans are ordered and that channels on a span
are always contiguous and ordered in relation to the spans.

In previous released versions of DAHDI (2.4.0 and below) this condition
would result in spans that may not have contiguous blocks of channels.
So it fixes both a recent regression and improves the behavior.

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@9617 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-05 15:52:10 +00:00
Shaun Ruffell
a45f853395 dahdi: Move the default tone lengths into include/dahdi/dahdi_config.h
The default tone lengths are compile time options and they were in
digits.h to make it easy for users to patch.  Most of these settings are
potentially overridden from user space via the DAHDI_SET_DIALPARAMS
ioctl currently regardless of these settings.

In r9597 I moved digits.h directly into dahdi-base.c since I thought it
was broken out for sharing between compilation units as opposed to
ease patching.

I also changed the units of the default options to ms instead of in
samples.  This way if the sampling frequency changes the user will not
need to update the defaults.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
asterisk-dev-reference: 4D236FD7.30707@digium.com

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9616 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-05 15:52:03 +00:00
Tzafrir Cohen
d4c047f5d9 dahdi: Also use constant for DAHDI_TRANSCODE
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9614 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 21:17:17 +00:00
Shaun Ruffell
588d311c62 dahdi: Break the dahdi_ctl_ioctl handlers into separate functions.
This is a cleanup as part of simplifying reference counting for the
spans.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9612 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:28 +00:00
Shaun Ruffell
9f790b7859 dahdi: Do not locate new master in interrupt context.
When a span goes into alarm it will look for a potential new master
span.  For dynamic spans that are running their processing in the
sync_tick callback, the chan_lock will already be held.  Therefore,
push the locating of a new master out to the global workqueue.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9611 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:24 +00:00
Shaun Ruffell
e5cbedbf37 dahdi: Add module parameter to limit number of pseudo channels.
Since there isn't a fixed array to hold all the channels, and also limit
the total number of channels that can be created, we'll add a module
parameter to allow the system administrator to specify the maximum
number of pseudo channels.  This is to prevent a potentially
non-privledged process from consuming too much CPU (since all pseudos
are checked each "tick" for conferencing) and kernel memory.

By default the number of pseudo channels is limited to 512.  Change the
default limit with:

]# modprobe dahdi max_pseudo_channels=<new limit>

or at runtime with:

]# echo <new limit> > /sys/module/dahdi/parameters/max_psuedo_channels

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9610 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:19 +00:00
Shaun Ruffell
579ea560ef dahdi: Remove 'chans' array from reg/unreg. Now completely removed.
Remove the remaining locations the 'chans' array was referenced but keep
the observable behavior the same.  Namely, channels are numbered in
registration order.  Only now it's possible to renumber channels easily
since their number is not also their implied location in the 'chans'
array.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9609 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:15 +00:00
Shaun Ruffell
b3aa15a793 dahdi: Remove three maxchans/DAHDI_MAX_CHANNELS references.
In dahdi_chec_conf, dahdi_chan_unreg, and dahdi_ioctl_confdiag maxchans
and DAHDI_MAX_CHANNELS was used to scan through all the channels.  Since
the channels are stored on the list of spans and list of pseudo
channels, we can directly iterate through those lists.  This also paves
the way for removing the arbitrary limit on the number of channels in
the driver.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9608 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:11 +00:00
Shaun Ruffell
6f8b5cefe5 dahdi: Drop 'chans' reference in chan_from_num.
Part of getting rid of global chans array.  We need to search the list
of spans and the list of pseudo channels.  While this is slower than a
direct index into a 'chans' array, the places where this function is
called are not in the 'hot' path but instead part of channel
configuration and conferencing setup.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9607 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:06 +00:00
Shaun Ruffell
4533614fb6 dahdi: Group all conditions for skipping channel receive together.
Streamlines the function a bit by grouping the three conditions that
would cause the channel receive to be completely skipped.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9606 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:28:02 +00:00
Shaun Ruffell
5002e537c3 dahdi: Move the slave channel processing into separate functions.
IMO this improves readability of dahdi_receive and dahdi_transmit, and
the compiler can decide if it is better to inline this in with the
caller or break it out into a separate function.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9605 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:58 +00:00
Shaun Ruffell
766d0755fd dahdi: Save pointer to monitored channel in struct dahdi_chan.
When we're in monitor mode, we can save a pointer to the channel we are
monitoring directly instead of dereferencing the 'chans' array each
time.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9604 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:53 +00:00
Shaun Ruffell
88345e505a dahdi: When DACS is enabled, hold a pointer directly to the crossed channel.
This both removes the need to reference the 'chans'
__dahdi_process_putaudio_chunk and __dahdi_process_getaudio_chunk, and
allows the dahdi_receive / dahdi_transmit logic to be streamlined.  DACS
channels can no longer be echocanceled if crossed.  However, if a
channel was DACSed with dahi_cfg it couldn't have been echocanceled
anyway since the echo cancelers are disabled on the channel by default.

This change was originally contained in a patch kpfleming had floating
around. I split it up and merged it.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9603 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:49 +00:00
Shaun Ruffell
7c49f372c2 dahdi: Only check for NOSTDTXRX once in dahdi_receive.
There is no need to check the flag on the master channel when processing all
the slave channels.  Originally part of a patch kpfleming had floating around.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9602 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:44 +00:00
Shaun Ruffell
9d4a2fad78 dahdi: Trivial formatting change in dahdi_receive.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9601 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:40 +00:00
Shaun Ruffell
8053657761 dahdi: Change dahdi_chan.nextslave from index to a pointer.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9600 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:36 +00:00
Shaun Ruffell
c380e4d91e dahdi: Use 'dacs_chan' convenience pointer in dahdi_ioctl_chanconfig.
Eliminates the need to look for the channel number twice.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9599 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:31 +00:00
Shaun Ruffell
800c356cf3 dahdi: Remove arbitrary limit on number of spans in the kernel.
Spans are no longer added to a static array, but they are chained
together in a list.  DAHDI_MAX_SPANS, while no longer used in the
kernel, is still in include/dahdi/user.h since dahdi tools is currently
using it.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9598 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:27 +00:00
Shaun Ruffell
7a6d71f35c dahdi: Move the contents of digits.h directly into dahdi-base.c
Clarify that these definitions are not / no longer used outside
dahdi-base.c.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9597 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:23 +00:00
Shaun Ruffell
89d96a16b5 dahdi: Cleanup formatting in dahdi_ioctl_set_dialparams().
Mainly I wanted to document that the global_dialparams is protected by
the BKL so that it can be closely checked when lock_kernel is removed
from DAHDI.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9596 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:18 +00:00
Shaun Ruffell
a6b2fb1891 dahdi: Move DAHDI_SET_DIALPARAMS code into separate function.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9595 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:14 +00:00
Shaun Ruffell
daf96e677d dahdi: Change reference counting for tone zones.
This change primarily is a memory reduction.  Most users only ever have
a single tone zone loaded so we can save some mostly unused pointers by
using a list instead of an array.  Since we also have a pointer to the
dahdi_zone in struct dahdi_chan, we also don't need to store the integer
that is an index into that array.  This saves 4 bytes for every channel
allocated in the system. Finally, we don't need a separate default_zone
member since we're on a list, we can define the first element on
the list to always be the default zone.

Additionally, all reference counted structures in the drivers should
standardize on kref as much as possible for simplicity.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9594 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:10 +00:00
Shaun Ruffell
215d530887 dahdi: Introduce dahdi_kasprintf for pre 2.6.12 kernels.
kasprintf will be used in upcoming changes and it's not supported on
RHEL4 kernels. This change essentially backports it.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9593 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:05 +00:00
Shaun Ruffell
0dc5fd0ffb dahdi: Add error if CONFIG_BKL is not defined
Might help when someone wonders why they are now getting errors about
"lock_kernel" being undefined.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9592 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:27:01 +00:00
Shaun Ruffell
781b51aa3a dahdi: trivial. Remove unneccessary comment.
Not only should you not reach that line, it's impossible for you to
reach that line.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9591 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:56 +00:00
Shaun Ruffell
41c09ac4b4 dahdi: Minor fix for alloc/free of 'struct ecfactory'
Do not allocate the structure with GFP_KERNEL under the lock in
dahdi_echocan_factory_register and closes a leak in
dahdi_echocan_factory_unregister.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9590 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:52 +00:00
Shaun Ruffell
42ba6fab28 dahdi: Convert ecfactory_list_lock from rwlock to spinlock.
rwlocks are slowly being deprecated because they typically do not
provide the performance increase expected.  Most of the
ecfactory_list_lock acquiring is during setup and not in the hot path
anyway, so we can just use the simpler spinlock semantics without the
overhead of a semaphore or mutex.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9589 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:47 +00:00
Shaun Ruffell
3ba232691d dahdi: Use a spinlock instead of a rwlock for 'zone_lock'
rwlocks are deprecated and there aren't that many places where read_lock
was called on the lock anyway.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9588 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:43 +00:00
Shaun Ruffell
4763b89d5a dahdi, xpp: dahdi_span_ops.sync_tick should return void.
Since the return value is not defined/used just return void.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9587 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:39 +00:00
Shaun Ruffell
c6ae6d6cec dahdi: Trivial move of sync_tick callback to inline function.
This is a trivial cleanup to primarily to remove the #ifdef test out of
process_masterspan.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9586 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:34 +00:00
Shaun Ruffell
2f3b2a4f62 'dahdi_copy_string()' -> 'strlcpy()'
There is already a safe string copying function in all the kernels DAHDI
currently supports.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9585 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:29 +00:00
Shaun Ruffell
25a8bb1abe "struct pci_device_id[]" -> "DEFINE_PCI_DEVICE_TABLE"
2.6.25 added the DEFINE_PCI_DEVICE_TABLE macro to make sure that the
pci_device_id tables are put into the correct section in the binary.
Convert all the places where the tables were defined to use them.

This is linux-2.6 commit where the change went in along with the
rationale:  90a1ba0c5e39eeea278f263c28ae02166c5911c8

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9584 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:24 +00:00
Shaun Ruffell
fdaa2d3f49 dahdi: Take a reference count on module when operating on spans directly.
Normally, spans are accessed via channels, which increment the reference
count on the supporting module as part of the open call.  When operating
on spans by number we are susceptible to a module_unload while we are
accessing the span.

Renames find_span to span_find_and_get to indicate that we're both
finding the span by number and increasing the reference count on the
span.  Spans themselves don't currently have reference counts, but we
can increment the reference count on the module that owns the spans.
This will prevent the module that has the span from unloading in the
middle of a span_config call, which in the case of the wcte12xp can take
awhile since the VPM firmware is loading.

Hopefully in the near future the spans themselves will be reference
counted directly.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9583 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:19 +00:00
Shaun Ruffell
c168f838ac dahdi: Add the span onto the list as the very last thing
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9582 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:14 +00:00
Shaun Ruffell
c050ca9065 dahdi: Allow spans to advertise if they can provide any timing.
Some spans, specifically dynamic local spans, should never be the timing
master since they are dependent on some other timing source driving
them.

The bit in 'struct dahdi_span' is named cannot provide timing so that by
default the other drivers will set it to 0.

This is loosely related to issue #13205 but doesn't address any of the
other elements of that issue about how to allow the user to configure
what the master span order of succession is.

(issue #13205)
Reported by: biohumanoid

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9581 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:08 +00:00
Shaun Ruffell
28f559e2ac dahdi_dynamic: Do not depend on BKL for serialization of dspan creation.
Also makes it safe to unregister a dynamic driver when there aren't any
open channels on the dynamic spans.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9580 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:26:04 +00:00
Shaun Ruffell
e0d94d5ca4 dahdi_dynamic: Pass the dahdi_dynamic to create/destroy functions.
This allows the pvt member to be set under lock without holding the lock
through the call to create destroy.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9578 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:56 +00:00
Shaun Ruffell
b68be9abb5 dahdi_dynamic: Do not enable tasklets by default for dynamic_spans.
Running in tasklets does not work well when dahdi doesn't have a span that is
acting as the master.  In this case, process_masterspan is being called in
system timer that may not be running at 1ms intervals.  The end result is that
the dynamic_run function isn't called for every chunk processed, and there is
data loss.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9577 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:51 +00:00
Shaun Ruffell
e3bf2fe45d dahdi_dynamic: Use dahdi_span_ops.sync_tick for driving dynamic spans.
Dynamic spans that are unable to provide their own timing, like dahdi
local spans, typically derived their timing source from
dahdi_dynamic_ioctl(0,0) call in process_masterspan.

This change uses the sync_tick member of dahdi_span_ops instead so that
dynamic operations do not happen on a span until it is fully registered.
Also removes the check for dahdi_dynamic_ioctl in process masterspan for
those users that never load a dynamic span.

This was originally suggested in a comment on:
(issue #13205)

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9576 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:45 +00:00
Shaun Ruffell
8c709f9aa0 dahdi_dynamic: Remove tests for KERNEL_VERSION < 2.6.9
2.6.9 is the earliest kernel version currently supported by DAHDI.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9575 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:41 +00:00
Shaun Ruffell
cee7f745e5 dahdi_dynamic: constify the address parameter to create.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9574 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:36 +00:00
Shaun Ruffell
8212485969 dahdi_dynamic: dynamic drivers should not reference count themselves.
Move the try_module_get/module_put calls from the various dynamic
drivers into the "core" dahdi_dynamic.c file itself.  This way, a
reference count can always be held while calling through the function
pointers.  This is enabled by adding an .owner field to 'struct
dahdi_dynamic_driver'.

Dynamic spans are also unique in dahdi in that they require a "dahdi_cfg
-s" to stop them and release the references on the modules.  This is
counterintuitive. This change makes sure they are reference counted just
like other spans and on driver unload, if there aren't any open handles
from userspace, they will take care of unwinding themselves.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9573 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:32 +00:00
Shaun Ruffell
1aacc92326 dahdi_dynamic: "dahdi_dynamic_[un]register()" -> "dahdi_dynamic_[un]register_driver()"
Clarify that we're registering / unregistering the driver.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9572 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:27 +00:00
Shaun Ruffell
53fef32a61 dahdi_dynamic: Replace usecount and dead members with 'struct kref'
dahdi_dynamic can be converted to use kernel idiomatic reference
counting since DAHDI only supports 2.6.9+ kernels now.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9571 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:23 +00:00
Shaun Ruffell
7251a7e35a dahdi_dynamic_[loc|eth|ethmf]: Remove unused return value from transmit callback.
The return value from the transmit callback function was not used
anywhere, and is now removed.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9570 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:18 +00:00
Shaun Ruffell
c7ae773800 dahdi_dynamic: Use const pointers for dahdi_dynamic_driver strings.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9569 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:13 +00:00
Shaun Ruffell
47ec64f9b0 dahdi_dynamic: kmalloc/memset -> kzalloc
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9568 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:09 +00:00
Shaun Ruffell
5583487c45 dahdi_dynamic: Trivial removal of 'zaptel' references.
Replaces all the 'z' references to 'd' as appropriate and cleans up any
formatting problems that popped up as a result.  The intent here is to
reduce confusion in the future as someone may wonder what the 'Z's refer
to.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9567 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:05 +00:00
Shaun Ruffell
56a6e402ae dahdi_dynamic_loc: Do not call dahdi_dynamic_receive on peers before reg.
It's possible for dahdi_dynamic_loc spans to be "peered" before the
dahdi_span is fully register.  Do not call dahdi_dynamic_receive on any
peers before they are fully registered.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9566 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:25:00 +00:00
Shaun Ruffell
08eb1a560d dahdi_dynamic_loc: Reduce indentation level in 'dahdi_dynamic_local_create()'
This is a trivial formatting change in order to not introduce any warnings.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9565 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:24:56 +00:00
Shaun Ruffell
42b9a95b34 dahdi_dynamic_loc: Use a standard kernel linked list.
The memory saved by using a singly linked list does not, in my opinion,
outweigh the benefit of using the standard kernel macros.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9564 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:24:52 +00:00
Shaun Ruffell
3163002ad0 dahdi_dynamic_loc: kmalloc/memset -> kzalloc
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9563 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:24:48 +00:00
Shaun Ruffell
29b0b48096 dahdi_dynamic_loc: Remove references to 'zaptel'
Hopefully will eliminate any questions about what the 'z's are supposed
to represent.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9562 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 18:24:43 +00:00
Shaun Ruffell
cf2c6ce98b Update copyright on changed files since 2011-01-01.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9560 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 14:55:24 +00:00
Shaun Ruffell
b44ab5ab44 wcte12xp: Remove GpakHpi.h file from drivers/dahdi/wcte12xp
This file is now in drivers/dahdi/voicebus folder.  This file should
have been removed when the Gpak API was moved out of the individual
board drivers.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9559 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 14:55:22 +00:00
Shaun Ruffell
8c790d07a8 wct4xxp: Hold the reglock longer when checking error counters.
This is a very slight performance improvement. Eliminating the need to
save the IRQ flags is probably more of a boost than grabbing and
releasing the reglock.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9558 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 14:55:19 +00:00
Shaun Ruffell
a6c9b88c66 Trivial removal of duplicate #includes
Mostly linux/errno.h was included more than once.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9557 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 14:55:15 +00:00
Shaun Ruffell
a35b0b21da wcb4xxp: HDLC packets do not pass over D-channel.
dahdi/wcb4xxp driver used with Digium Wildcard B410 quad-BRI PCI card
unable to communicate with another ISDN device (ISDN phone, another port
of B410). It appears that B-channels are capable to transport data, but
D-channel is not.

Debug output added into the driver shows that packets are transmitted to
the D-channel, but no packets are received. Further investigation shows
that no interrupts received from Rx FIFO associated with D-channel,
although packets are delivered to the FIFO. I've found that problem is
in improper usage of chan->chanpos while indexing the fifo index
(bspan->fifos): chanpos starts from 1 and fifos starts from 0.
Therefore, garbage read instead of fifo number.

(closes issue #14834)
Reported by: vvv
Patches:
      dahdi-linux-complete-2.2.0-rc1.patch uploaded by vvv (license 741)

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9555 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 13:06:54 +00:00
Shaun Ruffell
8870b8e1fb wcte12xp, wctdm24xxp: Do not call pci_set_drvdata after device initialization.
Instead of using pci_set_drvdata embed the 'struct voicebus_operations'
directly in the context so we can use container_of to find the context.

This resolves a problem where the 'remove_one' callback gets an invalid
pointer to 'struct t1' if the VPMADT032 is in the middle of a reload
when the module is unloading.  DAHDI-783.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9554 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 13:03:49 +00:00
Tzafrir Cohen
5759e5a6a6 constants for ctl, transcode, timer, channel, pseudo
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9552 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-01-03 10:49:22 +00:00
Shaun Ruffell
e26a4d25c8 dahdi: Cleanup in the dahdi_chan_poll function.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerreicks <rmeyerreicks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9550 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-21 16:09:31 +00:00
Shaun Ruffell
9496527004 dahdi: Initialize chan->waitq once at registration time.
This is instead of initializing the waitq each time the channel is
opened or closed.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9549 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-21 16:09:27 +00:00
Shaun Ruffell
2765186d03 dahdi: Use a single wait_queue_t for dahdi channels.
Since we've now switched to wait_event_interruptible calls, we have a
condition that we can check when we're awoken.  This allows us to
combine the separate wait queues into a single queue.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9548 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-21 16:09:22 +00:00
Shaun Ruffell
74fff81da4 dahdi: Remove interruptible_sleep_on() calls for WINK/FLASH.
Makes it a little more clear what it is we're really waiting for.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9547 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-21 16:09:17 +00:00
Shaun Ruffell
492315c255 wcb4xxp: Remove unused syncpos member.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9545 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-20 19:49:05 +00:00
Shaun Ruffell
34400ad07c wcte12xp, wctdm24xxp: Use more descriptive symbols for the bus setup.
This is a cleanup patch to make it a little easier to see what the bits
mean.

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@9543 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 18:54:53 +00:00
Shaun Ruffell
4de462c3e0 wctdm24xxp, wcte12xp: Disable PCI read-line multiple command.
There are some platforms where the read-line multiple transaction causes
packets to be dropped in the voicebus pipeline.  The only observable
behavior is that packets just go "missing" in the pipeline.  This also
only appears to affect PCI cards.

A typical 'symptom' of this problem is you may see IRQ misses increasing
without any corresponding "bumps" in latency in the kernel message log.
Normally, IRQ misses are correlated to latency bumps since that is an
indication that the host was not able to service the card interrupt in a
timely fashion. DAHDI-510 DAHDI-774

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9542 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 18:54:49 +00:00
Shaun Ruffell
1d9cbea469 wcb4xxp: Remove redundant dev member from 'struct wcb4xxp'
The 'pdev' member already contained a pointer to what 'dev' was pointing
to.  Also ensure most of the changed lines are under 80 characters.
There are two lines that are were too deeply nested to do anything
sensible.

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@9540 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:35 +00:00
Shaun Ruffell
eba7fe3ca4 wct4xxp: Close a memory leak in the VPM450 error path.
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@9539 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:31 +00:00
Shaun Ruffell
b7cf1d9c02 vpmadt032: Convert ifacelock from rwlock to plain spinlock.
rwlock is slower than normal spinlocks and this lock is rarely contended
for.  Also noticed that the vpmadt032_module_init function is now (was
already) redundant since all the elements initialized in it were already
initialized.

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@9538 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:25 +00:00
Shaun Ruffell
9292e6f0ad wctc4xxp: Make the "mode" module parameter read-only in sysfs.
The mode module parameter is only acted on during module initialization.
We shouldn't allow anyone to change it after the driver is already
loaded.

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@9537 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:21 +00:00
Shaun Ruffell
0c3cbc2c32 wcte12xp: Unregister the span before any additional cleanup.
Span registration is the last step in during initialization and it
should be the first on unregistration.  I also was hit by this when
looking at adding other members to the span and made the assumption that
the span was in a consistent state during unregistration.

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@9536 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:16 +00:00
Shaun Ruffell
5b6fba6e4b wctdm24xxp, wcte12xp: Lock interrupts when recovering from an underrun.
This reduces the chance that another interrupt will interfere with the
recovery process.  Otherwise it is possible that the hardware advances
past the position that we think it is currently at.

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@9535 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:12 +00:00
Shaun Ruffell
cf3e4bd757 wctdm24xxp, wcte12xp: Add more descriptive message on a failed reset.
Reading 0xffffffff from the registers is a different error than just not
coming out of reset.  Add a little extra debugging information.

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@9534 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-15 17:53:07 +00:00
Shaun Ruffell
3203aaf84c dahdi: Do not dereference chan->span for pseudo channels.
Fixes a regression introduced in r9510 which saves a pointer to the ops
member of a channel's span before checking if the channel is a pseudo.
Psuedo channels do not have spans.

(issue #18463)
(issue #18422)
Reported by: alecdavis

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9530 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-13 14:57:12 +00:00
Kinsey Moore
60c4681ec8 dahdi_echocan_hpec: Update the HPEC wrapper to use the new name interface
I apparently forgot all about HPEC when updating the echocans for the change
in the factory and echocan ops structures related to echocan naming.  The HPEC
wrapper should now be up to date with the rest of DAHDI.

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


git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9526 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 21:52:34 +00:00
Kinsey Moore
7a7d4000a0 dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel
Changed the echocan factory name to a function (get_name) called to get the
name.  This allows a factory to return a different name when being called in
reference to a channel such as in the case of hardware echo cancellers.  To
further accommodate this change for HWEC, a new echocan_name function was
added to the span ops struct and is used in hwec_factory in dahdi-base for
all cards that support hardware echo cancellation.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9524 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 20:19:26 +00:00
Kinsey Moore
fd01eef199 dahdi-base, kernel, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp: Remove name field from echocan ops
This field was redundant and was only used in places where the factory's name could be used.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9523 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 20:19:21 +00:00
Kinsey Moore
06eac5b1d2 dahdi-base: Alarms may not be the last item on the line, so don't strip the trailing space
Signed-off-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9522 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 20:19:18 +00:00
Kinsey Moore
fbee540bf5 dahdi-base: Remove old method of invoking HWEC
Remove the code that allowed hardware echo cancellation to automatically
override software cancellation and prevented SWEC from working at all on a
card if HWEC was installed.  All EC now uses the standard modular EC interface.
Additionally, the "SWEC" identifier on channel lines in /proc/dahdi has been
changed to "ECTYPE" to avoid confusion.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9521 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 20:19:16 +00:00
Kinsey Moore
6140d43665 dahdi-base: Allow HWEC to use the modular echocan interface
This change adds an echocan factory to dahdi-base that will allow hardware
echo cancellation to use the same interface as the current software echo
cancellers.  The additions in this commit will not have any effect until the
current HWEC mechanism is removed.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9520 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-09 20:19:13 +00:00
Russ Meyerriecks
6e25ac61db dahdi: Fixed loopup/loopdown signals
The loopup/loopdown T1 maintenance feature in the single through quad-span
drivers now function properly, according to AT&T TR54016, by sending a
full rate pattern down the line. T1.403 ESF/Data Link patterns are not
supported currently.

Also grouped all the maint reset register clears under a single irq lock
to crank the performance up past 11.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9516 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-08 22:11:58 +00:00
Russ Meyerriecks
bbdcb0c7ba dahdi: Removing loopstop maint function
DAHDI_MAINT_LOOPSTOP is being removed due to the redundancy with
DAHDI_MAINT_NONE. Also removing some timing logic, as amount of time a
loopup or loopdown signal is held on the line, is now defined in
userspace with dahdi_maint.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9515 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-08 22:11:53 +00:00
Russ Meyerriecks
5ee55a6147 dahdi: Clean up an unused waitqueue
The dahdi_span->maintq wait queue was very old and not being used so it
has been removed.

Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-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@9514 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-08 22:11:46 +00:00
Shaun Ruffell
51bff0d802 wcte12xp: Use interruptible waits to decrease impact on load average.
The wcte12xp does all the checking for alarm in a user space workqueue.
Most of this time is spent sleeping waiting for reads from the framer to
complete.  Tasks in uninterruptible sleeps are added to running tasks
for the purposes of calculating load average. This change makes the
sleeps interruptible so as to not affect the load average as much.

For example, the following command will load and configure the driver and
then print the load average every 10 seconds.

]# modprobe wcte12xp && dahdi_cfg && ((x=12)); while [[ $x -gt 0 ]]; do cat
/proc/loadavg; sleep 10; let x=$x-1; done

With this change:
0.29 0.10 0.02 1/101 29945
0.24 0.10 0.02 1/101 29967
0.20 0.09 0.02 1/101 30019
0.17 0.09 0.02 1/101 30041
0.15 0.09 0.02 1/101 30062
0.12 0.08 0.02 1/101 30085
0.10 0.08 0.02 1/101 30107
0.09 0.08 0.02 1/101 30129
0.07 0.08 0.02 1/101 30151
0.14 0.09 0.02 1/101 30173
0.12 0.09 0.02 1/101 30195
0.10 0.08 0.02 1/101 30217
(and I've seen it get down to 0.0)

Before this change:
0.57 0.22 0.07 1/101 31920
0.48 0.21 0.07 1/101 31942
0.48 0.22 0.07 1/101 31964
0.48 0.23 0.08 1/101 31986
0.41 0.22 0.07 1/101 32008
0.42 0.23 0.08 1/101 32030
0.43 0.24 0.08 1/101 32054
0.45 0.25 0.09 1/101 32076
0.45 0.25 0.09 1/101 32098
0.46 0.26 0.10 1/101 32120
0.47 0.27 0.10 1/101 32172
0.39 0.26 0.10 1/101 32194

(closes issue #18142)
Reported by: foxfire
Tested by: foxfire

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9512 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-08 01:56:56 +00:00
Shaun Ruffell
f7925643de dahdi: Prevent unloadable module on failed open.
If chan->span->ops->open() fails then the reference count of the module
implementing the board driver will not be decremented.  The result is a
module that would always be "in use" and unloadable.

This change makes sure to release that reference when open failed.

(closes issue #18422)
Reported by: avarvit

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Angelos Varvitsiotis <avarvit@admin.grnet.gr>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9510 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-07 14:20:38 +00:00
Tzafrir Cohen
87d376ba19 xpd_pri: Remove pointless hooksig span op
If the span reports that it supports hooksig, DAHDI may fail to use RBS.
So remove a call to that stub function.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9506 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-07 11:00:07 +00:00
Tzafrir Cohen
1b79cc7562 xpd_pri: ignore DAHDI_VMWI and DAHDIVMWI_CONFIG
This fixes an annoying, though harmless issue: if Asterisk decides to send
voicemail messages to a channel (CAS, configured as FXS), We can't do
anything useful with them. So ignore them to avoid scary-looking messages
(from report_bad_ioctl()).

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9505 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-07 10:59:37 +00:00
Shaun Ruffell
2175ea1293 wctdm24xxp, wcte12xp: Close a few potential resource assignment leaks.
There were some routes through the failure paths in __voicebus_init() where a
registered memory region was not subsequently released.  This change closes
those paths.

The result would be on subsequent loads of the driver after hitting the
failure condition you would see "IO Registers are in use by another module."
in dmesg.

request_mem_region/release_mem_region should most likely be converted to
devm_request_region and devm_release_region introduced in 2.6.20
(commit 9ac7849e35f705830f7b016ff272b0ff1f7ff759) which was introduced for
reasons just such as this.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9503 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-02 22:42:56 +00:00
Shaun Ruffell
102a2f0982 wctdm24xxp: Replace interruptible_sleep_on() with msleep when delaying.
There were several cases where interruptible_sleep_on() was being used
as a ms timer, since the assumption is that the board will interrupt at
even 1ms intervals.  We can replace these cases with msleep directly to
clarify that we're just waiting.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9501 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-12-01 16:59:20 +00:00
Shaun Ruffell
75c33ce64e dahdi: A little cleanup in the dahdi_ioctl_iomux function.
The primary change is to make clear that the wait result is not ever to
be returned by the function.  There are also edits to remove some
comments that were expressed clearly in the source already and ensure
that the iomux member of 'struct dahdi_chan' is only accessed under the
chan->lock.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Sean Bright <sean.bright@gmail.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9497 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-25 00:07:10 +00:00
Sean Bright
f406bba4c6 dahdi: dahdi_ioctl_iomux should return 0 on success.
This fixes a regression introduced in revision r9466.  Before this patch
one might see "I/O MUX failed: Success" messages on the Asterisk console
since the return from ioctl was > 0.

Signed-off-by: Sean Bright <sean.bright@gmail.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9496 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-25 00:07:05 +00:00
Russ Meyerriecks
08d3ff5671 dahdi: Fixup prior dahdi_mirror patch
Reworking tsearle's patch to fit with coding guidelines and make
process_masterspan a bit easier to read.

(closes issue #16831)
Reported by: tsearle
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9494 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-19 17:34:42 +00:00
Russ Meyerriecks
494472ee1a dahdi: Stops junk data from overwriting the dahdi_mirror pseudo chans
(issue #16831)
Reported by: tsearle
Patches:
      dahdi_mirror2.patch uploaded by tsearle (license 373)
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9493 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-19 17:34:36 +00:00
Russ Meyerriecks
712704c237 dahdi: Moved the channel mirroring interface behind a build flag
It can now be enabled by un-commenting the CONFIG_DAHDI_MIRROR define in
include/dahdi/dahdi_config.h
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9492 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-19 17:34:31 +00:00
Russ Meyerriecks
9090c6fcd2 dahdi: adding ss7 pcap support to dahdi.
Adding the patch from the issue with various fixups to fit style and
checkpatch

(issue #16831)
Reported by: tsearle
Patches:
      driver_v2.patch uploaded by tsearle (license 373)
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9491 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-19 17:34:25 +00:00
Shaun Ruffell
06136006df dahdi: In dahdi_unregister() 'new_master' should not be static.
The first place new_master is referenced after the definition is to
assign it to the value of the current master.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9489 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-19 14:07:29 +00:00
Russ Meyerriecks
1e2923566d dahdi-base: Add debug option to log RBS bit changes
Logs the RBS bits to dmesg, for troubleshooting, for all drivers that call
dahdi_rbsbits(). Added the DEBUG_RBS bit in the debug module parameter
bitfield.

(issue #18025)

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9487 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-18 17:15:07 +00:00
Shaun Ruffell
8c24b0fd8f wctdm24xxp: 'wait_just_a_bit()' -> 'msleep()'
If we're waiting for tens or hundreds of milliseconds we will just go to
sleep instead of spinning.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9471 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:41:02 +00:00
Shaun Ruffell
c674c147fd wctdm24xxp: Remove unused 'usecount' member.
'usecount' was removed in revision 6926 but parts were accidentally
merged back in revision 8123 as part of the Hx8 merge.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9470 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:58 +00:00
Shaun Ruffell
4deae0c8ea wctdm24xxp: Replace 'schluffen()' with 'interruptible_sleep_on()'
'schluffen()' essentially duplicates the functionality of the standard
Linux 'interruptible_sleep_on()' function.

There may still be some race conditions that can be closed here, but
most of the command queue processing is sloted for conversion to
something more like in the single span driver in order to reduce the
time in interrupt context spent scanning for commands to the modules.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9469 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:53 +00:00
Shaun Ruffell
3de1002cb5 dahdi: Constify the dahdi_txlevelnames and return of dahdi_lboname().
Also moves the dahdi_txlevelnames array into the dahdi_lboname function,
which is the only place it it used.

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@9468 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:49 +00:00
Shaun Ruffell
a170389509 dahdi: Close race between checking IOMUX condition and sleeping.
wake_up_interruptible() will change the state of waiting tasks back to
TASK_RUNNING, therefore, we want to ensure we set TASK_INTERRUPTIBLE
before checking the conditions that we're going to sleep on.

In practice, this closes a small window were the caller may be put to
sleep when the condition is true, and have to wait for another event to
come in order to wake from the sleep.

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@9467 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:44 +00:00
Shaun Ruffell
649fa2f43d dahdi: Move the DAHDI_IOMUX ioctl handler into a separate function.
Just a cleanup patch that moves code into a standalone function.  Real
change to follow.

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@9466 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:40 +00:00
Shaun Ruffell
a782b4de71 dahdi: 'schluffen()' -> 'interruptible_sleep_on()' or 'wait_event_interruptible()'
'interruptible_sleep_on()' is the Linux equivalent of 'tsleep()'.  When
we're sleeping for a condition, we can also just use
wait_event_interruptible to close a potential race where the condition
goes true between the time we checked it and when we go to sleep waiting
on the event.

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@9465 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:35 +00:00
Shaun Ruffell
37097411ea Remove mutex emulation
Using semaphores as mutexes was removed from the kernel in 4882720b267b.
Just use straight semaphores now.  'DECLARE_MUTEX()' -> 'DEFINE_SEMAPHORE()'
and 'init_MUTEX()' -> 'sema_init()'.

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

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9464 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:29 +00:00
Shaun Ruffell
3f9cb05bae dahdi: Remove DAHDI_CONFLINK functionality.
Conference links do not appear to be in use anymore and they are now
removed.  I could not find any references to this ioctl in the asterisk
repository, or zaptel user space tools.

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@9463 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-11-04 16:40:23 +00:00
Russ Meyerriecks
1b51530c19 Minor logging text change
Renamed the NMF workaround message to the more informational
crc4-multiframe (mis)alignment message.

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9461 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-10-25 20:01:54 +00:00