Commit Graph

1061 Commits

Author SHA1 Message Date
Harald Welte 17099c0f46 Revert "Remove support for driver wcte12xp."
This reverts commit 3697450317.
2022-04-24 18:06:56 +02:00
Harald Welte a706f5a1cc adapt te11xp to DAHDI API changes since its removal 2022-04-24 18:06:56 +02:00
Harald Welte a5796d6113 Revert "Remove support for driver wcte11xp."
This reverts commit 3748456d22,
which removed a driver simply becuase Digium proclaimed they didn't
sell a card in 10 years.  That does *not* mean nobody is using those
anymore.

I wish there was more of a community maitaining the DAHDI drivers.
2022-04-24 18:06:56 +02:00
Harald Welte b072070e12 wct4xxp: Fix build without VPM_SUPPORT 2022-04-24 18:06:56 +02:00
Harald Welte cd446e7171 dahdi_config: Enable DAHDI_DYNAMIC + DAHDI_DYNAMIC_LOC
Especially for automatic testing it is quite useful to have virtual
DAHDI spans with a loopback between them.
2022-04-24 18:06:56 +02:00
Harald Welte 1e596bd52a dahdi_config.h: Enable CONFIG_DAHDI_NET 2022-04-24 18:06:56 +02:00
Harald Welte 09adb59cfe Fix build against linux >= 5.18.0
This fixes the build against kernels >= 5.18.0 which contain the
following commit removing teh pci-dma-compat API:

	commit 7968778914e53788a01c2dee2692cab157de9ac0
	Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
	Date:   Wed Mar 9 20:50:39 2022 +0100

	    PCI: Remove the deprecated "pci-dma-compat.h" API

Change-Id: Ie05e5f42a5eef2dd0377fdc2c22b4a731619e372
2022-04-24 18:05:46 +02:00
Harald Welte b6d9b417e1 Fix build against linux >= 5.17.0
This fixes the build against kernels >= 5.17.0 which contain the
following commit removing the PDE_DATA() macro:

	commit 359745d78351c6f5442435f81549f0207ece28aa
	Author: Muchun Song <songmuchun@bytedance.com>
	Date:   Fri Jan 21 22:14:23 2022 -0800

	    proc: remove PDE_DATA() completely

Change-Id: I5019aa36b76ae1ba4f56f6d15eef4b2f4c755405
2022-04-24 18:03:27 +02:00
Harald Welte b2371828be Fix build with DAHDI_NET on kernel >= 5.15
Ever since commit ad7eab2ab014748b062507b7ac69f8e856057717
"net: split out ndo_siowandev ioctl" has been merged in 5.15-rc1,
DAHDI failed to compile with DAHDI_NET enabled due to slight differences
in handling the HDLC/WAN device related ioctl.

Signed-off-by: Harald Welte <laforge@gnumonks.org>
2021-11-29 10:02:54 +01:00
Alexei A. Smekalkine 9c152d2828 dahdi-base, netdev: send frame via protocol handlers, fix HDLC encapsulation
The HDLC encapsulation module can add its own headers and trailers to
the packet. For correct operation in this case, it is necessary to send
a packet from DAHDI to the appropriate HDLC handler. The HDLC handler,
in turn, should call the device driver procedure to transfer the packet.

Thus, for correct processing of outgoing packets, we should use function
hdlc_start_xmit from Linux HDLC stack as a ndo_start_xmit procedure.

(Note that if the protocol handler does not provide a xmit procedure,
then function hdlc_start_xmit will call the hardware driver directly.)

In the case of DAHDI, the packet transfer procedure (device driver xmit
procedure) is set in function dahdi_ioctl_chanconfig to dahdi_xmit:

    dev_to_hdlc(chan->hdlcnetdev->netdev)->xmit = dahdi_xmit;

Asterisk-Issue: DAHLIN-381
2021-11-29 10:02:54 +01:00
Alexander Couzens 97d6b0fd74 remove old ioctl code
With 5.9 the macros HAVE_UNLOCKED_IOCTL and HAVE_COMPAT_IOCTL are gone.
I didn't figured out when they were added because it predates git (2.6.12).

I don't know if there are any user or if the current dahdi driver even builds with such an old
linux kernel version.
2021-11-29 10:02:54 +01:00
Harald Welte fb04119bd0 dahdi-base.c: remove netdev->trans_start (kerne >= 4.7)
In linux kernel commit 4d659fcb20d3d3302b429c889a73a92ff2804b9a
in May 2016, netdev->trans_start was removed and write accesses
are replaced with this helper: netif_trans_update(dev)

This makes dahdi-base.c compile against kernels >= 4.7
when CONFIG_DAHDI_NET is enabled.

Signed-off-by: Harald Welte <laforge@osmocom.org>
2020-09-11 23:57:46 +02:00
Harald Welte 6c6d85e058 Fix build on kernels >= 5.6.0 (struct proc_ops)
In kernel commit d56c0d45f0e27f814e87a1676b6bdccccbc252e9, procfs
switched from 'struct file_operations' to 'struct proc_ops'; we need
to change DAHDI to build with those more recent kernels.
2020-09-11 23:56:31 +02:00
Harald Welte a07cd9534f Fix build on kernels >= 5.4.0 (linux/pci-aspm.h is gone)
Since kernel commit 7ce2e76a0420801fb4b53b9e6850940e6b326433, ASPM
definitions have moved from linux/pci-aspm.h to linux/pci.h
2020-09-11 23:56:31 +02:00
Shaun Ruffell d07c4545ec dahdi: Store the span registration time as a ktime_t value as well.
Ideally we want to standardize on storing all timestamps derivied from the
system clock as ktime_t values.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell ffcd08205c xpp: Convert `struct timeval` -> ktime_t.
`struct timeval` has been removed from the kernel interface in 5.0 as
part of fixing the 2038 problem. ktime_t is the preferred kernel time
interface now.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 8468250328 dahdi: define dahdi_ktime_equal()
Older kernels (2.6.32) are unable to do a direct comparison of ktime
values, while kernels post 4.10 have removed the comparison function.
Therefore we need to make our own compatibility interface for comparing
the ktime values.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 3e2eb9ca32 dahdi_dummy: 'struct timespec' -> ktime_t
Use the new ktime_t based interface for dahdi_dummy as well. dahdi_dummy
is still useful to keep around for testing purposes.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 9991c959ef dahdi_dummy: Fix timer_setup API usage.
It looked like the recent change to add support for timer_setup was not
completely implemented / tested with dahdi_dummy. I was using it to
check some changes to the timekeeping API when I noticed this.

This does not really affect anyone since, by default, dahdi_dummy is no
longer built and even if it was built, it would not use the standard
timer interface by default on newer kernels.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell ac50b368aa dahdi: Update coretimer to use ktime instead of 'struct timespec'
Since this is only used internally, and ktime is the basis for
timekeeping in the kernel, this allows this interface to be validated,
before converting the other internal timekeeping to it.

This is part of the changes necessary to remove the use of 'struct
timeval' from the driver suite for compatibility with Linux 5.0, which
is updating the internal timekeeping interfaces to fix the 2038 problem.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell db9c5f5c89 oct612x: timeval -> ktime
The timeval structure is removed in Linux kernel 5.0 since it is not
year 2038 safe. Standardize on the ktime values.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 95fccc653c Backport ktime_ms_delta().
This function will return the number of milliseconds between two ktime
values, but it was only introduced in kernel version 4.0

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell e93c53ce05 Makefile: SUBDIRS -> KBUILD_EXTMOD
The SUBDIRS environment variable is scheduled to be removed in version
5.0 of the Linux Kernel.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell d9cf68685e Remove CLASS_DEV_CREATE / CLASS_DEV_DESTROY macros.
All supported kernel versions use the same signature for device_create /
device_destroy so we no longer need these macros.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 4f3a724036 wct4xxp: Remove unnused ENABLE_WORKQUEUE code paths
ENABLE_WORKQUEUE was only defined for kernels that were older than the
currently supported kernels. Instead of forward porting support for
workqueues in the wct4xxp driver, I think it better just to remove
support for them since they are not longer used.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 4af6f69fff Remove unnecessary dahdi_pci_module macro.
All supported kernel variations support the same signature for
registering a PCI module, so we can eliminate the macro.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell cdd6ddd0fd Remove unnecessary DAHDI_IRQ_HANDLER macro.
All supported kernels now use the same signature for the IRQ handler.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 02d30ab799 Remove support for kernels older than 2.6.27
There are not any major distributions that are still supporting kernels
older than 2.6.27 so we can remove many typedefs. The primary motivator
for this change is that kernel 5.0 is dropping support for timeval and
it would be ideal if the in-kernel time representation can
standardize on ktime_t, but 2.6.18 did not support the ktime
interface that was needed.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Shaun Ruffell 8c8b9b6df0 dahdi: timer_setup was backported in RHEL 7.6
Since Red Hat Linux backported the new timer_setup definition in 7.6, we
need to make sure to not define it ourselves when building against this
kernel.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
2019-05-08 11:33:05 -05:00
Keith Morgan 60aaff1289 DAHLIN-365 Added install-xpp-firm target back in the Makefile after it was left out. 2018-11-27 19:02:37 +00:00
Keith Morgan 75620dd9ef Remove struct devtype for unsupported drivers. 2018-10-05 19:42:50 +00:00
Keith Morgan f47c9bd928 Changed readme to reflect driver support changes. 2018-10-04 19:03:00 +00:00
Keith Morgan 40f4f86ffa Revert "Remove support for xpp drivers."
add them back.
This reverts commit a36d266254.
2018-10-04 17:51:54 +00:00
Keith Morgan 29cb229cd3 Remove support for all but wcb41xp wcb43xp and wcb23xp. 2018-10-04 17:34:21 +00:00
Keith Morgan a66e88e666 Remove support for wctdm800, wcaex800, wctdm410, wcaex410. 2018-10-03 17:02:56 +00:00
Keith Morgan a36d266254 Remove support for xpp drivers. 2018-10-03 15:31:08 +00:00
Keith Morgan 3697450317 Remove support for driver wcte12xp. 2018-10-03 15:18:39 +00:00
Keith Morgan 3748456d22 Remove support for driver wcte11xp. 2018-10-03 15:01:04 +00:00
Keith Morgan 04e759f9c5 Remove support for driver wctdm. 2018-10-03 14:13:59 +00:00
Keith Morgan dade6ac615 Remove support for wct1xxp driver. 2018-10-03 14:09:01 +00:00
Keith Morgan 14198aee85 Remove support for wcfxo driver. 2018-10-03 14:04:04 +00:00
Keith Morgan 60d058cc7a Remove support for tor2 driver. 2018-10-03 13:58:11 +00:00
Keith Morgan bfdfc4728c Remove support for pciradio driver. 2018-10-03 13:50:39 +00:00
Keith Morgan f95fff6588 Description: Remove a bodus "test" target
Author: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Bug: https://issues.asterisk.org/jira/browse/DAHLIN-364
2018-10-01 19:33:50 +00:00
Shaun Ruffell 6667f1c8d8 DAHDI in kernel 4.15: Switch to new timer_setup interface.
Upstream kernel 4.14, in commit (686fef928bba6b "timer: Prepare to change timer
callback argument type") [1], introduced the timer_setup interface to replace
the init_timer/setup_timer interfaces. The primary change is that the timer
callback functions now follow the standard kernel pattern where the structure
the callback sits in is passed to the callback instead of storing a pointer to
an unassociated data type.

The setup_timer functions were removed in upstream kernel v4.15, and therefore
this change is needed in order to compile DAHDI for kernels >= 4.15.

This change follows the same strategy that was done in the kernel to while the
existing users of setup_timer were migrated to the new interface.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=686fef928bba6b
2018-09-03 10:27:18 -05:00
Shaun Ruffell 20328895a2 Disable -Wformat-truncation and prevent potential string overflows.
GCC 7.3.0 complained about the potential to overflow the fixed size span and
channel names and descriptions. It also flagged potential truncations of the
strings.

The sprintf calls are now changed to snprintf to prevent the potential
overflows, but the warning about truncations are now disabled globally.
2018-09-03 10:27:18 -05:00
Shaun Ruffell 7ecdf370bc voicebus: Initialize stack buffer.
Quiets the following (valid) warning from gcc 7.3.0:

drivers/dahdi/voicebus/GpakApi.c:1648:22: warning: ‘MsgBuffer[1]’ may be used
   uninitialized in this function [-Wmaybe-uninitialized]
         MsgBuffer[1] |= DTMF_UPDATE_MASK;
2018-09-03 10:26:43 -05:00
Shaun Ruffell ea2d67414a xpp: fxs: Do not increment boolean.
This quiets the following warning from gcc 7.3.0:

  drivers/dahdi/xpp/card_fxs.c:1344:17: warning: increment of a boolean
  	expression [-Wbool-operation]
2018-09-03 10:26:29 -05:00
Shaun Ruffell 14d8754e34 Completely clear out conference buffers.
This fixes an error and quiets the following warning pointed out by gcc 7.3.0:

  warning: ‘memset’ used with length equal to number of elements without
    multiplication by element size [-Wmemset-elt-size] memset(chan->conflast, 0,
    DAHDI_MAX_CHUNKSIZE);

Previously only the first half of the conference buffers were cleared out.
2018-08-09 09:56:21 -05:00
Oron Peled d3c9e43437 xpp: Support FXS module with 4 ports and no I/O
Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
2018-05-10 12:18:35 +03:00