wanpipe-3.5.16.tgz

This commit is contained in:
Harald Welte 2021-12-29 18:44:13 +01:00
parent ada29bf89d
commit 09cf1f5b27
132 changed files with 4503 additions and 2136 deletions

View File

View File

@ -1 +1 @@
wanpipe-3.5.15
wanpipe-3.5.16

View File

@ -8,7 +8,25 @@ Copyright (c) 1995-2010 Sangoma Technologies Inc.
For more info visit: http://wiki.sangoma.com
------------------------------------------------------------------------------
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.14
* Fri Sep 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.16
===================================================================
- Dahdi 2.4 Support
- Fixed BRI B500/B700 hwec enable on call start caused in 3.5.12 release.
- Bug fix in voice+data mixed mode where dchan could get stuck due to
dma overruns.
- Bug fix in tdmapi where excessive memory was allocated on pre-allocation buffers.
- Bug fix tdmapi defaults to 20ms chunk size instead of 10ms
- Bug fix broken support for A101/2 legacy EOL cards.
- New XEN Support
TDM Voice will now work properly on xen virtualized machines
- Fix for 64bit 8gig issues
- New rpmbuld spec files.
rpmbuild -tb wanpipe-3.5.16.tgz
rpmbuild -tb wanpipe-3.5.16.tgz --define 'with_dahdi 1' --define 'dahdi_dir /usr/src/dahdi'
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.15
===================================================================
- Fixed B600 and B601 warning messages introduced in 3.5.14

View File

@ -47,8 +47,8 @@ ifndef KINSTDIR
KINSTDIR=$(KMOD)/kernel
endif
ifndef ARCH
ARCH=$(shell uname -m)
ifndef WARCH
WARCH=$(shell uname -m)
endif
ifndef ASTDIR
ASTDIR=/usr/src/asterisk
@ -109,13 +109,14 @@ PRODUCT_DEFINES+= -DCONFIG_PRODUCT_WANPIPE_AFT_B601 -DCONFIG_PRODUCT_WANPIPE_AFT
EXTRA_CFLAGS += $(EXTRA_FLAGS) $(PRODUCT_DEFINES)
EXTRA_UTIL_FLAGS += $(PRODUCT_DEFINES)
DAHDI_CFLAGS=
#Check if zaptel exists
ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
DAHDI_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
PROTS=DEF-TDM
@ -123,7 +124,7 @@ else
ifneq (,$(wildcard $(ZAPDIR)/kernel/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE -I$(ZAPDIR)/kernel
DHADI_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE -I$(ZAPDIR)/kernel
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
PROTS=DEF-TDM
@ -131,7 +132,7 @@ else
ifneq (,$(wildcard $(ZAPDIR)/include/dahdi/kernel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DDAHDI_ISSUES -DBUILDING_TONEZONE -I$(ZAPDIR)/include -I$(ZAPDIR)/include/dahdi -I$(ZAPDIR)/drivers/dahdi
DAHDI_CFLAGS+= -DSTANDALONE_ZAPATA -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DDAHDI_ISSUES -DBUILDING_TONEZONE -I$(ZAPDIR)/include -I$(ZAPDIR)/include/dahdi -I$(ZAPDIR)/drivers/dahdi
ifneq (,$(wildcard $(ZAPDIR)/drivers/dahdi/Makefile))
ZAP_OPTS= --zaptel-path=$(ZAPDIR)/drivers/dahdi/
endif
@ -165,25 +166,25 @@ else
#within local directory structure
all: cleanup_local _checkzap _checksrc all_bin_kmod all_util
all_src: cleanup_local _checkzap _checksrc all_kmod all_util
all_src_dahdi: cleanup_local _checkzap _checksrc all_kmod_dahdi all_util
all_src: cleanup_local _checksrc all_kmod all_util
all_src_ss7: cleanup_local _checkzap _checksrc all_kmod_ss7 all_util
dahdi: all_src
dahdi: all_src_dahdi
zaptel: all_src
openzap: all_src all_lib
@touch .all_lib .openzap
zaptel: dahdi
freetdm: all_src all_lib
@touch .all_lib .openzap
@touch .all_lib .freetdm
fs: all_src all_lib
@touch .all_lib .openzap
openzap:freetdm
smg: freetdm
fs: freetdm
g3ti: all_src all_lib
@touch .all_lib .openzap
@touch .all_lib .freetdm
openzap_ss7: all_src_ss7 all_lib
@touch .all_lib
@ -193,19 +194,23 @@ tdmapi: all_src all_lib
cleanup_local:
@rm -f .all* 2> /dev/null;
@rm -f .freetdm 2> /dev/null;
#Build only kernel modules
all_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR=$(ZAPDIR_PRIV) ZAPHDLC=$(ZAPHDLC_PRIV) HOMEDIR=$(PWD) modules
all_kmod_dahdi: _checkzap _checksrc _cleanoldwanpipe _check_kver
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(DAHDI_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR=$(ZAPDIR_PRIV) ZAPHDLC=$(ZAPHDLC_PRIV) HOMEDIR=$(PWD) modules
all_kmod: _checksrc _cleanoldwanpipe _check_kver
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR= ZAPHDLC= HOMEDIR=$(PWD) modules
all_kmod_ss7: _checkzap _checksrc _cleanoldwanpipe _check_kver
@if [ -e $(PWD)/ss7_build_dir ]; then \
rm -rf $(PWD)/ss7_build_dir; \
fi
@mkdir -p $(PWD)/ss7_build_dir
./Setup drivers --builddir=$(PWD)/ss7_build_dir --with-linux=$(KDIR) $(ZAP_OPTS) --usr-cc=$(CC) --protocol=AFT_TE1-XMTP2 --no-zaptel-compile --noautostart --arch=$(ARCH) --silent
./Setup drivers --builddir=$(PWD)/ss7_build_dir --with-linux=$(KDIR) $(ZAP_OPTS) --usr-cc=$(CC) --protocol=AFT_TE1-XMTP2 --no-zaptel-compile --noautostart --arch=$(WARCH) --silent
@eval "./patches/copy_modules.sh $(PWD)/ss7_build_dir $(WAN_DIR)"
all_bin_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
@ -213,7 +218,7 @@ all_bin_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
rm -rf $(PWD)/ast_build_dir; \
fi
@mkdir -p $(PWD)/ast_build_dir
./Setup drivers --builddir=$(PWD)/ast_build_dir --with-linux=$(KDIR) $(ZAP_OPTS) --usr-cc=$(CC) --protocol=$(PROTS) --no-zaptel-compile --noautostart --arch=$(ARCH) --silent
./Setup drivers --builddir=$(PWD)/ast_build_dir --with-linux=$(KDIR) $(ZAP_OPTS) --usr-cc=$(CC) --protocol=$(PROTS) --no-zaptel-compile --noautostart --arch=$(WARCH) --silent
@eval "./patches/copy_modules.sh $(PWD)/ast_build_dir $(WAN_DIR)"
@ -223,8 +228,8 @@ clean: cleanup_local clean_util _cleanoldwanpipe
$(MAKE) -C api SUBDIRS=$(WAN_DIR) clean
@find patches/kdrivers -name '.*.cmd' | xargs rm -f
@find . -name 'Module.symver*' | xargs rm -f
@if [ -e .openzap ]; then \
rm -f .openzap; \
@if [ -e .freetdm ]; then \
rm -f .freetdm; \
fi
@ -345,9 +350,9 @@ endif
#Compile utilities only
all_util: install_inc
$(MAKE) -C util all EXTRA_FLAGS="$(EXTRA_UTIL_FLAGS)" SYSINC="$(PWD)/$(WINCLUDE) -I $(PWD)/api/libsangoma/include" CC=$(CC) \
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(ARCH)
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(WARCH)
$(MAKE) -C util all_wancfg EXTRA_FLAGS="$(EXTRA_UTIL_FLAGS)" SYSINC="$(PWD)/$(WINCLUDE) -I$(PWD)/api/libsangoma/include" CC=$(CC) \
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(ARCH)
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(WARCH)
all_lib:
$(shell cd api/libsangoma; ./init-automake.sh >> $(PWD)/.cfg_log; ./configure --prefix=$(LIBPREFIX) >> $(PWD)/.cfg_log;)
@ -379,7 +384,7 @@ install_bri:
install_smgpri:
$(MAKE) -C ssmg/sangoma_pri/ install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) DESTDIR=$(INSTALLPREFIX)
@if [ ! -e .openzap ]; then \
@if [ ! -e .freetdm ]; then \
@echo "Installing Sangoma MGD"; \
$(MAKE) -C ssmg/sangoma_mgd.trunk/ install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PRI=YES DESTDIR=$(INSTALLPREFIX) ; \
fi

957
Setup

File diff suppressed because it is too large Load Diff

View File

@ -4,20 +4,24 @@
# Copyright (c) 1995-2000 Sangoma Technologies Inc. All Rights Reserved.
# ============================================================================
APIINC=/usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
LIB_INSTALL_DIR=/usr
####### RULES ################################################################
all:
make -C tdm_api
make -C legacy
make -C sample_c
make -C sample_cpp
make -C tdm_api WANINCDIR=$(WANINCDIR)
make -C legacy WANINCDIR=$(WANINCDIR)
make -C sample_c WANINCDIR=$(WANINCDIR)
make -C sample_cpp WANINCDIR=$(WANINCDIR)
clean:
make -C tdm_api clean
make -C legacy clean
make -C tdm_api clean
make -C legacy clean
make -C lib/hdlc clean
make -C sample_c clean
make -C sample_cpp clean

View File

@ -4,17 +4,21 @@
# Copyright (c) 1995-2000 Sangoma Technologies Inc. All Rights Reserved.
# ============================================================================
APIINC=/usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
####### RULES ################################################################
all:
make -C x25 all APIINC=$(APIINC)
make -C chdlc all APIINC=$(APIINC)
make -C fr all APIINC=$(APIINC)
make -C bitstrm all APIINC=$(APIINC)
make -C bisync all APIINC=$(APIINC)
make -C aft all APIINC=$(APIINC)
make -C x25 all WANINCDIR=$(WANINCDIR)
make -C chdlc all WANINCDIR=$(WANINCDIR)
make -C fr all WANINCDIR=$(WANINCDIR)
make -C bitstrm all WANINCDIR=$(WANINCDIR)
make -C bisync all WANINCDIR=$(WANINCDIR)
make -C aft all WANINCDIR=$(WANINCDIR)
clean:
make -C x25 clean

View File

@ -10,9 +10,13 @@
OS_TYPE = __LINUX__
DEBUG = 2
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -10,13 +10,18 @@
OS_TYPE = __LINUX__
DEBUG = 2
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
DIR_EC_APILIB=/common/wantools/wanec_apilib
SRC_EC_APILIB=$(DIR_EC_APILIB)/wanec_api.c $(DIR_EC_APILIB)/wanec_api_lib.c
INC_EC_APILIB=-I/usr/include/wanpipe/oct6100_api -I$(DIR_EC_APILIB)
INC_EC_APILIB=-I$(WANINCDIR)/wanpipe/oct6100_api -I$(DIR_EC_APILIB)
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -DCONFIG_PRODUCT_WANPIPE_TDMV_EC -D_GNUC_ -I../lib
CFLAGS += -I/usr/include/wanpipe
CFLAGS += -I$(WANINCDIR)
TARGETS=aft_api
#TARGETS+= aft_api_events

View File

@ -11,10 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = /usr/src/linux/include
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -11,10 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = /usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -11,10 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = ../include
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -11,10 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = /usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I ../lib -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I ../lib -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -11,18 +11,21 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = /usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(WANINCDIR)
####### RULES ################################################################
all: chdlc_api \
chdlc_rts_cts \
chdlc_integrity \
chdlc_modem_cmd \
chdlc_echo
chdlc_rts_cts \
chdlc_integrity \
chdlc_modem_cmd \
chdlc_echo
@echo "Ok."
chdlc_api: chdlc_api.c ../lib/lib_api.c

View File

@ -11,9 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(WANINCDIR)
TARGETS = fr_api
#TARGETS += fr_api_fast

View File

@ -11,23 +11,26 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = /usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
ifneq (,$(wildcard /wanpipe/code/Makefile.in))
include /wanpipe/code/Makefile.in
EXTRA_FLAGS+=$(GLOBAL_CFLAGS)
include /wanpipe/code/Makefile.in
EXTRA_FLAGS+=$(GLOBAL_CFLAGS)
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../ -I../../lib -I$(APIINC) $(EXTRA_FLAGS)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../ -I../../lib -I$(WANINCDIR) $(EXTRA_FLAGS)
####### RULES ################################################################
all: server_v1 \
server_v2 \
svc_client \
pvc_client
svc_client \
pvc_client
@echo "Ok."

View File

@ -11,9 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -11,10 +11,13 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
APIINC = ./
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(WANINCDIR)
####### RULES ################################################################

View File

@ -10,18 +10,22 @@
OS_TYPE = __LINUX__
DEBUG = 2
APIINC = /usr/include/wanpipe
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(APIINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(WANINCDIR)
####### RULES ################################################################
all: server_v1 \
server_v2 \
svc_client \
pvc_client \
hdlc_client
server_v2 \
svc_client \
pvc_client \
hdlc_client
@echo "Ok."
server_v1: server_v1.c

View File

@ -1,7 +1,13 @@
CC=g++
APIINC=../../include
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
CFLAGS=-O -I.. -D_REENTRANT -lpthread
CFLAGS1=-w -c -D_REENTRANT -D_GNUC_ -D__LINUX__ -I$(APIINC)
CFLAGS1=-w -c -D_REENTRANT -D_GNUC_ -D__LINUX__ -I$(APIINC) -I$(WANINCDIR)
server: bitmap.o server.o
$(CC) $(CFLAGS) bitmap.o server.o -o server

View File

@ -4,6 +4,8 @@
*/
#include <wanpipe_hdlc.h>
#include <string.h>
/*===================================================================
PROTOTYPES

View File

@ -8,6 +8,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#if defined(__WINDOWS__)
# define wan_inline __inline

View File

@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 34
/svn/libsangoma/!svn/ver/308/trunk
/svn/libsangoma/!svn/ver/315/trunk
END
init-automake.sh
K 25
@ -19,13 +19,19 @@ Makefile.in
K 25
svn:wc:ra_dav:version-url
V 46
/svn/libsangoma/!svn/ver/298/trunk/Makefile.in
/svn/libsangoma/!svn/ver/311/trunk/Makefile.in
END
libsangoma_config.c
K 25
svn:wc:ra_dav:version-url
V 54
/svn/libsangoma/!svn/ver/314/trunk/libsangoma_config.c
END
sources
K 25
svn:wc:ra_dav:version-url
V 42
/svn/libsangoma/!svn/ver/306/trunk/sources
/svn/libsangoma/!svn/ver/314/trunk/sources
END
AUTHORS
K 25
@ -67,7 +73,7 @@ libsangoma.c
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/308/trunk/libsangoma.c
/svn/libsangoma/!svn/ver/315/trunk/libsangoma.c
END
compile.bat
K 25
@ -85,7 +91,7 @@ libsangoma.h
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/299/trunk/libsangoma.h
/svn/libsangoma/!svn/ver/311/trunk/libsangoma.h
END
libsangoma_hwec.c
K 25
@ -105,18 +111,18 @@ svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/INSTALL
END
build.sh
K 25
svn:wc:ra_dav:version-url
V 43
/svn/libsangoma/!svn/ver/222/trunk/build.sh
END
COPYING
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/COPYING
END
build.sh
K 25
svn:wc:ra_dav:version-url
V 43
/svn/libsangoma/!svn/ver/222/trunk/build.sh
END
NEWS
K 25
svn:wc:ra_dav:version-url
@ -135,29 +141,29 @@ svn:wc:ra_dav:version-url
V 48
/svn/libsangoma/!svn/ver/146/trunk/libsangoma.rc
END
sangoma_pri.c
K 25
svn:wc:ra_dav:version-url
V 48
/svn/libsangoma/!svn/ver/222/trunk/sangoma_pri.c
END
libsangoma.so.conf
K 25
svn:wc:ra_dav:version-url
V 51
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.so.conf
END
sangoma_pri.c
K 25
svn:wc:ra_dav:version-url
V 48
/svn/libsangoma/!svn/ver/222/trunk/sangoma_pri.c
END
libhpsangoma-doxygen.config
K 25
svn:wc:ra_dav:version-url
V 61
/svn/libsangoma/!svn/ver/50/trunk/libhpsangoma-doxygen.config
END
sangoma_pri.h
libhpsangoma.c
K 25
svn:wc:ra_dav:version-url
V 48
/svn/libsangoma/!svn/ver/222/trunk/sangoma_pri.h
V 49
/svn/libsangoma/!svn/ver/222/trunk/libhpsangoma.c
END
version
K 25
@ -165,11 +171,11 @@ svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/version
END
libhpsangoma.c
sangoma_pri.h
K 25
svn:wc:ra_dav:version-url
V 49
/svn/libsangoma/!svn/ver/222/trunk/libhpsangoma.c
V 48
/svn/libsangoma/!svn/ver/222/trunk/sangoma_pri.h
END
configure.in
K 25
@ -211,7 +217,7 @@ Makefile.am
K 25
svn:wc:ra_dav:version-url
V 46
/svn/libsangoma/!svn/ver/298/trunk/Makefile.am
/svn/libsangoma/!svn/ver/311/trunk/Makefile.am
END
missing
K 25
@ -229,7 +235,7 @@ libsangoma-pvt.h
K 25
svn:wc:ra_dav:version-url
V 51
/svn/libsangoma/!svn/ver/276/trunk/libsangoma-pvt.h
/svn/libsangoma/!svn/ver/314/trunk/libsangoma-pvt.h
END
libsangoma_utils.c
K 25
@ -247,5 +253,5 @@ libsangoma.vcproj
K 25
svn:wc:ra_dav:version-url
V 52
/svn/libsangoma/!svn/ver/286/trunk/libsangoma.vcproj
/svn/libsangoma/!svn/ver/314/trunk/libsangoma.vcproj
END

View File

@ -1,15 +1,15 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk
https://www.sangomapbx.com/svn/libsangoma
2010-08-24T18:59:15.202283Z
308
ncorbic
2010-09-28T19:45:37.681925Z
315
dyatsin
has-props
svn:special svn:externals svn:needs-lock
@ -58,12 +58,24 @@ file
2010-08-19T22:39:57.000000Z
a8dfea1c867ff132bf1ce1af2f45286a
2010-08-13T00:22:43.027397Z
298
2010-09-27T20:07:44.000000Z
5ae53af68fd79b1265e8dd17d417a0a1
2010-09-27T18:07:21.223585Z
311
ncorbic
libsangoma_config.c
file
2010-10-01T21:04:29.000000Z
de99c99d999b3c9d39337397856a839f
2010-09-28T19:41:22.543877Z
314
davidr
sample_cpp
dir
@ -73,11 +85,11 @@ file
2010-08-19T22:39:57.000000Z
5cddf7c651ff3b0830cde10dd67f6a99
2010-08-18T18:10:06.530845Z
306
jpatel
2010-10-01T21:04:29.000000Z
84884475da0ed63ae785369108234305
2010-09-28T19:41:22.543877Z
314
davidr
AUTHORS
file
@ -176,11 +188,11 @@ file
2010-08-27T23:02:11.000000Z
75258501ea3f09d08bc9932151e359cd
2010-08-24T18:59:15.202283Z
308
ncorbic
2010-10-01T21:04:29.000000Z
925b6728adb7f183639f050a367dae0f
2010-09-28T19:45:37.681925Z
315
dyatsin
has-props
cleanup.sh
@ -202,10 +214,10 @@ file
2010-08-13T21:40:10.000000Z
71bdfb513775b3a4cf3d0cfeba2bc0a7
2010-08-13T22:34:32.754036Z
299
2010-09-27T20:07:44.000000Z
a411c1867d91f266792ae40429c57416
2010-09-27T18:07:21.223585Z
311
ncorbic
has-props
@ -246,18 +258,6 @@ file
1
root
COPYING
file
2009-08-25T20:44:41.000000Z
d41d8cd98f00b204e9800998ecf8427e
2008-02-28T18:51:53.196120Z
1
root
build.sh
file
@ -271,6 +271,18 @@ f9109b55d1a9940209c4430121564f71
ncorbic
has-props
COPYING
file
2009-08-25T20:44:41.000000Z
d41d8cd98f00b204e9800998ecf8427e
2008-02-28T18:51:53.196120Z
1
root
NEWS
file
@ -307,18 +319,6 @@ file
146
davidr
libsangoma.so.conf
file
2009-08-25T20:44:41.000000Z
bcdcb23c5d5fb460cee2ce315ef7bd32
2008-02-28T18:51:53.196120Z
1
root
sangoma_pri.c
file
@ -332,8 +332,17 @@ file
ncorbic
has-props
sample_c
dir
libsangoma.so.conf
file
2009-08-25T20:44:41.000000Z
bcdcb23c5d5fb460cee2ce315ef7bd32
2008-02-28T18:51:53.196120Z
1
root
libhpsangoma-doxygen.config
file
@ -347,17 +356,21 @@ file
50
ncorbic
version
sample_c
dir
libhpsangoma.c
file
2009-08-25T20:44:41.000000Z
35f672d1fb01b542f667952c9dbb26fe
2008-02-28T18:51:53.196120Z
1
root
f487a2c347c2ff3e6633ea7022b649e3
2009-08-12T18:36:20.606028Z
222
ncorbic
has-props
sangoma_pri.h
file
@ -372,18 +385,17 @@ file
ncorbic
has-props
libhpsangoma.c
version
file
2009-08-25T20:44:41.000000Z
f487a2c347c2ff3e6633ea7022b649e3
2009-08-12T18:36:20.606028Z
222
ncorbic
has-props
35f672d1fb01b542f667952c9dbb26fe
2008-02-28T18:51:53.196120Z
1
root
configure.in
file
@ -477,10 +489,10 @@ file
2010-08-12T23:16:44.000000Z
b703c5ae18162e30d2fb09df9eae7c98
2010-08-13T00:22:43.027397Z
298
2010-09-27T20:07:44.000000Z
1bbbf5b7de6b78b3533af596815351ba
2010-09-27T18:07:21.223585Z
311
ncorbic
libsangoma.def
@ -501,10 +513,10 @@ file
2010-05-18T21:27:49.000000Z
ef10b7962e2dbe7feebcec6c47467ad7
2010-05-06T20:18:08.960008Z
276
2010-10-01T21:04:29.000000Z
40bd58c5c94df8e3af7cb755afda81c5
2010-09-28T19:41:22.543877Z
314
davidr
has-props
@ -542,9 +554,9 @@ file
2010-06-14T16:38:14.000000Z
3550ed370d5194be80c9098929f7dbc1
2010-06-10T21:10:51.668331Z
286
2010-10-01T21:04:29.000000Z
8778a20cc0568f8a01f7015ece63279c
2010-09-28T19:41:22.543877Z
314
davidr

View File

@ -11,7 +11,7 @@ AM_CFLAGS += -Wall -Wwrite-strings -Wunused-variable -Wstrict-prototypes -Wmissi
#ACLOCAL_AMFLAGS = -I m4
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c libhpsangoma_priv.h
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_config.c libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c libhpsangoma_priv.h
if LIBPRI
LIB_SOURCES += sangoma_pri.c sangoma_pri.h

View File

@ -78,12 +78,13 @@ libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libsangoma_la_LIBADD =
am__libsangoma_la_SOURCES_DIST = libsangoma.c libsangoma_utils.c \
libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h \
libhpsangoma_priv.c libhpsangoma_priv.h sangoma_pri.c \
sangoma_pri.h
libsangoma_config.c libsangoma_hwec.c libsangoma.h \
libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c \
libhpsangoma_priv.h sangoma_pri.c sangoma_pri.h
@LIBPRI_TRUE@am__objects_1 = libsangoma_la-sangoma_pri.lo
am__objects_2 = libsangoma_la-libsangoma.lo \
libsangoma_la-libsangoma_utils.lo \
libsangoma_la-libsangoma_config.lo \
libsangoma_la-libsangoma_hwec.lo libsangoma_la-libhpsangoma.lo \
libsangoma_la-libhpsangoma_priv.lo $(am__objects_1)
am_libsangoma_la_OBJECTS = $(am__objects_2)
@ -235,9 +236,9 @@ AM_CFLAGS = -fPIC -Wall -Wstrict-prototypes -Wmissing-prototypes -g \
$(am__append_3)
#ACLOCAL_AMFLAGS = -I m4
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_hwec.c \
libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c \
libhpsangoma_priv.h $(am__append_1)
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_config.c \
libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h \
libhpsangoma_priv.c libhpsangoma_priv.h $(am__append_1)
library_includedir = $(includedir)
library_include_HEADERS = libsangoma.h libhpsangoma.h $(am__append_2)
lib_LTLIBRARIES = libsangoma.la
@ -376,6 +377,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libhpsangoma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libhpsangoma_priv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_config.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_hwec.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_utils.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-sangoma_pri.Plo@am__quote@
@ -415,6 +417,13 @@ libsangoma_la-libsangoma_utils.lo: libsangoma_utils.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma_utils.lo `test -f 'libsangoma_utils.c' || echo '$(srcdir)/'`libsangoma_utils.c
libsangoma_la-libsangoma_config.lo: libsangoma_config.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma_config.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo" -c -o libsangoma_la-libsangoma_config.lo `test -f 'libsangoma_config.c' || echo '$(srcdir)/'`libsangoma_config.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma_config.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libsangoma_config.c' object='libsangoma_la-libsangoma_config.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma_config.lo `test -f 'libsangoma_config.c' || echo '$(srcdir)/'`libsangoma_config.c
libsangoma_la-libsangoma_hwec.lo: libsangoma_hwec.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma_hwec.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo" -c -o libsangoma_la-libsangoma_hwec.lo `test -f 'libsangoma_hwec.c' || echo '$(srcdir)/'`libsangoma_hwec.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo"; exit 1; fi
@ -547,7 +556,7 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-find $(distdir) -type d ! -perm -755 -exec chmod a+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \

View File

@ -3,6 +3,7 @@
* \brief LibSangoma private definitios, this file should not be used by applications nor installed -
*
* Author(s): Moises Silva <moy@sangoma.com>
* David Rokhvarg <davidr@sangoma.com>
*
* Copyright: (c) 2009 Sangoma Technologies
*
@ -123,6 +124,39 @@ typedef struct sangoma_wait_obj
*/
#define DEV_NAME_LEN 100
/**** debugging definitions ****/
static void libsng_dbg(const char * fmt, ...)
{
va_list args;
char buf[1024];
va_start(args, fmt);
_vsnprintf(buf, sizeof(buf), fmt, args);
#if defined(__WINDOWS__)
OutputDebugString(buf);
#else
printf(buf);
#endif
va_end(args);
}
#endif /* _LIBSNAGOMA_H */
extern int libsng_dbg_level;
#define DBG_POLL if(libsng_dbg_level)libsng_dbg
#define DBG_EVNT if(libsng_dbg_level)libsng_dbg
#define DBG_ERR if(libsng_dbg_level)libsng_dbg("Error: %s() line: %d : ", __FUNCTION__, __LINE__);if(libsng_dbg_level)libsng_dbg
#define DBG_INIT if(libsng_dbg_level)libsng_dbg
/**** Prototypes of Function used internally by libsangoma ****/
sng_fd_t sangoma_open_dev_by_name(const char *dev_name);
#if defined(__WINDOWS__)
int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp);
LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue);
LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue);
HKEY registry_open_port_key(hardware_info_t *hardware_info);
int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg);
int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg);
int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf);
#endif
#endif /* _LIBSNAGOMA_PVT_H */

View File

@ -50,29 +50,11 @@
# define WP_ALL_BITS_SET ((uint32_t)-1)
#endif
static void libsng_dbg(const char * fmt, ...)
{
va_list args;
char buf[1024];
va_start(args, fmt);
_vsnprintf(buf, sizeof(buf), fmt, args);
#if defined(__WINDOWS__)
OutputDebugString(buf);
#else
printf(buf);
#endif
va_end(args);
}
int libsng_dbg_level = 0;
/*********************************************************************//**
* WINDOWS Only Section
*************************************************************************/
static int libsng_dbg_level = 0;
#define DBG_POLL if(libsng_dbg_level)libsng_dbg
#define DBG_EVNT if(libsng_dbg_level)libsng_dbg
#define DBG_ERR if(libsng_dbg_level)libsng_dbg("Error: %s() line: %d : ", __FUNCTION__, __LINE__);if(libsng_dbg_level)libsng_dbg
#define DBG_INIT if(libsng_dbg_level)libsng_dbg
#if defined(__WINDOWS__)
#define DBG_REGISTRY if(libsng_dbg_level)libsng_dbg
@ -131,7 +113,7 @@ static u16 handle_device_ioctl_result(int bResult, char *caller_name)
Private Windows Function
*/
static int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
DWORD ln, bIoResult;
unsigned char id = 0;
@ -225,7 +207,7 @@ static UCHAR DoWriteCommand(sng_fd_t fd,
bIoResult = DeviceIoControl(
fd,
IoctlWriteCommand,
IoctlWriteCommandNonBlocking,
(LPVOID)input_data_buffer,
size_of_input_data_buffer,
(LPVOID)output_data_buffer,
@ -465,7 +447,7 @@ static LONG registry_get_string_value(HKEY hkey, LPTSTR szKeyname, OUT LPSTR szV
/*!
\brief Brief description
*/
static LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue)
LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue)
{
DWORD dwSize;
LONG iReturnCode;
@ -484,7 +466,7 @@ static LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szVa
/*!
\brief Convert an integer (iValue) to string and write it to registry
*/
static LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue)
LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue)
{
DWORD dwSize;
char szTemp[TMP_BUFFER_LEN];
@ -507,7 +489,7 @@ static LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValu
* \brief Go through the list of ALL "Sangoma Hardware Abstraction Driver" ports installed on the system.
* Read Bus/Slot/Port information for a port and compare with what is searched for.
*/
static HKEY registry_open_port_key(hardware_info_t *hardware_info)
HKEY registry_open_port_key(hardware_info_t *hardware_info)
{
int i, iRegistryReturnCode;
SP_DEVINFO_DATA deid={sizeof(SP_DEVINFO_DATA)};
@ -662,7 +644,7 @@ static char* timeslot_bitmap_to_string(int bitmap)
return tmp_string;
}
static int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
{
wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;
@ -864,7 +846,7 @@ static int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_
return iReturnCode;
}
static int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
{
wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;
@ -898,7 +880,7 @@ static int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_
return iReturnCode;
}
static int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf)
int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf)
{
char szTemp[TMP_BUFFER_LEN];
int iReturnCode = 0;
@ -1719,7 +1701,7 @@ sng_fd_t _LIBSNG_CALL sangoma_open_api_span_chan(int span, int chan)
return fd;
}
static sng_fd_t sangoma_open_dev_by_name(const char *dev_name)
sng_fd_t sangoma_open_dev_by_name(const char *dev_name)
{
char fname[FNAME_LEN];
@ -2236,6 +2218,31 @@ int _LIBSNG_CALL sangoma_tdm_get_hwec_chan_status(sng_fd_t fd, wanpipe_api_t *td
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
/*========================================================
* Check if hwec persist is enabled or disabled.
* If persist is on: then hwec will always stay enabled for
* all channes.
* If persist is off: hwec will not be enabled by default.
*
* Will return true if HW EC is persist mode is on
*/
int _LIBSNG_CALL sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api)
{
int err;
WANPIPE_API_INIT_CHAN(tdm_api, 0);
SANGOMA_INIT_TDM_API_CMD_RESULT(*tdm_api);
tdm_api->wp_cmd.cmd = WP_API_CMD_GET_HW_EC_PERSIST;
err=sangoma_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return tdm_api->wp_cmd.hw_ec;
}
#endif
/*========================================================
* GET Current User MTU/MRU values in bytes.
@ -3231,253 +3238,13 @@ int _LIBSNG_CALL sangoma_tdm_disable_loop(sng_fd_t fd, wanpipe_api_t *tdm_api)
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
#ifndef LIBSANGOMA_LIGHT
/************************************************************//**
* Device PORT Control Functions
***************************************************************/
static int sangoma_port_mgmnt_ioctl(sng_fd_t fd, port_management_struct_t *port_management)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortManagementCommand,
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortManagementCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_MGMT,port_management);
if (err) {
err = -1;
}
#endif
if(err){
port_management->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
static int sangoma_port_cfg_ioctl(sng_fd_t fd, port_cfg_t *port_cfg)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortConfigurationCommand,
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortConfigurationCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_CONFIG,port_cfg);
if (err) {
err = -1;
}
#endif
if(err){
port_cfg->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
/* open wanpipe configuration device */
sng_fd_t _LIBSNG_CALL sangoma_open_driver_ctrl(int port_no)
{
char tmp_fname[FNAME_LEN];
#if defined(__WINDOWS__)
/* Form the Config Device Name (i.e. wanpipe1, wanpipe2,...). */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_PORT_NAME_FORM, port_no);
#else
/* Form the Config Device Name. ("/dev/wanpipe") */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_CONFIG_DEV_NAME);
#endif
return sangoma_open_dev_by_name(tmp_fname);
}
int _LIBSNG_CALL sangoma_mgmt_cmd(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
int err=0;
#if defined(__WINDOWS__)
if(UdpManagementCommand(fd, wan_udp)){
err = 1;
}
#else
unsigned char id = 0;
wan_udp->wan_udphdr_request_reply = 0x01;
wan_udp->wan_udphdr_id = id;
wan_udp->wan_udphdr_return_code = WAN_UDP_TIMEOUT_CMD;
err=ioctl(fd,WANPIPE_IOCTL_PIPEMON,wan_udp);
if (err < 0) {
err = 1;
}
#endif
if(err){
/* The ioctl failed. */
return err;
}
/* The ioctl was successfull. The caller must check
* value of wan_udp->wan_udphdr_return_code. */
return 0;
}
int _LIBSNG_CALL sangoma_driver_port_start(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = START_PORT_VOLATILE_CONFIG;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_stop(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = STOP_PORT;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
switch(port_mgmnt->operation_status)
{
case SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED:
/* This is not an error, rather a state indication.
* Return SANG_STATUS_SUCCESS, but real return code will be available
* for the caller at port_mgmnt->operation_status. */
err = SANG_STATUS_SUCCESS;
break;
default:
err = port_mgmnt->operation_status;
break;
}
return err;
}
int _LIBSNG_CALL sangoma_driver_get_hw_info(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = GET_HARDWARE_INFO;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_get_version(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->command_code = GET_DRIVER_VERSION;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_set_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = SET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_driver_port_get_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = GET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_write_port_config_on_persistent_storage(hardware_info_t *hardware_info, port_cfg_t *port_cfg, unsigned short port_no)
{
int err = 0;
#if defined(__WINDOWS__)
HKEY hPortRegistryKey = registry_open_port_key(hardware_info);
/* wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;*/
unsigned int ind;
if(hPortRegistryKey == INVALID_HANDLE_VALUE){
return 1;
}
/* write T1/E1/BRI/Analog configuration */
if(registry_write_front_end_cfg(hPortRegistryKey, port_cfg)){
return 2;
}
/* write TDM Voice configuration */
if(registry_write_wan_tdmv_conf(hPortRegistryKey, port_cfg)){
return 3;
}
/* write number of groups */
err = registry_set_integer_value(hPortRegistryKey, "aft_number_of_logic_channels", port_cfg->num_of_ifs);
if(err){
return err;
}
/* write configuration of each group */
for(ind = 0; ind < port_cfg->num_of_ifs; ind++){
registry_write_channel_group_cfg(hPortRegistryKey, port_cfg, ind, port_cfg->if_cfg[ind]);
}
#else
printf("%s(): Warning: function not implemented\n", __FUNCTION__);
err = 1;
#endif
return err;
}
#endif /* #ifndef LIBSANGOMA_LIGHT */
#endif /* WANPIPE_TDM_API */

View File

@ -1215,6 +1215,20 @@ int _LIBSNG_CALL sangoma_tdm_get_hwec_chan_status(sng_fd_t fd, wanpipe_api_t *td
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
/*!
\fn int sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api)
\brief Check if hwec persis mode is on: On persist mode hwec is always enabled.
\param fd device file descriptor
\param tdm_api tdm api command structure
\return non-zero: error, 0: disabled, >0: enabled
This function will check if hw persist mode is enabled.
*/
int _LIBSNG_CALL sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api);
#endif
/*!
\fn int sangoma_span_chan_toif(int span, int chan, char *interface_name)
\brief Convert Span & Chan to interface name

View File

@ -199,6 +199,10 @@
/>
</FileConfiguration>
</File>
<File
RelativePath=".\libsangoma_config.c"
>
</File>
<File
RelativePath=".\libsangoma_hwec.c"
>

View File

@ -0,0 +1,252 @@
#include "libsangoma-pvt.h"
#include "libsangoma.h"
#ifndef LIBSANGOMA_LIGHT
/************************************************************//**
* Device PORT Control Functions
***************************************************************/
int sangoma_port_mgmnt_ioctl(sng_fd_t fd, port_management_struct_t *port_management)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortManagementCommand,
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortManagementCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_MGMT,port_management);
if (err) {
err = -1;
}
#endif
if(err){
port_management->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
int sangoma_port_cfg_ioctl(sng_fd_t fd, port_cfg_t *port_cfg)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortConfigurationCommand,
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortConfigurationCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_CONFIG,port_cfg);
if (err) {
err = -1;
}
#endif
if(err){
port_cfg->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
/* open wanpipe configuration device */
sng_fd_t _LIBSNG_CALL sangoma_open_driver_ctrl(int port_no)
{
char tmp_fname[FNAME_LEN];
#if defined(__WINDOWS__)
/* Form the Config Device Name (i.e. wanpipe1, wanpipe2,...). */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_PORT_NAME_FORM, port_no);
#else
/* Form the Config Device Name. ("/dev/wanpipe") */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_CONFIG_DEV_NAME);
#endif
return sangoma_open_dev_by_name(tmp_fname);
}
int _LIBSNG_CALL sangoma_mgmt_cmd(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
int err=0;
#if defined(__WINDOWS__)
if(UdpManagementCommand(fd, wan_udp)){
err = 1;
}
#else
unsigned char id = 0;
wan_udp->wan_udphdr_request_reply = 0x01;
wan_udp->wan_udphdr_id = id;
wan_udp->wan_udphdr_return_code = WAN_UDP_TIMEOUT_CMD;
err=ioctl(fd,WANPIPE_IOCTL_PIPEMON,wan_udp);
if (err < 0) {
err = 1;
}
#endif
if(err){
/* The ioctl failed. */
return err;
}
/* The ioctl was successfull. The caller must check
* value of wan_udp->wan_udphdr_return_code. */
return 0;
}
int _LIBSNG_CALL sangoma_driver_port_start(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = START_PORT_VOLATILE_CONFIG;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_stop(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = STOP_PORT;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
switch(port_mgmnt->operation_status)
{
case SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED:
/* This is not an error, rather a state indication.
* Return SANG_STATUS_SUCCESS, but real return code will be available
* for the caller at port_mgmnt->operation_status. */
err = SANG_STATUS_SUCCESS;
break;
default:
err = port_mgmnt->operation_status;
break;
}
return err;
}
int _LIBSNG_CALL sangoma_driver_get_hw_info(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = GET_HARDWARE_INFO;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_get_version(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->command_code = GET_DRIVER_VERSION;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_set_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = SET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_driver_port_get_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = GET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_write_port_config_on_persistent_storage(hardware_info_t *hardware_info, port_cfg_t *port_cfg, unsigned short port_no)
{
int err = 0;
#if defined(__WINDOWS__)
HKEY hPortRegistryKey = registry_open_port_key(hardware_info);
/* wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;*/
unsigned int ind;
if(hPortRegistryKey == INVALID_HANDLE_VALUE){
return 1;
}
/* write T1/E1/BRI/Analog configuration */
if(registry_write_front_end_cfg(hPortRegistryKey, port_cfg)){
return 2;
}
/* write TDM Voice configuration */
if(registry_write_wan_tdmv_conf(hPortRegistryKey, port_cfg)){
return 3;
}
/* write number of groups */
err = registry_set_integer_value(hPortRegistryKey, "aft_number_of_logic_channels", port_cfg->num_of_ifs);
if(err){
return err;
}
/* write configuration of each group */
for(ind = 0; ind < port_cfg->num_of_ifs; ind++){
registry_write_channel_group_cfg(hPortRegistryKey, port_cfg, ind, port_cfg->if_cfg[ind]);
}
#else
printf("%s(): Warning: function not implemented\n", __FUNCTION__);
err = 1;
#endif
return err;
}
#endif /* #ifndef LIBSANGOMA_LIGHT */

View File

@ -28,5 +28,5 @@ $(SDK_LIB_PATH)\SetupApi.lib \
$(SDK_LIB_PATH)\Advapi32.lib \
$(SANG_WP_DEVEL)\wanpipe_common\wantools\wanec_apilib\$(O)\waneclib.lib
SOURCES=libsangoma.c libsangoma.rc libsangoma_hwec.c libsangoma_utils.c
SOURCES=libsangoma.c libsangoma.rc libsangoma_hwec.c libsangoma_utils.c libsangoma_config.c

View File

@ -11,7 +11,7 @@ AM_CFLAGS += -Wall -Wwrite-strings -Wunused-variable -Wstrict-prototypes -Wmissi
#ACLOCAL_AMFLAGS = -I m4
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c libhpsangoma_priv.h
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_config.c libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c libhpsangoma_priv.h
if LIBPRI
LIB_SOURCES += sangoma_pri.c sangoma_pri.h

View File

@ -78,12 +78,13 @@ libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libsangoma_la_LIBADD =
am__libsangoma_la_SOURCES_DIST = libsangoma.c libsangoma_utils.c \
libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h \
libhpsangoma_priv.c libhpsangoma_priv.h sangoma_pri.c \
sangoma_pri.h
libsangoma_config.c libsangoma_hwec.c libsangoma.h \
libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c \
libhpsangoma_priv.h sangoma_pri.c sangoma_pri.h
@LIBPRI_TRUE@am__objects_1 = libsangoma_la-sangoma_pri.lo
am__objects_2 = libsangoma_la-libsangoma.lo \
libsangoma_la-libsangoma_utils.lo \
libsangoma_la-libsangoma_config.lo \
libsangoma_la-libsangoma_hwec.lo libsangoma_la-libhpsangoma.lo \
libsangoma_la-libhpsangoma_priv.lo $(am__objects_1)
am_libsangoma_la_OBJECTS = $(am__objects_2)
@ -235,9 +236,9 @@ AM_CFLAGS = -fPIC -Wall -Wstrict-prototypes -Wmissing-prototypes -g \
$(am__append_3)
#ACLOCAL_AMFLAGS = -I m4
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_hwec.c \
libsangoma.h libhpsangoma.c libhpsangoma.h libhpsangoma_priv.c \
libhpsangoma_priv.h $(am__append_1)
LIB_SOURCES = libsangoma.c libsangoma_utils.c libsangoma_config.c \
libsangoma_hwec.c libsangoma.h libhpsangoma.c libhpsangoma.h \
libhpsangoma_priv.c libhpsangoma_priv.h $(am__append_1)
library_includedir = $(includedir)
library_include_HEADERS = libsangoma.h libhpsangoma.h $(am__append_2)
lib_LTLIBRARIES = libsangoma.la
@ -376,6 +377,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libhpsangoma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libhpsangoma_priv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_config.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_hwec.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-libsangoma_utils.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsangoma_la-sangoma_pri.Plo@am__quote@
@ -415,6 +417,13 @@ libsangoma_la-libsangoma_utils.lo: libsangoma_utils.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma_utils.lo `test -f 'libsangoma_utils.c' || echo '$(srcdir)/'`libsangoma_utils.c
libsangoma_la-libsangoma_config.lo: libsangoma_config.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma_config.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo" -c -o libsangoma_la-libsangoma_config.lo `test -f 'libsangoma_config.c' || echo '$(srcdir)/'`libsangoma_config.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma_config.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma_config.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libsangoma_config.c' object='libsangoma_la-libsangoma_config.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma_config.lo `test -f 'libsangoma_config.c' || echo '$(srcdir)/'`libsangoma_config.c
libsangoma_la-libsangoma_hwec.lo: libsangoma_hwec.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma_hwec.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo" -c -o libsangoma_la-libsangoma_hwec.lo `test -f 'libsangoma_hwec.c' || echo '$(srcdir)/'`libsangoma_hwec.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma_hwec.Tpo"; exit 1; fi
@ -547,7 +556,7 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-find $(distdir) -type d ! -perm -755 -exec chmod a+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/docs
https://www.sangomapbx.com/svn/libsangoma

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/docs/doxygen
https://www.sangomapbx.com/svn/libsangoma

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/examples
https://www.sangomapbx.com/svn/libsangoma

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/examples/hptdm_api
https://www.sangomapbx.com/svn/libsangoma
@ -84,7 +84,7 @@ file
2009-08-25T20:44:41.000000Z
2010-09-13T22:45:16.000000Z
1432ab687de350b6a988bdbc553bdbe7
2008-09-17T21:25:40.156211Z
22

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/examples/hptdm_api/docs
https://www.sangomapbx.com/svn/libsangoma

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/examples/hptdm_api/docs/doxygen
https://www.sangomapbx.com/svn/libsangoma

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/examples/priserver
https://www.sangomapbx.com/svn/libsangoma
@ -69,7 +69,7 @@ file
2009-08-25T20:44:41.000000Z
2010-09-13T22:45:16.000000Z
5afcd0bf7821144218b895150a7951bd
2009-06-17T15:37:24.869927Z
182

View File

@ -3,6 +3,7 @@
* \brief LibSangoma private definitios, this file should not be used by applications nor installed -
*
* Author(s): Moises Silva <moy@sangoma.com>
* David Rokhvarg <davidr@sangoma.com>
*
* Copyright: (c) 2009 Sangoma Technologies
*
@ -123,6 +124,39 @@ typedef struct sangoma_wait_obj
*/
#define DEV_NAME_LEN 100
/**** debugging definitions ****/
static void libsng_dbg(const char * fmt, ...)
{
va_list args;
char buf[1024];
va_start(args, fmt);
_vsnprintf(buf, sizeof(buf), fmt, args);
#if defined(__WINDOWS__)
OutputDebugString(buf);
#else
printf(buf);
#endif
va_end(args);
}
#endif /* _LIBSNAGOMA_H */
extern int libsng_dbg_level;
#define DBG_POLL if(libsng_dbg_level)libsng_dbg
#define DBG_EVNT if(libsng_dbg_level)libsng_dbg
#define DBG_ERR if(libsng_dbg_level)libsng_dbg("Error: %s() line: %d : ", __FUNCTION__, __LINE__);if(libsng_dbg_level)libsng_dbg
#define DBG_INIT if(libsng_dbg_level)libsng_dbg
/**** Prototypes of Function used internally by libsangoma ****/
sng_fd_t sangoma_open_dev_by_name(const char *dev_name);
#if defined(__WINDOWS__)
int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp);
LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue);
LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue);
HKEY registry_open_port_key(hardware_info_t *hardware_info);
int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg);
int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg);
int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf);
#endif
#endif /* _LIBSNAGOMA_PVT_H */

View File

@ -50,29 +50,11 @@
# define WP_ALL_BITS_SET ((uint32_t)-1)
#endif
static void libsng_dbg(const char * fmt, ...)
{
va_list args;
char buf[1024];
va_start(args, fmt);
_vsnprintf(buf, sizeof(buf), fmt, args);
#if defined(__WINDOWS__)
OutputDebugString(buf);
#else
printf(buf);
#endif
va_end(args);
}
int libsng_dbg_level = 0;
/*********************************************************************//**
* WINDOWS Only Section
*************************************************************************/
static int libsng_dbg_level = 0;
#define DBG_POLL if(libsng_dbg_level)libsng_dbg
#define DBG_EVNT if(libsng_dbg_level)libsng_dbg
#define DBG_ERR if(libsng_dbg_level)libsng_dbg("Error: %s() line: %d : ", __FUNCTION__, __LINE__);if(libsng_dbg_level)libsng_dbg
#define DBG_INIT if(libsng_dbg_level)libsng_dbg
#if defined(__WINDOWS__)
#define DBG_REGISTRY if(libsng_dbg_level)libsng_dbg
@ -131,7 +113,7 @@ static u16 handle_device_ioctl_result(int bResult, char *caller_name)
Private Windows Function
*/
static int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
int UdpManagementCommand(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
DWORD ln, bIoResult;
unsigned char id = 0;
@ -225,7 +207,7 @@ static UCHAR DoWriteCommand(sng_fd_t fd,
bIoResult = DeviceIoControl(
fd,
IoctlWriteCommand,
IoctlWriteCommandNonBlocking,
(LPVOID)input_data_buffer,
size_of_input_data_buffer,
(LPVOID)output_data_buffer,
@ -465,7 +447,7 @@ static LONG registry_get_string_value(HKEY hkey, LPTSTR szKeyname, OUT LPSTR szV
/*!
\brief Brief description
*/
static LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue)
LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szValue)
{
DWORD dwSize;
LONG iReturnCode;
@ -484,7 +466,7 @@ static LONG registry_set_string_value(HKEY hkey, LPTSTR szKeyname, IN LPSTR szVa
/*!
\brief Convert an integer (iValue) to string and write it to registry
*/
static LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue)
LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValue)
{
DWORD dwSize;
char szTemp[TMP_BUFFER_LEN];
@ -507,7 +489,7 @@ static LONG registry_set_integer_value(HKEY hkey, LPTSTR szKeyname, IN int iValu
* \brief Go through the list of ALL "Sangoma Hardware Abstraction Driver" ports installed on the system.
* Read Bus/Slot/Port information for a port and compare with what is searched for.
*/
static HKEY registry_open_port_key(hardware_info_t *hardware_info)
HKEY registry_open_port_key(hardware_info_t *hardware_info)
{
int i, iRegistryReturnCode;
SP_DEVINFO_DATA deid={sizeof(SP_DEVINFO_DATA)};
@ -662,7 +644,7 @@ static char* timeslot_bitmap_to_string(int bitmap)
return tmp_string;
}
static int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
{
wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;
@ -864,7 +846,7 @@ static int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_
return iReturnCode;
}
static int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
{
wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;
@ -898,7 +880,7 @@ static int registry_write_wan_tdmv_conf(HKEY hPortRegistryKey, port_cfg_t *port_
return iReturnCode;
}
static int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf)
int registry_write_channel_group_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg, int interface_index, wanif_conf_t wanif_conf)
{
char szTemp[TMP_BUFFER_LEN];
int iReturnCode = 0;
@ -1719,7 +1701,7 @@ sng_fd_t _LIBSNG_CALL sangoma_open_api_span_chan(int span, int chan)
return fd;
}
static sng_fd_t sangoma_open_dev_by_name(const char *dev_name)
sng_fd_t sangoma_open_dev_by_name(const char *dev_name)
{
char fname[FNAME_LEN];
@ -2236,6 +2218,31 @@ int _LIBSNG_CALL sangoma_tdm_get_hwec_chan_status(sng_fd_t fd, wanpipe_api_t *td
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
/*========================================================
* Check if hwec persist is enabled or disabled.
* If persist is on: then hwec will always stay enabled for
* all channes.
* If persist is off: hwec will not be enabled by default.
*
* Will return true if HW EC is persist mode is on
*/
int _LIBSNG_CALL sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api)
{
int err;
WANPIPE_API_INIT_CHAN(tdm_api, 0);
SANGOMA_INIT_TDM_API_CMD_RESULT(*tdm_api);
tdm_api->wp_cmd.cmd = WP_API_CMD_GET_HW_EC_PERSIST;
err=sangoma_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return tdm_api->wp_cmd.hw_ec;
}
#endif
/*========================================================
* GET Current User MTU/MRU values in bytes.
@ -3231,253 +3238,13 @@ int _LIBSNG_CALL sangoma_tdm_disable_loop(sng_fd_t fd, wanpipe_api_t *tdm_api)
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
#ifndef LIBSANGOMA_LIGHT
/************************************************************//**
* Device PORT Control Functions
***************************************************************/
static int sangoma_port_mgmnt_ioctl(sng_fd_t fd, port_management_struct_t *port_management)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortManagementCommand,
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortManagementCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_MGMT,port_management);
if (err) {
err = -1;
}
#endif
if(err){
port_management->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
static int sangoma_port_cfg_ioctl(sng_fd_t fd, port_cfg_t *port_cfg)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortConfigurationCommand,
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortConfigurationCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_CONFIG,port_cfg);
if (err) {
err = -1;
}
#endif
if(err){
port_cfg->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
/* open wanpipe configuration device */
sng_fd_t _LIBSNG_CALL sangoma_open_driver_ctrl(int port_no)
{
char tmp_fname[FNAME_LEN];
#if defined(__WINDOWS__)
/* Form the Config Device Name (i.e. wanpipe1, wanpipe2,...). */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_PORT_NAME_FORM, port_no);
#else
/* Form the Config Device Name. ("/dev/wanpipe") */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_CONFIG_DEV_NAME);
#endif
return sangoma_open_dev_by_name(tmp_fname);
}
int _LIBSNG_CALL sangoma_mgmt_cmd(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
int err=0;
#if defined(__WINDOWS__)
if(UdpManagementCommand(fd, wan_udp)){
err = 1;
}
#else
unsigned char id = 0;
wan_udp->wan_udphdr_request_reply = 0x01;
wan_udp->wan_udphdr_id = id;
wan_udp->wan_udphdr_return_code = WAN_UDP_TIMEOUT_CMD;
err=ioctl(fd,WANPIPE_IOCTL_PIPEMON,wan_udp);
if (err < 0) {
err = 1;
}
#endif
if(err){
/* The ioctl failed. */
return err;
}
/* The ioctl was successfull. The caller must check
* value of wan_udp->wan_udphdr_return_code. */
return 0;
}
int _LIBSNG_CALL sangoma_driver_port_start(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = START_PORT_VOLATILE_CONFIG;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_stop(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = STOP_PORT;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
switch(port_mgmnt->operation_status)
{
case SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED:
/* This is not an error, rather a state indication.
* Return SANG_STATUS_SUCCESS, but real return code will be available
* for the caller at port_mgmnt->operation_status. */
err = SANG_STATUS_SUCCESS;
break;
default:
err = port_mgmnt->operation_status;
break;
}
return err;
}
int _LIBSNG_CALL sangoma_driver_get_hw_info(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = GET_HARDWARE_INFO;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_get_version(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->command_code = GET_DRIVER_VERSION;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_set_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = SET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_driver_port_get_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = GET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_write_port_config_on_persistent_storage(hardware_info_t *hardware_info, port_cfg_t *port_cfg, unsigned short port_no)
{
int err = 0;
#if defined(__WINDOWS__)
HKEY hPortRegistryKey = registry_open_port_key(hardware_info);
/* wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;*/
unsigned int ind;
if(hPortRegistryKey == INVALID_HANDLE_VALUE){
return 1;
}
/* write T1/E1/BRI/Analog configuration */
if(registry_write_front_end_cfg(hPortRegistryKey, port_cfg)){
return 2;
}
/* write TDM Voice configuration */
if(registry_write_wan_tdmv_conf(hPortRegistryKey, port_cfg)){
return 3;
}
/* write number of groups */
err = registry_set_integer_value(hPortRegistryKey, "aft_number_of_logic_channels", port_cfg->num_of_ifs);
if(err){
return err;
}
/* write configuration of each group */
for(ind = 0; ind < port_cfg->num_of_ifs; ind++){
registry_write_channel_group_cfg(hPortRegistryKey, port_cfg, ind, port_cfg->if_cfg[ind]);
}
#else
printf("%s(): Warning: function not implemented\n", __FUNCTION__);
err = 1;
#endif
return err;
}
#endif /* #ifndef LIBSANGOMA_LIGHT */
#endif /* WANPIPE_TDM_API */

View File

@ -1215,6 +1215,20 @@ int _LIBSNG_CALL sangoma_tdm_get_hwec_chan_status(sng_fd_t fd, wanpipe_api_t *td
#endif
#ifdef WP_API_FEATURE_HWEC_PERSIST
/*!
\fn int sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api)
\brief Check if hwec persis mode is on: On persist mode hwec is always enabled.
\param fd device file descriptor
\param tdm_api tdm api command structure
\return non-zero: error, 0: disabled, >0: enabled
This function will check if hw persist mode is enabled.
*/
int _LIBSNG_CALL sangoma_tdm_get_hwec_persist_status(sng_fd_t fd, wanpipe_api_t *tdm_api);
#endif
/*!
\fn int sangoma_span_chan_toif(int span, int chan, char *interface_name)
\brief Convert Span & Chan to interface name

View File

@ -199,6 +199,10 @@
/>
</FileConfiguration>
</File>
<File
RelativePath=".\libsangoma_config.c"
>
</File>
<File
RelativePath=".\libsangoma_hwec.c"
>

View File

@ -0,0 +1,252 @@
#include "libsangoma-pvt.h"
#include "libsangoma.h"
#ifndef LIBSANGOMA_LIGHT
/************************************************************//**
* Device PORT Control Functions
***************************************************************/
int sangoma_port_mgmnt_ioctl(sng_fd_t fd, port_management_struct_t *port_management)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortManagementCommand,
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPVOID)port_management,
sizeof(port_management_struct_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortManagementCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_MGMT,port_management);
if (err) {
err = -1;
}
#endif
if(err){
port_management->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
int sangoma_port_cfg_ioctl(sng_fd_t fd, port_cfg_t *port_cfg)
{
int err = 0;
#if defined(__WINDOWS__)
DWORD ln;
if(DeviceIoControl(
fd,
IoctlPortConfigurationCommand,
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPVOID)port_cfg,
sizeof(port_cfg_t),
(LPDWORD)(&ln),
(LPOVERLAPPED)NULL
) == FALSE){
/* Call OS specific code to find cause of the error and check messages log. */
DBG_ERR("%s():Error: IoctlPortConfigurationCommand failed!!\n", __FUNCTION__);
err = -1;
}
#else
err=ioctl(fd,WANPIPE_IOCTL_PORT_CONFIG,port_cfg);
if (err) {
err = -1;
}
#endif
if(err){
port_cfg->operation_status = SANG_STATUS_INVALID_DEVICE;
}
return err;
}
/* open wanpipe configuration device */
sng_fd_t _LIBSNG_CALL sangoma_open_driver_ctrl(int port_no)
{
char tmp_fname[FNAME_LEN];
#if defined(__WINDOWS__)
/* Form the Config Device Name (i.e. wanpipe1, wanpipe2,...). */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_PORT_NAME_FORM, port_no);
#else
/* Form the Config Device Name. ("/dev/wanpipe") */
_snprintf(tmp_fname, DEV_NAME_LEN, WP_CONFIG_DEV_NAME);
#endif
return sangoma_open_dev_by_name(tmp_fname);
}
int _LIBSNG_CALL sangoma_mgmt_cmd(sng_fd_t fd, wan_udp_hdr_t* wan_udp)
{
int err=0;
#if defined(__WINDOWS__)
if(UdpManagementCommand(fd, wan_udp)){
err = 1;
}
#else
unsigned char id = 0;
wan_udp->wan_udphdr_request_reply = 0x01;
wan_udp->wan_udphdr_id = id;
wan_udp->wan_udphdr_return_code = WAN_UDP_TIMEOUT_CMD;
err=ioctl(fd,WANPIPE_IOCTL_PIPEMON,wan_udp);
if (err < 0) {
err = 1;
}
#endif
if(err){
/* The ioctl failed. */
return err;
}
/* The ioctl was successfull. The caller must check
* value of wan_udp->wan_udphdr_return_code. */
return 0;
}
int _LIBSNG_CALL sangoma_driver_port_start(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = START_PORT_VOLATILE_CONFIG;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_stop(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = STOP_PORT;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
/* ioctl failed */
return err;
}
switch(port_mgmnt->operation_status)
{
case SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED:
/* This is not an error, rather a state indication.
* Return SANG_STATUS_SUCCESS, but real return code will be available
* for the caller at port_mgmnt->operation_status. */
err = SANG_STATUS_SUCCESS;
break;
default:
err = port_mgmnt->operation_status;
break;
}
return err;
}
int _LIBSNG_CALL sangoma_driver_get_hw_info(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->operation_status = SANG_STATUS_GENERAL_ERROR;
port_mgmnt->command_code = GET_HARDWARE_INFO;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_get_version(sng_fd_t fd, port_management_struct_t *port_mgmnt, unsigned short port_no)
{
int err;
port_mgmnt->command_code = GET_DRIVER_VERSION;
port_mgmnt->port_no = port_no;
err = sangoma_port_mgmnt_ioctl(fd, port_mgmnt);
if (err) {
return err;
}
return port_mgmnt->operation_status;
}
int _LIBSNG_CALL sangoma_driver_port_set_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = SET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_driver_port_get_config(sng_fd_t fd, port_cfg_t *port_cfg, unsigned short port_no)
{
port_cfg->operation_status = SANG_STATUS_GENERAL_ERROR;
port_cfg->command_code = GET_PORT_VOLATILE_CONFIG;
port_cfg->port_no = port_no;
return sangoma_port_cfg_ioctl(fd, port_cfg);
}
int _LIBSNG_CALL sangoma_write_port_config_on_persistent_storage(hardware_info_t *hardware_info, port_cfg_t *port_cfg, unsigned short port_no)
{
int err = 0;
#if defined(__WINDOWS__)
HKEY hPortRegistryKey = registry_open_port_key(hardware_info);
/* wandev_conf_t *wandev_conf = &port_cfg->wandev_conf;
sdla_fe_cfg_t *sdla_fe_cfg = &wandev_conf->fe_cfg;*/
unsigned int ind;
if(hPortRegistryKey == INVALID_HANDLE_VALUE){
return 1;
}
/* write T1/E1/BRI/Analog configuration */
if(registry_write_front_end_cfg(hPortRegistryKey, port_cfg)){
return 2;
}
/* write TDM Voice configuration */
if(registry_write_wan_tdmv_conf(hPortRegistryKey, port_cfg)){
return 3;
}
/* write number of groups */
err = registry_set_integer_value(hPortRegistryKey, "aft_number_of_logic_channels", port_cfg->num_of_ifs);
if(err){
return err;
}
/* write configuration of each group */
for(ind = 0; ind < port_cfg->num_of_ifs; ind++){
registry_write_channel_group_cfg(hPortRegistryKey, port_cfg, ind, port_cfg->if_cfg[ind]);
}
#else
printf("%s(): Warning: function not implemented\n", __FUNCTION__);
err = 1;
#endif
return err;
}
#endif /* #ifndef LIBSANGOMA_LIGHT */

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/sample_c
https://www.sangomapbx.com/svn/libsangoma
@ -92,7 +92,7 @@ file
2009-08-25T20:44:41.000000Z
2010-09-13T22:45:16.000000Z
ba64d71a9d128b0eb31f6663ae763a68
2009-04-08T00:23:42.359135Z
141

View File

@ -1,7 +1,7 @@
8
dir
308
315
https://www.sangomapbx.com/svn/libsangoma/trunk/sample_cpp
https://www.sangomapbx.com/svn/libsangoma
@ -38,18 +38,6 @@ f3310f38d215e71ef19ee59d33c0c458
278
davidr
sources
file
2010-06-17T04:11:26.000000Z
1b8b6c522d904f33d986cb1c667d37e6
2010-06-16T16:45:22.358768Z
291
davidr
sample.vcproj
file
@ -63,6 +51,18 @@ file
davidr
has-props
sources
file
2010-06-17T04:11:26.000000Z
1b8b6c522d904f33d986cb1c667d37e6
2010-06-16T16:45:22.358768Z
291
davidr
sangoma_interface.cpp
file
@ -201,7 +201,7 @@ file
2009-08-25T20:44:41.000000Z
2010-09-13T22:45:16.000000Z
93f1e9c6d533615e6b2dfc7aba2fd0a2
2009-02-27T23:27:29.300080Z
105

View File

@ -28,5 +28,5 @@ $(SDK_LIB_PATH)\SetupApi.lib \
$(SDK_LIB_PATH)\Advapi32.lib \
$(SANG_WP_DEVEL)\wanpipe_common\wantools\wanec_apilib\$(O)\waneclib.lib
SOURCES=libsangoma.c libsangoma.rc libsangoma_hwec.c libsangoma_utils.c
SOURCES=libsangoma.c libsangoma.rc libsangoma_hwec.c libsangoma_utils.c libsangoma_config.c

View File

@ -1,6 +1,6 @@
WLINC=../../patches/kdrivers/include
WINC=/usr/include/wanpipe
WINC=$(DESTDIR)/usr/include/wanpipe
AM_CFLAGS = -fPIC -Wall -Wstrict-prototypes -Wmissing-prototypes -g -I$(WLINC) -I$(WINC) -I. \
-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -O2 -D_DEBUG_=2 -D_GNUC_ -I../lib -Istel_tone

View File

@ -10,12 +10,13 @@
OS_TYPE = __LINUX__
DEBUG = 2
SYSINC=/usr/include/wanpipe
VPATH = $(SYSINC)
# Wanpipe Include Directory ( can be changed using --builddir= on ./Setup or make WANINCDIR= )
ifndef WANINCDIR
WANINCDIR=/usr/include/wanpipe
endif
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -I$(SYSINC) -DWANPIPE_TDM_API -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib/hdlc -I../lib
#CFLAGS = -I$(SYSINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -I$(WANINCDIR) -DWANPIPE_TDM_API -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib/hdlc -I../lib
TARGETS = aft_tdm_voice_api
TARGETS += aft_tdm_voice_api_switch

View File

@ -274,7 +274,7 @@ void process_con_rx(void)
&Rx_data[sizeof(wp_tdm_api_rx_hdr_t)],
sizeof(Rx_data), 0);
//printf("RX DATA HDLC: Len=%i\n",err-sizeof(wp_api_hdr_t));
// printf("RX DATA HDLC: Len=%i err=%i\n",err-sizeof(wp_api_hdr_t),err);
//print_packet(&Rx_data[sizeof(wp_api_hdr_t)],err-sizeof(wp_api_hdr_t));
/* err indicates bytes received */
if(err > 0) {

View File

@ -1,39 +1,58 @@
#! /bin/sh
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
# quoting from the policy:
# Any necessary prompting should almost always be confined to the
# post-installation script, and should be protected with a conditional
# so that unnecessary prompting doesn't happen if a package's
# installation fails and the `postinst' is called with `abort-upgrade',
# `abort-remove' or `abort-deconfigure'.
install_init()
{
#Examine system bootstrap files.
if [ -d /etc/rc0.d ]
then RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]
then RC_DIR=/etc/rc.d
else return 0
fi
PROD=wanrouter
START_SCRIPT=S20wanrouter
STOP_SCRIPT=K10wanrouter
START_SCRIPT=20
STOP_SCRIPT=10
PROD_INIT=/usr/sbin/wanrouter
# Install start scripts.
[ -d $RC_DIR/rc2.d ] && ln -sf $PROD_INIT $RC_DIR/rc2.d/$START_SCRIPT
[ -d $RC_DIR/rc3.d ] && ln -sf $PROD_INIT $RC_DIR/rc3.d/$START_SCRIPT
[ -d $RC_DIR/rc5.d ] && ln -sf $PROD_INIT $RC_DIR/rc4.d/$START_SCRIPT
[ -d $RC_DIR/rc5.d ] && ln -sf $PROD_INIT $RC_DIR/rc5.d/$START_SCRIPT
# Install stop scripts.
[ -d $RC_DIR/rc0.d ] && ln -sf $PROD_INIT $RC_DIR/rc0.d/$STOP_SCRIPT
[ -d $RC_DIR/rc1.d ] && ln -sf $PROD_INIT $RC_DIR/rc1.d/$STOP_SCRIPT
[ -d $RC_DIR/rc6.d ] && ln -sf $PROD_INIT $RC_DIR/rc6.d/$STOP_SCRIPT
[ -d $RC_DIR/init.d ] && ln -sf $PROD_INIT $RC_DIR/init.d/$PROD
# Examine system bootstrap files.
if [ -d /etc/rc0.d ]; then
RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]; then
RC_DIR=/etc/rc.d
else
return 0
fi
# Create Symbolic Link to Wanrouter binary
if [ ! -f "/etc/init.d/wanrouter" ]; then
ln -sf $PROD_INIT $RC_DIR/init.d/wanrouter
echo "Created SymLink of $PROD_INIT to $RC_DIR/init.d/wanrouter"
echo
fi
# Install start/stop scripts.
update-rc.d wanrouter defaults $START_SCRIPT $STOP_SCRIPT
return 0
}
if [ -d "/usr/local/wanrouter" ]; then
cat <<EOM
case "$1" in
configure)
if [ -d "/usr/local/wanrouter" ]; then
cat <<EOM
*** Previous installation of Wanpipe detected.
Please use /usr/sbin/wancfg instead of /usr/local/wanrouter/wancfg
@ -42,11 +61,11 @@ if [ -d "/usr/local/wanrouter" ]; then
and /etc/wanpipe/interfaces directories.
EOM
else
echo 'no old wanpipe detected' > /dev/null
fi
else
echo 'no old wanpipe detected' > /dev/null
fi
cat <<EOM
cat <<EOM
*** Sangoma Wanpipe was successfully installed.
Run wancfg command to configure wanpipe.
@ -62,21 +81,35 @@ cat <<EOM
EOM
install_init;
install_init;
#check dependancies for the new modules
eval "depmod -a > /dev/null 2> /dev/null &"
echo
# check dependancies for the new modules
echo "Executing depmod to check dependancies and new kernel modules"
eval "depmod -a > /dev/null 2>&1"
echo
eval "modprobe wanrouter"
if [ $? -eq 0 ]; then
modprobe -r wanrouter 2>> /dev/null
else
echo "Failed to load wanpipe modules!"
echo
echo "Make sure you are installing correct RPMS for your system!"
echo
echo "Otherwise call Sangoma Tech Support"
fi
eval "modprobe wanrouter"
if [ $? -eq 0 ]; then
eval "modprobe -r wanrouter"
if [ $? -eq 0 ]; then
echo "Module loaded/unloaded to test"
fi
else
echo "Failed to load wanpipe modules!"
echo
echo "Make sure you are installing correct DEBS for your system!"
echo
echo "Otherwise call Sangoma Tech Support"
fi
;;
exit 0;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0

View File

@ -1,7 +1,8 @@
#!/bin/sh
set -e
# prerm for Wanpipe
echo "Uninstalling WANPIPE..."
# ----------------------------------------------------------------------------
@ -9,35 +10,39 @@ echo "Uninstalling WANPIPE..."
# ----------------------------------------------------------------------------
remove_init()
{
# Examine system bootstrap files.
if [ -d /etc/rc0.d ]
then RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]
then RC_DIR=/etc/rc.d
else return 0
fi
# Examine system bootstrap files.
if [ -d /etc/rc0.d ]; then
RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]; then
RC_DIR=/etc/rc.d
else
return 0
fi
PROD=wanrouter
START_SCRIPT=S20wanrouter
STOP_SCRIPT=K10wanrouter
PROD_INIT=/usr/sbin/wanrouter
PROD_INIT=$RC_DIR/init.d/$PROD
echo "Removing WANPIPE start-up scripts: $RC_DIR"
rm -f $RC_DIR/rc2.d/$START_SCRIPT
rm -f $RC_DIR/rc3.d/$START_SCRIPT
rm -f $RC_DIR/rc4.d/$START_SCRIPT
rm -f $RC_DIR/rc5.d/$START_SCRIPT
update-rc.d -f wanrouter remove
rm -f $PROD_INIT
rm -f $RC_DIR/rc0.d/$STOP_SCRIPT
rm -f $RC_DIR/rc1.d/$STOP_SCRIPT
rm -f $RC_DIR/rc6.d/$STOP_SCRIPT
rm -f $RC_DIR/init.d/$PROD
return 0
return 0
}
#remove start-on-boot scripts
remove_init;
case "$1" in
remove|deconfigure)
# remove start-on-boot scripts
remove_init;
;;
upgrade)
echo "Nothing to Remove, wanpipe install script understand this"
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 0
;;
esac
exit 0

View File

@ -1,5 +1,5 @@
Package: wanpipe
Version: 3.5.15-0
Version: 3.5.16-0
Section: networking
Priority: optional
Architecture: all
@ -13,5 +13,16 @@ Maintainer: Nenad Corbic [ncorbic@sangoma.com]
Conflicts:
Replaces:
Provides: wanpipe
Description: WANPIPE S-series is a family of intelligent multi-protocol WAN adapters that support data transfer rates up to 4Mbps. All WAN protocols supported by WANPIPE are implemented in firmware and run on the card. An advantage of an intelligent adapter is that it offloads the system CPU and improves stability. By adding a Sangoma WAN component to the Linux kernel, one can create a powerful multi-T1 router/firewall with proven reliability of Linux. Sangoma S-series cards support an optional on board CSU/DSU that eliminates all external components of a traditional routing solution. The T1 line can be directly connected to the card. WANPIPE supports the following protocols, Frame Relay, X25(API), PPP, MULTILINK PPP and CHDLC. Furthermore, WANPIPE supports custom API development such as: Credit card verification, Voice-over IP, Satellite Comm. All device drivers are part of the standard Linux Kernel distribution.
Description: WANPIPE Voice/WAN Routing/API solution
WANPIPE S-series is a family of intelligent multi-protocol WAN adapters that
support data transfer rates up to 4Mbps. All WAN protocols supported by WANPIPE
are implemented in firmware and run on the card. An advantage of an intelligent
adapter is that it offloads the system CPU and improves stability. By adding a
Sangoma WAN component to the Linux kernel, one can create a powerful multi-T1
router/firewall with proven reliability of Linux. Sangoma S-series cards support
an optional on board CSU/DSU that eliminates all external components of a traditional
routing solution. The T1 line can be directly connected to the card. WANPIPE supports
the following protocols, Frame Relay, X25(API), PPP, MULTILINK PPP and CHDLC.
Furthermore, WANPIPE supports custom API development such as: Credit card verification,
Voice-over IP, Satellite Comm. All device drivers are part of the standard
Linux Kernel distribution.

View File

@ -36,6 +36,12 @@
#define A500_MAX_EC_CHANS 64
#define WP_ZAPTEL_ENABLED 0
#define WP_ZAPTEL_DCHAN_OPTIMIZATION 1
#define WP_TDM_CHAN_API_ENABLED 0
#define WP_TDM_SPAN_API_ENABLED 1
#define WP_TDM_API_DCHAN_OPTIMIZATION 2
/* Trigger on Number of transactions

View File

@ -73,7 +73,7 @@ int aft_tdm_ring_rsync(sdla_t *card);
int aft_core_send_serial_oob_msg (sdla_t *card);
int wan_user_process_udp_mgmt_pkt(void* card_ptr, void* chan_ptr, void *udata);
int aft_check_and_disable_dchan_optimization(sdla_t *card, private_area_t *chan, char *usedby);
/*=================================================================
* Used for debugging only

View File

@ -656,12 +656,16 @@ typedef struct
sdla_mem_handle_t bar_virt;
unsigned char tdm_rx_dma_toggle[32];
unsigned char tdm_tx_dma_toggle[32];
wan_dma_descr_t *tdm_tx_dma[32];
wan_dma_descr_t *tdm_rx_dma[32];
unsigned int tdm_logic_ch_map;
wan_ticks_t sec_chk_cnt;
wan_skb_queue_t rtp_tap_list;
unsigned int serial_status;
unsigned char global_tdm_irq;
unsigned int tdm_api_cfg;
unsigned int tdm_api_dchan_cfg;
} sdla_xilinx_t;

View File

@ -91,6 +91,7 @@ typedef int sng_fd_t;
#endif
#define WP_API_FEATURE_DRIVER_GAIN 1
#define WP_API_FEATURE_FE_RW 1
#define WP_API_FEATURE_HWEC_PERSIST 1
/*!
\enum WANPIPE_IOCTL_CODE
@ -274,6 +275,7 @@ enum wanpipe_api_cmds
WP_API_CMD_DISABLE_LOOP, /*!< Disable remote loop */
WP_API_CMD_BUFFER_MULTIPLIER, /*!< Set Buffer Multiplier - for SPAN voice mode only */
WP_API_CMD_GET_HW_EC_CHAN, /*!< Get status of hwec for the current timeslot */
WP_API_CMD_GET_HW_EC_PERSIST, /*!< Check if hwec persist mode is on or off */
/* Add only debugging commands here */
WP_API_CMD_GEN_FIFO_ERR_TX=500,

View File

@ -80,6 +80,10 @@
# define WAN_SK_SLEEP(sk) sk->sk_sleep
#endif
#ifndef DMA_BIT_MASK
#define DMA_BIT_MASK(a) DMA_32BIT_MASK
#endif
////////////////////////////////////////////////

View File

@ -36,7 +36,7 @@
#ifdef WAN_KERNEL
#define WP_TDM_API_MAX_LEN 4096+sizeof(wp_api_hdr_t)
#define WP_TDM_API_EVENT_MAX_LEN sizeof(wanpipe_tdm_api_dev_t)+sizeof(wp_api_hdr_t)
#define WP_TDM_API_EVENT_MAX_LEN sizeof(wp_api_event_t)+sizeof(wp_api_hdr_t)
#define WP_TDM_API_CHUNK_SZ 8
#define WP_RM_RXFLASHTIME 0 /* Default disable flash */

View File

@ -10,7 +10,7 @@
#define WANPIPE_COMPANY "Sangoma Technologies Inc"
/********** LINUX **********/
#define WANPIPE_VERSION "3.5.15"
#define WANPIPE_VERSION "3.5.16"
#define WANPIPE_SUB_VERSION "0"
#define WANPIPE_LITE_VERSION "1.1.1"

View File

@ -30,17 +30,23 @@
#endif
#ifdef DAHDI_ECHOCANCEL_FAX_MODE
#undef DAHDI_24
#undef DAHDI_22
#undef DAHDI_23
#if defined(DAHDI_MAINT_ALARM_SIM)
#define DAHDI_24
#define DAHDI_23
#define DAHDI_22
#elif defined(DAHDI_AUDIO_NOTIFY)
#define DAHDI_23
#define DAHDI_22
#elif defined(DAHDI_ECHOCANCEL_FAX_MODE)
#define DAHDI_22
#else
#undef DAHDI_22
/* Configuring for old 20 dahdi */
#endif
#ifdef DAHDI_AUDIO_NOTIFY
#define DAHDI_23
#else
#undef DAHDI_23
#endif
// defines
#define ZT_CODE DAHDI_CODE
@ -155,6 +161,17 @@
#define zt_ec_span dahdi_ec_span
#define zt_qevent_lock dahdi_qevent_lock
#ifdef DAHDI_24
#define DAHDI_SPAN_OPS(span, func_name) span.ops->func_name
#define WP_PRIV_FROM_SPAN(span_dev, str_type) container_of(span_dev,str_type,span)
#define WP_PRIV_FROM_CHAN(chan_dev, str_type) WP_PRIV_FROM_SPAN(chan_dev->span,str_type)
#else
#define DAHDI_SPAN_OPS(span, func_name) span.func_name
#define WP_PRIV_FROM_SPAN(span_dev, str_type) span_dev->pvt
#define WP_PRIV_FROM_CHAN(chan_dev, str_type) chan_dev->pvt
#endif
# define WP_ZT_QEVENT_LOCK(chan, event) dahdi_qevent_lock((chan),(event))
@ -169,6 +186,9 @@
ZT_EVENT_NOALARM : ZT_EVENT_ALARM)
#endif
#define DAHDI_SPAN_OPS(span, func_name) span.func_name
#define WP_PRIV_FROM_SPAN(span_dev, str_type) span_dev->pvt
#define WP_PRIV_FROM_CHAN(chan_dev, str_type) chan_dev->pvt
# define WP_ZT_QEVENT_LOCK(chan, event) zt_qevent_lock(&(chan),(event))
#endif

View File

@ -1016,7 +1016,7 @@ int wplip_change_mtu(netdevice_t *dev, int new_mtu)
__FUNCTION__,lip_link->name);
return -ENODEV;
}
if (lip_dev_list_el->magic != WPLIP_MAGIC_DEV_EL){
DEBUG_EVENT("%s: %s: Error: Invalid dev magic number!\n",
__FUNCTION__,lip_link->name);
@ -1035,7 +1035,7 @@ int wplip_change_mtu(netdevice_t *dev, int new_mtu)
}
if (err == 0) {
WAN_NETDEV_OPS_MTU(dev,wan_netdev_ops,new_mtu);
WAN_NETDEV_CHANGE_MTU(dev,new_mtu);
}
return err;

View File

@ -1,215 +0,0 @@
0x7c19de34 got_new_syncer /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xf7567a8a wanpipe_api_buf_check /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xf27fa082 wanpipe_lip_connect /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x7ff2cd30 wanpipe_cdev_tdm_create /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xc6edf870 vpmadt032_free /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xe656360e sdladrv_hw_mode /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x53ece134 wanpipe_cdev_tx_wake /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x1df80ee2 wanpipe_cdev_rx_wake /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xc877a4cb put_xframe /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x8c78cb9b xframe_next_packet /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x92e7bb62 xframe_queue_clearstats /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x03865603 sdla_register /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x19e75bf2 voicebus_stop /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x6072c8a2 dahdi_transcoder_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_transcode EXPORT_SYMBOL
0xc0ef42f1 wp_sppp_input /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x597475a3 dahdi_register_chardev /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x48bddc3c voicebus_current_latency /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xe5a5dabe dahdi_transcoder_alloc /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_transcode EXPORT_SYMBOL
0x0c3b63d8 pcmtx_chan /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x57e6ed60 wanpipe_api_sock_rx /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x0a7a356f wanpipe_cdev_event_wake /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x12dfa58e dahdi_qevent_nolock /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xf5d22416 get_xframe /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xecace35b wanrouter_proc_add_interface /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x59fb2682 sdla_hw_probe /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xce69e3a7 dahdi_hooksig /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xe6ce6bea sync_mode_name /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x9a7a6658 wanpipe_lip_rx /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x8f31cdeb proc_router /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x47151521 xbus_activate /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x2cc2381f update_wanted_pcm_mask /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xa79ecb53 xbus_disconnect /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x2974b24a generic_card_pcm_tospan /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xc945873d dahdi_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x77da8dee register_wanec_iface /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x1036a1ab bind_api_listen_to_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x8e0e566e xproto_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x537eb672 xframe_receive /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x12cb4707 xpd_post_init /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xd63e1d87 voicebus_release /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xd7eeeeb5 report_bad_ioctl /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xb522bb3f vpmadt032_reset /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x425ddbab xbus_request_removal /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x60c154c5 update_xpd_status /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x599e779b vpmadt032_echocan_free /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x006a2198 __dahdi_mulaw /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xc5fb06b9 xproto_name /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xddf2e333 xpp_open /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x9513f4ff run_initialize_registers /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x524e2f20 register_wanpipe_fw_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x7c2dc516 register_wan_device /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x635a1d83 gpakConfigurePorts /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x01b0f433 xpd_alloc /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xf4a2bf8e xframe_queue_init /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xa78a3f8f notify_rxsig /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x45866c4c wanrouter_proc_add_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xfc5f75a8 wp_sppp_attach /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x90a9f616 wp_sppp_detach /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x592e5c90 xbus_setstate /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x0deeaedb wp_logger_repeating_message_filter /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x13c7069b dahdi_transcode_fops /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x55b59227 vpmadt032_echocan_create /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x618aefa9 wanpipe_cdev_logger_create /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xd083d5c4 send_pcm_frame /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x8b05ea95 xbus_deactivate /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xdc3a2c77 xbus_free /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xf7f5afa4 wanpipe_ec_event_ctrl /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x38e1c7fd xpp_close /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xcd6633df dahdi_set_dynamic_ioctl /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xc2b56d8c vpmadt032_get_default_parameters /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x624e96fa xframe_dequeue /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x97eb6143 xframe_enqueue /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xe0c9b849 dahdi_transcoder_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_transcode EXPORT_SYMBOL
0x9c462e00 voicebus_set_minlatency /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xf42f429a dahdi_init_tone_state /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xaf8e1806 xpd_driver_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x06403f91 put_xpd /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xbdc234d9 vpmadtreg_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x71aafde0 vpmadtreg_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xad0e46e6 debug /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x6201c669 wp_logger_level_fe /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xbdd1b41c dahdi_unregister_echocan_factory /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xb3af45ff generic_card_pcm_recompute /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xb48548fa __dahdi_lin2a /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x7cd3c2bc wanpipe_ec_poll /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x9e48e1bc wanrouter_proc_delete_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x2d6794f0 xpd_byaddr /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xb1d6d6be hookstate_changed /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x6dd4c4d6 wanpipe_cdev_free /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xdfd0f6c6 sdla_get_hw_adptr_cnt /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xef11c1ba dahdi_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x6ad0c191 wp_logger_level_bri /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x3d183b5d get_xpd /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x82e127c6 send_cmd_frame /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x72d0bb1d dahdi_hdlc_getbuf /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xc2143791 wanpipe_ec_register /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x1e82f485 wp_sppp_change_mtu /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x0cca3f0e __dahdi_lin2mu /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x6a062e24 xframe_queue_disable /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xc288bfdc wanpipe_cdev_cfg_ctrl_create /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x373bca89 xbus_receive_xframe /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xad1272e5 dump_reg_cmd /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xb8da2b4c wanpipe_global_cdev_free /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x47ff4922 wanpipe_cdev_tdm_ctrl_create /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x4ce4fe8b dahdi_qevent_lock /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xaa81d611 wanpipe_global_cdev_init /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x8f9e9e1f dahdi_alarm_notify /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x02364d27 wanrouter_encapsulate /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x136b2537 wan_skb_destructor /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x3f234f3e wp_logger_input /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x8f645409 dahdi_sync_tick /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x068090ff notify_bad_xpd /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x91c86c35 dahdi_register_echocan_factory /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x8e04fd95 dump_xframe /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xfa083e32 register_wanpipe_api_socket /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xb2cc48ff elect_syncer /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x4de93988 sdla_get_hw_usb_adptr_cnt /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xade2d0d7 sdla_get_hw_probe /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xd90451b0 wanpipe_cdev_timer_create /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x0f19df36 sdladrv_callback /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x3d8bebde mark_offhook /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xbd4a533a sdla_get_hwinfo /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xd5c12072 transportops_put /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x0231f4ab transportops_get /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x05d662e5 dahdi_unregister_chardev /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xef48df91 proc_add_line /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x22a2999f sdla_unregister /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xa72dc741 dahdi_transcoder_alert /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_transcode EXPORT_SYMBOL
0x5a8b7434 voicebus_vbb_cache /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x4b8cdbf2 xproto_global_entry /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x85c05713 wanrouter_type_trans /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xe5eb1132 gpakPingDsp /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x8ba85e84 xbus_connect /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xec7b087b gpakConfigureChannel /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xc98aebe6 wan_get_ip_address /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xfd74fadb wan_set_ip_address /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x7d68ed07 protocol_disconnected /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xc5224c15 bind_api_to_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xd07870ea xpd_of /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xfdd623b4 valid_xpd_addr /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x38eb6851 unregister_wanpipe_api_socket /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xaac011d2 wanpipe_lip_kick /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xf0f056a0 xpd_free /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x64a6fdeb alarm2str /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x3b604364 unbind_api_listen_from_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xcf1a0233 xpp_ioctl /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x6df6c4e0 wan_run_wanrouter /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xdd7bc49e dahdi_receive /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x23e9e447 dahdi_dynamic_receive /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_dynamic EXPORT_SYMBOL
0x058098af xframe_queue_clear /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x141f7b48 xproto_card_entry /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x0a29c949 generic_card_pcm_fromspan /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x05487ec8 wp_logger_level_default /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x28c9b161 dump_packet /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x7cc79ec0 dahdi_alarm_channel /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x8ceddc4b vpmadt032_alloc /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x6045e8cb dahdi_dynamic_register /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_dynamic EXPORT_SYMBOL
0xeb418feb sdla_hw_bridge_probe /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x04df932b unregister_wanec_iface /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xea9f3201 gl_usb_rw_fast /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x430a8848 dahdi_mf_tone /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x562d2ade wanpipe_ec_isr /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x821b2778 dump_poll /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x65e6b5eb vpmadt032_init /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x7817cb58 xbus_reset_counters /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xa2d6910d oht_pcm /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x13405f6b unregister_wanpipe_fw_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xe72f44cb wanpipe_api_listen_rx /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xe6bc2d6d wp_sppp_open /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x238f240b wp_sppp_reopen /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x67428f4d dahdi_ec_span /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x8bab76f8 wp_logger_level_tdmapi /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0xed5e8380 dahdi_transcoder_free /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_transcode EXPORT_SYMBOL
0x528a0730 xframe_queue_count /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xa9b5f188 xbus_command_queue_tick /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xa407ff09 voicebus_start /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xc4071a06 __dahdi_alaw /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x7b40a84d dahdi_hdlc_putbuf /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x31386140 dahdi_hdlc_abort /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x72ddd010 wp_sppp_do_ioctl /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x5b7efb57 wanpipe_api_poll_wake /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x529d6203 dahdi_lboname /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x2dfb51e3 create_xpd /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xc95646c8 voicebus_transmit /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xc80ea69b xpp_maint /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x651a840a wan_add_gateway /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x805cbe1e wp_sppp_close /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanpipe_syncppp EXPORT_SYMBOL
0x6719218e wanrouter_proc_delete_interface /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x2f21a326 unregister_wanpipe_lip_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xb53d0d74 __voicebus_init /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0xc11b8c26 xpd_driver_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x0ebe03d1 unregister_wan_device /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x782bbc32 dahdi_transmit /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x3ee7da88 dahdi_hdlc_finish /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xfaa93356 xpp_register_request /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x6aa023ac xbus_statename /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xeb2ef21c xbus_request_sync /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x22317d82 wanpipe_lip_disconnect /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x4914a44f dahdi_rbsbits /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0x8019389a gpakAlgControl /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/voicebus/dahdi_voicebus EXPORT_SYMBOL
0x74a9ab7b wp_logger_level_te1 /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x120e8bb6 send_multibyte_request /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xf22c9714 xframe_init /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xed6a48f7 protocol_connected /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x53350bd4 wanpipe_ec_unregister /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0x2ef28734 pcmtx /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x71672675 dahdi_dynamic_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_dynamic EXPORT_SYMBOL
0xe5a73e62 dahdi_set_hpec_ioctl /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xc12eb167 wp_logger_level_hwec /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/sdladrv EXPORT_SYMBOL
0x6d91edc4 xproto_unregister /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x0bd2816a dahdi_ec_chunk /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi EXPORT_SYMBOL
0xc76eb4f8 register_wanpipe_lip_protocol /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL
0xd296bbaa xbus_new /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0xbff0a11c xbus_num /usr/src/ast1.6/dahdi-linux-2.3.0.1/drivers/dahdi/xpp/xpp EXPORT_SYMBOL
0x00525339 protocol_connecting /root/development/3.5/wanpipe-3.5.14.6/patches/kdrivers/src/net/wanrouter EXPORT_SYMBOL

View File

@ -218,8 +218,8 @@
#undef SPAN_TIMING_DEBUGGING
#endif
#define WP_ZAPTEL_ENABLED 0
#define WP_ZAPTEL_DCHAN_OPTIMIZATION 1
#define WP_RX_TX_FIFO_SANITY 100
@ -805,6 +805,9 @@ int wp_aft_bri_init (sdla_t *card, wandev_conf_t* conf)
card->wandev.comm_port=card->fe.fe_cfg.line_no;
#endif
/* BRI cards never start with hwec enabled. */
card->hwec_conf.persist_disable=1;
DEBUG_EVENT("%s: BRI CARD Line=%d Port=%d\n",
card->devname, card->wandev.comm_port, card->fe.fe_cfg.line_no);
@ -1500,6 +1503,18 @@ static int update (wan_device_t* wandev)
#warning "COMM STATS DISABLED"
#endif
#if 0
/* Debugginc code used to generate SYNC error */
#warning "NENAD DEBUG"
{
u32 lcfg_reg;
__sdla_bus_read_4(card->hw,AFT_PORT_REG(card,AFT_LINE_CFG_REG), &lcfg_reg);
aft_lcfg_set_fe_sync_cnt(&lcfg_reg,1);
__sdla_bus_write_4(card->hw,AFT_PORT_REG(card,AFT_LINE_CFG_REG), lcfg_reg);
}
#endif
return 0;
}
@ -2009,15 +2024,11 @@ static int new_if_private (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t*
* XMTP2_API = MTP2 API
*===================================================*/
/* If we are running zaptel with another mode, we must
* disable zaptel dchan optimization */
if (strcmp(conf->usedby, "TDM_VOICE") != 0) {
if (card->u.aft.tdmv_zaptel_cfg) {
DEBUG_EVENT("%s: Disabling ZAPTEL DCHAN OPTIMIZATION !\n",chan->if_name);
wan_clear_bit(WP_ZAPTEL_DCHAN_OPTIMIZATION,&card->u.aft.tdmv_zaptel_cfg);
}
}
/* If we are running zaptel or tdm chan api with another mode, we must
* disable dchan optimization */
aft_check_and_disable_dchan_optimization(card,chan,conf->usedby);
if(strcmp(conf->usedby, "WANPIPE") == 0) {
DEBUG_EVENT( "%s: Running in WANPIPE mode\n",
@ -2195,7 +2206,7 @@ static int new_if_private (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t*
chan->dma_chain_opmode = WAN_AFT_DMA_CHAIN_SINGLE;
chan->max_tx_bufs=MAX_AFT_DMA_CHAINS;
/* Eanble Zaptel Optimization */
/* Enable Zaptel Optimization */
wan_set_bit(WP_ZAPTEL_ENABLED,&card->u.aft.tdmv_zaptel_cfg);
wan_set_bit(WP_ZAPTEL_DCHAN_OPTIMIZATION,&card->u.aft.tdmv_zaptel_cfg);
@ -2290,14 +2301,26 @@ static int new_if_private (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t*
}
#endif
if (chan->wp_api_iface_mode != WP_TDM_API_MODE_LEGACY_WIN_API) {
wan_set_bit(WP_TDM_CHAN_API_ENABLED,&card->u.aft.tdm_api_cfg);
wan_set_bit(WP_TDM_API_DCHAN_OPTIMIZATION,&card->u.aft.tdm_api_cfg);
}
chan->wp_api_op_mode=WP_TDM_OPMODE_CHAN;
if (dchan >= 0){
if (dchan >= 0) {
chan->common.usedby = TDM_VOICE_DCHAN;
chan->usedby_cfg = chan->common.usedby;
chan->cfg.data_mux=0;
chan->dma_chain_opmode = WAN_AFT_DMA_CHAIN;
conf->hdlc_streaming=1;
card->u.aft.tdm_api_dchan_cfg++;
if (card->u.aft.tdm_api_dchan_cfg > 1) {
DEBUG_EVENT("%s: TDM API DCHAN Optimization disabled - multiple dchans!\n",
card->devname);
wan_clear_bit(WP_TDM_API_DCHAN_OPTIMIZATION,&card->u.aft.tdm_api_cfg);
}
}
if (!silent) {
@ -2540,11 +2563,6 @@ static int new_if_private (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t*
}else{
/* In case hdlc repeat is on, make sure we disable dma chain */
if (chan->cfg.hdlc_repeat) {
chan->dma_chain_opmode = WAN_AFT_DMA_CHAIN_SINGLE;
}
/* If hardware HDLC engine is enabled:
* 1. Force Disable DATA MUX option
* just in case user made a mistake
@ -3711,30 +3729,27 @@ static int if_init (netdevice_t* dev)
WAN_NETDEV_OPS_XMIT(dev,wan_netdev_ops,&if_send);
#endif
WAN_NETDEV_OPS_STATS(dev,wan_netdev_ops,&if_stats);
#if 0
dev->tx_timeout = &if_tx_timeout;
dev->watchdog_timeo = 2*HZ;
#else
if (chan->common.usedby == TDM_VOICE ||
chan->common.usedby == TDM_VOICE_API){
WAN_NETDEV_OPS_TIMEOUT(dev,wan_netdev_ops,NULL);
WAN_NETDEV_OPS_TIMEOUT(dev,wan_netdev_ops,NULL);
dev->watchdog_timeo = 2*HZ;
}else{
WAN_NETDEV_OPS_TIMEOUT(dev,wan_netdev_ops,&if_tx_timeout);
}
WAN_NETDEV_OPS_TIMEOUT(dev,wan_netdev_ops,&if_tx_timeout);
dev->watchdog_timeo = 2*HZ;
{
u32 secs = ((chan->max_tx_bufs/2)*chan->dma_mru*8) / (64000 * chan->num_of_time_slots);
secs+=2;
if (secs < 2) {
secs=2;
dev->watchdog_timeo = 2*HZ;
{
u32 secs = ((chan->max_tx_bufs/2)*chan->dma_mru*8) / (64000 * chan->num_of_time_slots);
secs+=2;
if (secs < 2) {
secs=2;
}
dev->watchdog_timeo = secs*HZ;
DEBUG_EVENT("%s: Dev watch dog = %i mtu=%i\n", card->devname, secs,chan->dma_mru);
}
dev->watchdog_timeo = secs*HZ;
DEBUG_TEST("%s: Dev watch dog = %i mtu=%i\n", card->devname, secs,chan->dma_mru);
}
#endif
WAN_NETDEV_OPS_IOCTL(dev,wan_netdev_ops,&if_do_ioctl);
WAN_NETDEV_OPS_MTU(dev,wan_netdev_ops,if_change_mtu);
@ -4362,12 +4377,16 @@ static struct net_device_stats* if_stats (netdevice_t* dev)
if (card) {
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE)
if (card->wan_tdmv.sc &&
wan_test_bit(WP_ZAPTEL_DCHAN_OPTIMIZATION,&card->u.aft.tdmv_zaptel_cfg) &&
card->wandev.state == WAN_CONNECTED &&
card->wandev.config_id != WANCONFIG_AFT_ANALOG &&
chan->common.usedby == TDM_VOICE) {
card->u.aft.global_tdm_irq &&
card->wandev.state == WAN_CONNECTED &&
card->wandev.config_id != WANCONFIG_AFT_ANALOG &&
chan->common.usedby == TDM_VOICE) {
chan->common.if_stats.rx_packets = card->wandev.stats.rx_packets;
chan->common.if_stats.tx_packets = card->wandev.stats.tx_packets;
//chan->common.if_stats.rx_bytes = card->wandev.stats.rx_bytes;
//chan->common.if_stats.tx_bytes = card->wandev.stats.tx_bytes;
} else
#endif
if (card->tdm_api_span &&
@ -4375,6 +4394,8 @@ static struct net_device_stats* if_stats (netdevice_t* dev)
!IS_B601_TE1_CARD(card)) {
chan->common.if_stats.rx_packets = card->wandev.stats.rx_packets;
chan->common.if_stats.tx_packets = card->wandev.stats.tx_packets;
//chan->common.if_stats.rx_bytes = card->wandev.stats.rx_bytes;
//chan->common.if_stats.tx_bytes = card->wandev.stats.tx_bytes;
}
}
#endif
@ -4975,11 +4996,15 @@ static void aft_dma_tx_complete (sdla_t *card, private_area_t *chan, int wdt, in
what to do */
DEBUG_TEST("%s: STACK STOPPED Pending=%d Max=%d Max/2=%d\n",
DEBUG_TEST("%s: STACK STOPPED Pending=%d Max=%d Max/2=%d wdt=%i\n",
chan->if_name,wan_skb_queue_len(&chan->wp_tx_pending_list),
chan->max_tx_bufs,chan->max_tx_bufs/2,wdt);
/* should we check chan->max_tx_bufs/2 only for hdlc?? and always wake for voice? */
if (wan_skb_queue_len(&chan->wp_tx_pending_list) <= (chan->max_tx_bufs/2)) {
DEBUG_TEST("%s: STACK Waking Pending=%d Max=%d Max/2=%d\n",
chan->if_name,wan_skb_queue_len(&chan->wp_tx_pending_list),
chan->max_tx_bufs,chan->max_tx_bufs/2);
if (wan_skb_queue_len(&chan->wp_tx_pending_list) <= (chan->max_tx_bufs/2)) {
wanpipe_wake_stack(chan);
}
}
@ -6835,7 +6860,7 @@ if (1){
void **card_list;
wan_smp_flag_t flags=0;
u32 i;
WAN_IRQ_RETVAL_SET(irq_ret, WAN_IRQ_HANDLED);
#if 0
@ -6918,10 +6943,15 @@ if (1){
if (ring_rsync) {
aft_tdm_ring_rsync(tmp_card);
/* Restart all hdlc devices after resync because tx buffers might have
been corrupted */
__wp_aft_fifo_per_port_isr(tmp_card,0xFFFFFFFF,0xFFFFFFFF);
}
}
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE)
if ((tmp_card->wan_tdmv.sc || tmp_card->tdm_api_span) &&
!tmp_card->wandev.rtp_len &&
@ -6935,11 +6965,12 @@ if (1){
if (tmp_card->tdm_api_span &&
!tmp_card->wandev.rtp_len &&
tmp_card->wandev.config_id != WANCONFIG_AFT_ANALOG) {
aft_voice_span_rx_tx(tmp_card,
ring_buf_enabled);
} else {
wp_aft_tdmv_per_port_isr(tmp_card);
}
@ -7005,6 +7036,8 @@ if (1){
} else {
if (wan_test_bit(AFT_LCFG_TDMV_INTR_BIT,&card->u.aft.lcfg_reg) &&
wan_test_bit(card->wandev.comm_port,&tdmv_port_intr)){
@ -7389,9 +7422,12 @@ static void wp_aft_dma_per_port_isr(sdla_t *card, int tdm)
{
int i;
u32 dma_tx_reg=0,dma_rx_reg=0;
#if 0
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE)
private_area_t *chan;
#endif
#endif
#ifdef AFT_IRQ_STAT_DEBUG
@ -7417,14 +7453,15 @@ static void wp_aft_dma_per_port_isr(sdla_t *card, int tdm)
* 3. Error conditions.
* --------------------------------------------------*/
/* Zaptel optimization. Dont waist time looking at
/* DCHAN optimization. Dont waist time looking at
channels, when we know that only a single DCHAN
will use this code */
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE)
if (card->wan_tdmv.sc &&
#if 0
if (wan_test_bit(WP_TDM_API_DCHAN_OPTIMIZATION,&card->u.aft.tdm_api_cfg) ||
wan_test_bit(WP_ZAPTEL_DCHAN_OPTIMIZATION,&card->u.aft.tdmv_zaptel_cfg)) {
__sdla_bus_read_4(card->hw,AFT_PORT_REG(card,AFT_RX_DMA_INTR_PENDING_REG),&dma_rx_reg);
__sdla_bus_read_4(card->hw,AFT_PORT_REG(card,AFT_TX_DMA_INTR_PENDING_REG),&dma_tx_reg);
__sdla_bus_read_4(card->hw,AFT_PORT_REG(card,AFT_TX_DMA_INTR_PENDING_REG),&dma_tx_reg);
if (card->u.aft.tdmv_dchan) {
chan=(private_area_t*)card->u.aft.dev_to_ch_map[card->u.aft.tdmv_dchan-1];
if (chan && wan_test_bit(WP_DEV_CONFIG,&chan->up)) {
@ -8548,6 +8585,7 @@ void aft_tx_fifo_under_recover (sdla_t *card, private_area_t *chan)
/* If running in mixed mode DATA + Voice do not disable DMA */
if (chan->hdlc_eng && card->u.aft.global_tdm_irq) {
aft_init_tx_dev_fifo(card,chan,WP_WAIT);
aft_dma_tx_complete(card,chan,0, 1);
aft_free_tx_descriptors(chan);
aft_dma_tx(card,chan);
@ -9232,9 +9270,16 @@ static int aft_dma_voice_tx(sdla_t *card, private_area_t *chan)
dma_chain = &chan->tx_dma_chain_table[0];
/* Save the DMA descriptor into cards structure
so it can be used in the optimized dahid/tdmapi rx
routine. Used to sync up the dma before being used.
We can do this blidnly because this function only
runs once on dma start. */
card->u.aft.tdm_tx_dma[chan->logic_ch_num]=dma_chain;
DEBUG_DMA("%s: %s:%s:: Chain %d Used %ld\n",
__FUNCTION__,card->devname,chan->if_name,
dma_chain->index,dma_chain->init);
dma_chain->index,dma_chain->init,chan->logic_ch_num);
/* If the current DMA chain is in use,then
* all chains are busy */
@ -9707,6 +9752,13 @@ static int aft_dma_voice_rx(sdla_t *card, private_area_t *chan)
dma_chain = &chan->rx_dma_chain_table[0];
/* Save the DMA descriptor into cards structure
so it can be used in the optimized dahid/tdmapi rx
routine. Used to sync up the dma before being used.
We can do this blidnly because this function only
runs once on dma start. */
card->u.aft.tdm_rx_dma[chan->logic_ch_num]=dma_chain;
DEBUG_DMA("%s: %s:%s: Chain %d Used %ld\n",
__FUNCTION__,card->devname,chan->if_name,
dma_chain->index,dma_chain->init);
@ -11285,7 +11337,7 @@ static int aft_dma_rx_tdmv(sdla_t *card, private_area_t *chan)
rxbuf = (unsigned char*)rx_dma_chain->dma_virt+rx_offset;
txbuf = (unsigned char*)tx_dma_chain->dma_virt+tx_offset;
if (wan_test_bit(AFT_TDM_RING_BUF,&card->u.aft.chip_cfg_status)) {
rx_offset= AFT_TDMV_CIRC_BUF * card->u.aft.tdm_rx_dma_toggle[chan->first_time_slot];
@ -11319,6 +11371,19 @@ static int aft_dma_rx_tdmv(sdla_t *card, private_area_t *chan)
}
card->hw_iface.busdma_sync(
card->hw,
&chan->tx_dma_chain_table[0],
MAX_AFT_DMA_CHAINS,
(chan->dma_chain_opmode == WAN_AFT_DMA_CHAIN_SINGLE),
SDLA_DMA_PREWRITE);
card->hw_iface.busdma_sync(
card->hw,
&chan->rx_dma_chain_table[0],
MAX_AFT_DMA_CHAINS,
(chan->dma_chain_opmode == WAN_AFT_DMA_CHAIN_SINGLE),
SDLA_DMA_PREREAD);
err=0;
@ -11346,48 +11411,6 @@ static int aft_dma_rx_tdmv(sdla_t *card, private_area_t *chan)
#ifdef CONFIG_PRODUCT_WANPIPE_TDM_VOICE
if (card->wan_tdmv.sc){
#if 0
defined(AFT_TDMV_BH_ENABLE)
wan_dma_descr_t *tx_bh_dma_chain = &chan->tx_dma_chain_table[1];
wan_dma_descr_t *rx_bh_dma_chain = &chan->rx_dma_chain_table[1];
if (!rx_bh_dma_chain->skb){
rx_bh_dma_chain->skb=wan_skb_dequeue(&chan->wp_rx_free_list);
if (!rx_bh_dma_chain->skb){
if (WAN_NET_RATELIMIT()){
DEBUG_ERROR("%s: Critical TDM BH no free skb\n",
chan->if_name);
goto aft_tdm_bh_skip;
}
}
wan_skb_init(rx_bh_dma_chain->skb,sizeof(wp_api_hdr_t));
wan_skb_trim(rx_bh_dma_chain->skb,0);
}
if (!tx_bh_dma_chain->skb){
tx_bh_dma_chain->skb=wan_skb_dequeue(&chan->wp_rx_free_list);
if (!tx_bh_dma_chain->skb){
if (WAN_NET_RATELIMIT()){
DEBUG_ERROR("%s: Critical TDM BH no free skb\n",
chan->if_name);
goto aft_tdm_bh_skip;
}
}
wan_skb_init(tx_bh_dma_chain->skb,sizeof(wp_api_hdr_t));
wan_skb_trim(tx_bh_dma_chain->skb,0);
}
memcpy(wan_skb_data(rx_bh_dma_chain->skb),
wan_skb_data(rx_dma_chain->skb),8);
memcpy(wan_skb_data(tx_dma_chain->skb),
wan_skb_data(tx_bh_dma_chain->skb),8);
rx_dma_chain=rx_bh_dma_chain;
tx_dma_chain=tx_bh_dma_chain;
aft_tdm_bh_skip:
#endif
DEBUG_TEST ("%s: Calling Rx Chan=%d TdmvChan=%d\n",
card->devname,chan->logic_ch_num,
chan->tdmv_chan);
@ -11458,8 +11481,6 @@ aft_tdm_bh_skip:
#endif
}
wanpipe_tdm_api_rx_tx(chan->wp_tdm_api_dev,
rxbuf,
txbuf,
@ -11489,26 +11510,7 @@ aft_tdm_bh_skip:
if (chan->tdmv_zaptel_cfg){
DEBUG_TEST ("%s: Calling Master Rx Tx Chan=%d\n",
card->devname,chan->logic_ch_num);
#if 0
defined(AFT_TDMV_BH_ENABLE)
#warning "AFT A104: TDM Driver compiled in BH mode!"
if (WAN_TASKLET_RUNNING((&chan->common.bh_task))){
if (WAN_NET_RATELIMIT()){
DEBUG_ERROR("%s: Critical Error: TDMV BH Overrun!\n",
card->devname);
}
}
WAN_WP_TASKLET_SCHEDULE_PER_CPU((&chan->common.bh_task),
card->tdmv_conf.span_no);
card->hw_iface.bus_read_4(card->hw,AFT_PORT_REG(card,AFT_DMA_CTRL_REG),&reg);
wan_set_bit(AFT_DMACTRL_TDMV_RX_TOGGLE,&reg);
wan_set_bit(AFT_DMACTRL_TDMV_TX_TOGGLE,&reg);
card->hw_iface.bus_write_4(card->hw,AFT_PORT_REG(card,AFT_DMA_CTRL_REG),reg);
#else
if (wan_test_bit(AFT_TDM_SW_RING_BUF,&card->u.aft.chip_cfg_status)) {
if (!wan_test_bit(AFT_TDM_GLOBAL_ISR,&card->u.aft.chip_cfg_status)) {
@ -11519,7 +11521,7 @@ defined(AFT_TDMV_BH_ENABLE)
}
}
#if 1
card->hw_iface.busdma_sync(
card->hw,
&chan->tx_dma_chain_table[0],
@ -11527,7 +11529,9 @@ defined(AFT_TDMV_BH_ENABLE)
(chan->dma_chain_opmode == WAN_AFT_DMA_CHAIN_SINGLE),
SDLA_DMA_POSTREAD);
WAN_TDMV_CALL(rx_tx_span, (card), err);
card->hw_iface.busdma_sync(
card->hw,
@ -11542,9 +11546,6 @@ defined(AFT_TDMV_BH_ENABLE)
(chan->dma_chain_opmode == WAN_AFT_DMA_CHAIN_SINGLE),
SDLA_DMA_PREREAD);
#else
#warning "NCDEBUG: rx_tx_span disabled irq"
#endif
if (!wan_test_bit(AFT_TDM_SW_RING_BUF,&card->u.aft.chip_cfg_status) &&
!wan_test_bit(AFT_TDM_GLOBAL_ISR,&card->u.aft.chip_cfg_status)) {
@ -11563,7 +11564,7 @@ defined(AFT_TDMV_BH_ENABLE)
}
}
}
#endif
}else{
#else
if (!chan->tdmv_zaptel_cfg){
@ -11576,7 +11577,6 @@ defined(AFT_TDMV_BH_ENABLE)
}
#endif
if (!wan_test_bit(AFT_TDM_GLOBAL_ISR,&card->u.aft.chip_cfg_status)) {
card->hw_iface.bus_read_4(card->hw,AFT_PORT_REG(card,AFT_DMA_CTRL_REG),&reg);
wan_set_bit(AFT_DMACTRL_TDMV_RX_TOGGLE,&reg);

View File

@ -568,7 +568,6 @@ int get_map(wan_device_t *wandev, netdevice_t *dev, struct seq_file* m, int* sto
#ifdef AFT_TDM_API_SUPPORT
int aft_tdm_api_init(sdla_t *card, private_area_t *chan, wanif_conf_t *conf)
{
int err=0;
@ -712,6 +711,9 @@ int aft_tdm_api_init(sdla_t *card, private_area_t *chan, wanif_conf_t *conf)
chan->wp_tdm_api_dev->cfg.usr_period = chan->tdm_api_period;
chan->wp_tdm_api_dev->cfg.usr_mtu_mru = chan->tdm_api_chunk;
if (chan->wp_tdm_api_dev->cfg.usr_mtu_mru < 160) {
chan->tdm_api_period=20;
chan->wp_tdm_api_dev->cfg.usr_period=20;
chan->tdm_api_chunk=160;
chan->wp_tdm_api_dev->cfg.usr_mtu_mru=160;
}
} else {
@ -733,10 +735,13 @@ int aft_tdm_api_init(sdla_t *card, private_area_t *chan, wanif_conf_t *conf)
chan->wp_tdm_api_dev->api_mode = chan->wp_api_iface_mode;
if (chan->if_cnt == 1) {
DEBUG_EVENT("%s: Memory: TDM API %d\n",
DEBUG_EVENT("%s: Memory: TDM API %d \n",
card->devname, sizeof(wanpipe_tdm_api_dev_t));
}
DEBUG_TDMAPI("%s: Chunk=%i, Period=%i, MTU=%i\n",
card->devname,chan->tdm_api_chunk,
chan->tdm_api_period,chan->wp_tdm_api_dev->cfg.usr_mtu_mru);
err=wanpipe_tdm_api_reg(chan->wp_tdm_api_dev);
if (err){
@ -752,6 +757,7 @@ int aft_tdm_api_init(sdla_t *card, private_area_t *chan, wanif_conf_t *conf)
wan_set_bit(0,&chan->wp_tdm_api_dev->init);
return err;
}
#endif
int aft_tdm_api_free(sdla_t *card, private_area_t *chan)

View File

@ -415,7 +415,10 @@ int aft_alloc_rx_dma_buff(sdla_t *card, private_area_t *chan, int num, int irq)
}
#else
if (chan->channelized_cfg && !chan->hdlc_eng){
#if (!defined(WANPIPE_64BIT_2G_DMA) && (defined(WANPIPE_64BIT_4G_DMA) || defined(CONFIG_X86_64)))
#if 0
/* NC: This is not used any more since we fixed the dma syncing
related to 64bit machines. This code to be taken out. */
//(!defined(WANPIPE_64BIT_2G_DMA) && (defined(WANPIPE_64BIT_4G_DMA) || defined(CONFIG_X86_64)))
/* On 64bit Systems greater than 4GB we must
* allocated our DMA buffers using GFP_DMA
* flag */
@ -698,9 +701,13 @@ int aft_devel_ioctl(sdla_t *card, struct ifreq *ifr)
memset(api_cmd, 0, sizeof(wan_cmd_api_t));
#if defined (__WINDOWS__)
memcpy(api_cmd, ifr_data_ptr, sizeof(wan_cmd_api_t));
#else
if(WAN_COPY_FROM_USER(api_cmd, ifr_data_ptr, sizeof(wan_cmd_api_t))){
return -EFAULT;
}
#endif
switch(api_cmd->cmd){
case SIOC_WAN_READ_REG:
@ -771,9 +778,14 @@ int aft_devel_ioctl(sdla_t *card, struct ifreq *ifr)
api_cmd->ret = err;
#if defined (__WINDOWS__)
memcpy(ifr_data_ptr, api_cmd, sizeof(wan_cmd_api_t));
#else
if (WAN_COPY_TO_USER(ifr_data_ptr, api_cmd, sizeof(wan_cmd_api_t))){
return -EFAULT;
}
#endif
return err;
}
@ -3444,4 +3456,40 @@ int aft_hdlc_repeat_mangle(sdla_t *card,private_area_t *chan, netskb_t *skb, wp_
return 0;
}
int aft_check_and_disable_dchan_optimization(sdla_t *card, private_area_t *chan, char *usedby)
{
if (strcmp(usedby, "TDM_VOICE") != 0) {
if (card->u.aft.tdmv_zaptel_cfg) {
goto disable_optimization;
}
}
#if defined (__LINUX__)
/* On windows TDM_VOICE_API is the old legacy API. On Linux TDM_VOICE_API is equivalent
to TDM_CHAN_VOICE_API */
if (strcmp(usedby, "TDM_VOICE_API") != 0 && strcmp(usedby, "TDM_CHAN_VOICE_API") != 0) {
if (card->u.aft.tdm_api_cfg) {
goto disable_optimization;
}
}
#else
if (strcmp(usedby, "TDM_CHAN_VOICE_API") != 0) {
if (card->u.aft.tdm_api_cfg) {
goto disable_optimization;
}
}
#endif
return 0;
disable_optimization:
DEBUG_EVENT("%s: Disabling DCHAN OPTIMIZATION !\n",chan->if_name);
wan_clear_bit(WP_TDM_API_DCHAN_OPTIMIZATION,&card->u.aft.tdm_api_cfg);
wan_clear_bit(WP_ZAPTEL_DCHAN_OPTIMIZATION,&card->u.aft.tdmv_zaptel_cfg);
return 0;
}
/************** EOF *************/

View File

@ -187,6 +187,32 @@ static int wp_tdmv_bri_hwec_create(struct dahdi_chan *chan,
static void wp_tdmv_bri_hwec_free(struct dahdi_chan *chan,
struct dahdi_echocan_state *ec);
static int wp_bri_zap_open(struct zt_chan *chan);
static int wp_bri_zap_close(struct zt_chan *chan);
static int wp_bri_zap_watchdog(struct zt_span *span, int event);
#if defined(__FreeBSD__) || defined(__OpenBSD__)
static int wp_bri_zap_ioctl(struct zt_chan *chan, unsigned int cmd, caddr_t data);
#else
static int wp_bri_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data);
#endif
#ifdef DAHDI_24
static const struct dahdi_span_ops wp_tdm_span_ops = {
.owner = THIS_MODULE,
.open = wp_bri_zap_open,
.close = wp_bri_zap_close,
.ioctl = wp_bri_zap_ioctl,
.watchdog = wp_bri_zap_watchdog,
#if 0
/* FIXME: Add native bridging */
.dacs = ,
#endif
.echocan_create = wp_tdmv_bri_hwec_create,
};
#endif
/*
@ -581,22 +607,19 @@ wr->span.deflaw = ZT_LAW_ALAW;//FIXME: hardcoded
//wr->rxsig_state[x] = ZT_RXSIG_INITIAL;
}/* for() */
wr->span.pvt = wr;
#ifdef DAHDI_ISSUES
wr->span.chans = wr->chans_ptrs;
#ifdef DAHDI_24
wr->span.ops = &wp_tdm_span_ops;
#else
wr->span.chans = wr->chans;
#endif
wr->span.channels = MAX_BRI_TIMESLOTS;/* this is the number of b-chans (2) and the d-chan on one BRI line. */;
wr->span.linecompat = ZT_CONFIG_AMI | ZT_CONFIG_CCS; /* <--- this is really BS */
wr->span.pvt = wr;
wr->span.open = wp_bri_zap_open;
wr->span.close = wp_bri_zap_close;
//wr->span.flags = ZT_FLAG_RBS;
wr->span.ioctl = wp_bri_zap_ioctl;
wr->span.watchdog = wp_bri_zap_watchdog;
#if defined(DAHDI_23)
wr->span.owner = THIS_MODULE;
#endif
/* Set this pointer only if card has hw echo canceller module */
if (card->wandev.ec_dev){
#ifdef DAHDI_22
@ -605,6 +628,21 @@ wr->span.deflaw = ZT_LAW_ALAW;//FIXME: hardcoded
wr->span.echocan = wp_bri_zap_hwec;
#endif
}
#endif
#ifdef DAHDI_ISSUES
wr->span.chans = wr->chans_ptrs;
#else
wr->span.chans = wr->chans;
#endif
wr->span.channels = MAX_BRI_TIMESLOTS;/* this is the number of b-chans (2) and the d-chan on one BRI line. */;
//wr->span.linecompat = ZT_CONFIG_AMI | ZT_CONFIG_CCS; /* <--- this is really BS */
//wr->span.flags = ZT_FLAG_RBS;
#if defined(__LINUX__)
init_waitqueue_head(&wr->span.maintq);
#endif

View File

@ -94,6 +94,17 @@ static int wp_tdmv_remora_is_rbsbits(wan_tdmv_t *wan_tdmv);
static int wp_tdmv_remora_rx_tx_span(void *pcard);
static int wp_tdmv_remora_rx_chan(wan_tdmv_t*, int,unsigned char*,unsigned char*);
static int wp_tdmv_remora_ec_span(void *pcard);
static int wp_remora_chanconfig(struct zt_chan *chan, int sigtype);
static int wp_remora_zap_open(struct zt_chan *chan);
static int wp_remora_zap_close(struct zt_chan *chan);
static int wp_remora_zap_hooksig(struct zt_chan *chan, zt_txsig_t txsig);
static int wp_remora_zap_watchdog(struct zt_span *span, int event);
#if defined(__FreeBSD__) || defined(__OpenBSD__)
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, caddr_t data);
#else
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data);
#endif
static void wp_tdmv_remora_tone (void* card_id, wan_event_t *event);
#ifdef DAHDI_22
@ -115,6 +126,26 @@ static int wp_tdmv_remora_rx_chan_sync_test(sdla_t *card, wp_tdmv_remora_t *wr,
#undef WAN_SYNC_RX_TX_TEST
#endif
#ifdef DAHDI_24
static const struct dahdi_span_ops wp_tdm_span_ops = {
.owner = THIS_MODULE,
.chanconfig = wp_remora_chanconfig,
.open = wp_remora_zap_open,
.close = wp_remora_zap_close,
.ioctl = wp_remora_zap_ioctl,
.hooksig = wp_remora_zap_hooksig,
.watchdog = wp_remora_zap_watchdog,
#if 0
/* FIXME: Add native bridging */
.dacs = ,
#endif
.echocan_create = wp_tdmv_remora_hwec_create,
};
#endif
#ifdef DAHDI_22
/*
@ -139,19 +170,22 @@ static const struct dahdi_echocan_ops wp_tdmv_remora_ec_ops = {
** FUNCTION DEFINITIONS
*******************************************************************************/
static int
#if defined(__FreeBSD__) || defined(__OpenBSD__)
wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, caddr_t data)
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, caddr_t data)
#else
wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data)
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data)
#endif
{
wp_tdmv_remora_t *wr = chan->pvt;
wp_tdmv_remora_t *wr;
sdla_t *card = NULL;
sdla_fe_t *fe = NULL;
wan_event_ctrl_t *event_ctrl = NULL;
int x, err;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
WAN_ASSERT(wr->card == NULL);
card = wr->card;
fe = &card->fe;
@ -302,10 +336,12 @@ wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data)
static int wp_remora_zap_hooksig(struct zt_chan *chan, zt_txsig_t txsig)
{
wp_tdmv_remora_t *wr = chan->pvt;
wp_tdmv_remora_t *wr;
sdla_t *card = NULL;
sdla_fe_t *fe = NULL;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
WAN_ASSERT(wr->card == NULL);
card = wr->card;
fe = &card->fe;
@ -404,8 +440,8 @@ static int wp_remora_zap_open(struct zt_chan *chan)
sdla_t *card = NULL;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
WAN_ASSERT2(wr->card == NULL, -ENODEV);
card = wr->card;
wr->usecount++;
@ -426,8 +462,8 @@ static int wp_remora_zap_close(struct zt_chan *chan)
sdla_fe_t *fe = NULL;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
card = wr->card;
fe = &card->fe;
wr->usecount--;
@ -473,8 +509,8 @@ static int wp_tdmv_remora_hwec_create(struct dahdi_chan *chan,
int err = -ENODEV;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
WAN_ASSERT2(wr->card == NULL, -ENODEV);
card = wr->card;
@ -527,8 +563,10 @@ static void wp_tdmv_remora_hwec_free(struct dahdi_chan *chan, struct dahdi_echoc
memset(ec, 0, sizeof(*ec));
if(chan == NULL) return;
if(chan->pvt == NULL) return;
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT_VOID(wr == NULL);
if(wr->card == NULL) return;
card = wr->card;
@ -564,8 +602,8 @@ static int wp_remora_zap_hwec(struct zt_chan *chan, int enable)
int err = -ENODEV;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
WAN_ASSERT2(wr->card == NULL, -ENODEV);
card = wr->card;
@ -654,8 +692,8 @@ static int wp_remora_chanconfig(struct zt_chan *chan, int sigtype)
sdla_t *card = NULL;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wr = chan->pvt;
wr = WP_PRIV_FROM_CHAN(chan,wp_tdmv_remora_t);
WAN_ASSERT2(wr == NULL, -ENODEV);
card = wr->card;
DEBUG_TDMV("%s: Configuring chan %d SigType %i..\n", wr->devname, chan->chanpos, sigtype);
@ -742,23 +780,22 @@ static int wp_tdmv_remora_software_init(wan_tdmv_t *wan_tdmv)
num++;
}
}
wr->span.pvt = wr;
#ifdef DAHDI_ISSUES
#ifdef DAHDI_23
wr->span.owner = THIS_MODULE;
#endif
wr->span.chans = wr->chans_ptrs;
#ifdef DAHDI_24
wr->span.ops = &wp_tdm_span_ops;
#else
wr->span.chans = wr->chans;
wr->span.pvt = wr;
#if defined(DAHDI_23)
wr->span.owner = THIS_MODULE;
#endif
wr->span.channels = num/*wr->max_timeslots*/;
wr->span.hooksig = wp_remora_zap_hooksig;
wr->span.open = wp_remora_zap_open;
wr->span.close = wp_remora_zap_close;
wr->span.flags = ZT_FLAG_RBS;
wr->span.ioctl = wp_remora_zap_ioctl;
wr->span.watchdog = wp_remora_zap_watchdog;
wr->span.chanconfig = wp_remora_chanconfig;
/* Set this pointer only if card has hw echo canceller module */
@ -769,6 +806,17 @@ static int wp_tdmv_remora_software_init(wan_tdmv_t *wan_tdmv)
wr->span.echocan = wp_remora_zap_hwec;
#endif
}
#endif
#ifdef DAHDI_ISSUES
wr->span.chans = wr->chans_ptrs;
#else
wr->span.chans = wr->chans;
#endif
wr->span.flags = ZT_FLAG_RBS;
wr->span.channels = num/*wr->max_timeslots*/;
#if defined(__LINUX__)
init_waitqueue_head(&wr->span.maintq);

View File

@ -311,6 +311,30 @@ static int wp_tdmv_init(void* pcard, wanif_conf_t *conf);
static void wp_tdmv_callback_tone (void*, wan_event_t*);
#ifdef DAHDI_24
static const struct dahdi_span_ops wp_tdm_span_ops = {
.owner = THIS_MODULE,
.spanconfig = wp_tdmv_spanconfig,
.chanconfig = wp_tdmv_chanconfig,
.startup = wp_tdmv_startup,
.shutdown = wp_tdmv_shutdown,
.rbsbits = wp_tdmv_rbsbits,
.maint = wp_tdmv_maint,
.open = wp_tdmv_open,
.close = wp_tdmv_close,
.ioctl = wp_tdmv_ioctl,
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN) && defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL)
.hdlc_hard_xmit = wp_tdmv_tx_hdlc_hard,
#endif
#if 0
.dacs = ,
#endif
.echocan_create = wp_tdmv_hwec_create,
};
#endif
#ifdef DAHDI_22
/*
*******************************************************************************
@ -703,7 +727,8 @@ static int wp_tdmv_sigctrl(sdla_t* card, wp_tdmv_softc_t *wp, int channel, int s
}else if (status == WP_TDMV_DISABLE && !IS_TDMV_RBS_READY(wp)){
return 0;
}
DEBUG_TDMV("%s: %s signalling mode for all channels!\n",
DEBUG_EVENT("%s: %s signalling mode for all channels!\n",
wp->devname,
(status==WP_TDMV_ENABLE)?"Enable":"Disable");
@ -1131,6 +1156,13 @@ static int wp_tdmv_software_init(wan_tdmv_t *wan_tdmv)
sprintf(wp->span.name, "WPT1/%d", wp->num);
}
sprintf(wp->span.desc, "%s card %d", wp->devname, wp->num);
#if defined(DAHDI_24)
wp->span.ops = &wp_tdm_span_ops;
#else
wp->span.pvt = wp;
wp->span.spanconfig = wp_tdmv_spanconfig;
wp->span.chanconfig = wp_tdmv_chanconfig;
wp->span.startup = wp_tdmv_startup;
@ -1139,18 +1171,8 @@ static int wp_tdmv_software_init(wan_tdmv_t *wan_tdmv)
wp->span.maint = wp_tdmv_maint;
wp->span.open = wp_tdmv_open;
wp->span.close = wp_tdmv_close;
wp->span.channels = wp->max_timeslots;
#ifdef DAHDI_ISSUES
#ifdef DAHDI_23
wp->span.owner = THIS_MODULE;
#endif
wp->span.chans = wp->chans_ptrs;
#else
wp->span.chans = wp->chans;
#endif
wp->span.flags = ZT_FLAG_RBS;
wp->span.ioctl = wp_tdmv_ioctl;
/* Set this pointer only if card has hw echo canceller module */
if (wp->hwec == WANOPT_YES && card->wandev.ec_dev){
/* Initialize it only if HWEC option is enabled */
@ -1160,6 +1182,11 @@ static int wp_tdmv_software_init(wan_tdmv_t *wan_tdmv)
wp->span.echocan = wp_tdmv_hwec;
#endif
}
#if defined(DAHDI_23)
wp->span.owner = THIS_MODULE;
#endif
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN) && defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL)
if (wp->dchan_map){
DEBUG_EVENT("%s: Enable Zaptel HW DCHAN interface\n",
@ -1167,19 +1194,35 @@ static int wp_tdmv_software_init(wan_tdmv_t *wan_tdmv)
wp->span.hdlc_hard_xmit = wp_tdmv_tx_hdlc_hard;
}
#endif
wp->span.pvt = wp;
#endif /* NON DAHDI_24 */
#ifdef DAHDI_ISSUES
wp->span.chans = wp->chans_ptrs;
#else
wp->span.chans = wp->chans;
#endif
wp->span.flags = ZT_FLAG_RBS;
wp->span.channels = wp->max_timeslots;
if (wp->ise1){
wp->span.deflaw = ZT_LAW_ALAW;
card->fe.fe_cfg.tdmv_law = WAN_TDMV_ALAW;
wp->span.linecompat = ZT_CONFIG_HDB3 | ZT_CONFIG_CCS | ZT_CONFIG_CRC4;
wp->span.spantype="E1";
}else{
wp->span.deflaw = ZT_LAW_MULAW;
card->fe.fe_cfg.tdmv_law = WAN_TDMV_MULAW;
wp->span.linecompat = ZT_CONFIG_AMI | ZT_CONFIG_B8ZS | ZT_CONFIG_D4 | ZT_CONFIG_ESF;
wp->span.spantype="T1";
}
#if !defined(__FreeBSD__) && !defined(__OpenBSD__)
init_waitqueue_head(&wp->span.maintq);
#endif
for (x=0;x<wp->span.channels;x++) {
sprintf(wp->chans[x].name, "%s/%d", wp->span.name, x+1);
if (wan_test_bit(x,&wp->timeslot_map)){
@ -1278,11 +1321,14 @@ static int wp_tdmv_startup(struct zt_span *span)
{
wp_tdmv_softc_t* wp = NULL;
int i;
sdla_t *card = NULL;
WAN_ASSERT2(span == NULL, -ENODEV);
WAN_ASSERT2(span->pvt == NULL, -ENODEV);
wp = span->pvt;
wp = WP_PRIV_FROM_SPAN(span, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
/* initialize the start value for the entire chunk of last ec buffer */
for(i = 0; i < span->channels; i++){
#ifdef DAHDI_ISSUES
@ -1296,6 +1342,21 @@ static int wp_tdmv_startup(struct zt_span *span)
memset(wp->ec_chunk2[i],
ZT_LIN2X(0,&span->chans[i]),ZT_CHUNKSIZE);
#endif
/* Disable hwec on signalling channel */
if (wp->hwec == WANOPT_YES && card->wandev.ec_dev && card->wandev.ec_enable) {
#ifdef DAHDI_ISSUES
struct zt_chan *chan = span->chans[i];
#else
struct zt_chan *chan = &span->chans[i];
#endif
unsigned int hdlcsig=chan->sig&~(ZT_SIG_CLEAR);
if (IS_CHAN_HARDHDLC(chan) || hdlcsig & ZT_SIG_HDLCRAW || hdlcsig & ZT_SIG_HDLCFCS) {
DEBUG_TEST("%s: Disabling EC Chan=%i, sigtype 0x%03X, HDLCRAW=0x%X FCS=0x%X\n",
card->devname, chan->chanpos, hdlcsig, ZT_SIG_HDLCRAW, ZT_SIG_HDLCFCS);
card->wandev.ec_enable(card, 0, chan->chanpos);
}
}
}
@ -1304,6 +1365,7 @@ static int wp_tdmv_startup(struct zt_span *span)
span->flags |= ZT_FLAG_RUNNING;
}
wan_set_bit(WP_TDMV_RUNNING, &wp->flags);
return 0;
}
@ -1318,8 +1380,9 @@ static int wp_tdmv_shutdown(struct zt_span *span)
wan_smp_flag_t flags;
WAN_ASSERT2(span == NULL, -ENODEV);
WAN_ASSERT2(span->pvt == NULL, -ENODEV);
wp = span->pvt;
wp = WP_PRIV_FROM_SPAN(span, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
wan_clear_bit(WP_TDMV_RUNNING, &wp->flags);
wan_spin_lock_irq(&wp->lockirq, &flags);
span->flags &= ~ZT_FLAG_RUNNING;
@ -1334,14 +1397,16 @@ static int wp_tdmv_shutdown(struct zt_span *span)
*/
static int wp_tdmv_maint(struct zt_span *span, int cmd)
{
wp_tdmv_softc_t *wp = span->pvt;
sdla_t *card = wp->card;
wp_tdmv_softc_t *wp;
sdla_t *card;
int res = 0;
wan_smp_flag_t flags;
WAN_ASSERT2(span == NULL, -ENODEV);
WAN_ASSERT2(span->pvt == NULL, -ENODEV);
wp = span->pvt;
wp = WP_PRIV_FROM_SPAN(span, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
card = wp->card;
wan_spin_lock_irq(&wp->lockirq, &flags);
if (wp->ise1) {
#if 0
@ -1509,14 +1574,13 @@ static int wp_tdmv_chanconfig(struct zt_chan *chan, int sigtype)
{
sdla_t *card;
wp_tdmv_softc_t *wp = NULL;
int hdlcsig = sigtype & ~(ZT_SIG_CLEAR);
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wp = chan->pvt;
wp = WP_PRIV_FROM_CHAN(chan, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
card = (sdla_t*)wp->card;
DEBUG_TDMV("%s: Configuring chan %d..\n", wp->devname, chan->chanpos);
if (chan->span->flags & ZT_FLAG_RUNNING){
wp_tdmv_set_clear(wp);
}
@ -1533,14 +1597,6 @@ static int wp_tdmv_chanconfig(struct zt_chan *chan, int sigtype)
wp_tdmv_sigctrl(card, wp, chan->chanpos, WP_TDMV_ENABLE);
}
/* Disable hwec on signalling channel */
if (wp->hwec == WANOPT_YES && card->wandev.ec_dev && card->wandev.ec_enable) {
if (IS_CHAN_HARDHDLC(chan) || hdlcsig & ZT_SIG_HDLCRAW || hdlcsig & ZT_SIG_HDLCFCS) {
DEBUG_TEST("%s: Disabling EC Chan=%i, sigtype 0x%03X, HDLCRAW=0x%X FCS=0x%X\n",
card->devname, chan->chanpos, sigtype, ZT_SIG_HDLCRAW, ZT_SIG_HDLCFCS);
card->wandev.ec_enable(card, 0, chan->chanpos);
}
}
return 0;
}
@ -1557,8 +1613,10 @@ static int wp_tdmv_spanconfig(struct zt_span *span, struct zt_lineconfig *lc)
wan_smp_flag_t smp_flags;
WAN_ASSERT2(span == NULL, -ENODEV);
WAN_ASSERT2(span->pvt == NULL, -ENODEV);
wp = span->pvt;
wp = WP_PRIV_FROM_SPAN(span, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
card = (sdla_t*)wp->card;
DEBUG_TDMV("%s: Configuring span device..\n", wp->devname);
switch(wp->lcode){
@ -1683,7 +1741,9 @@ static int wp_tdmv_rbsbits(struct zt_chan *chan, int bits)
/* Byte offset */
WAN_ASSERT2(chan == NULL, 0);
if ((wp = chan->pvt) == NULL) return 0;
wp = WP_PRIV_FROM_CHAN(chan, wp_tdmv_softc_t);
WAN_ASSERT2(wp == NULL, -ENODEV);
WAN_ASSERT2(wp->card == NULL, 0);
card = (sdla_t*)wp->card;
if (!wan_test_bit(chan->chanpos-1, &wp->timeslot_map)){
@ -2141,6 +2201,10 @@ static int wp_tdmv_hwec_create(struct dahdi_chan *chan,
wp = chan->pvt;
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
if (wp->hwec != WANOPT_YES || !card->wandev.ec_dev){
return err;
}
*ec = &wp->ec[chan->chanpos - 1];
(*ec)->ops = &wp_tdmv_ec_ops;
@ -2148,6 +2212,7 @@ static int wp_tdmv_hwec_create(struct dahdi_chan *chan,
wan_set_bit((chan->chanpos - 1), &card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wp, chan->chanpos-1);
if (card->wandev.ec_enable){
DEBUG_TDMV("[TDMV] %s: %s HW echo canceller on channel %d\n",
@ -2188,6 +2253,10 @@ static void wp_tdmv_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_stat
if(wp->card == NULL) return;
card = wp->card;
if (wp->hwec != WANOPT_YES || !card->wandev.ec_dev){
return;
}
wan_clear_bit(chan->chanpos-1, &card->wandev.rtp_tap_call_map);
if (card->wandev.ec_enable) {
@ -2755,7 +2824,18 @@ static int wp_tdmv_span_buf_rotate(void *pcard, u32 buf_sz, unsigned long mask,
wan_spin_unlock(&wp->chans[x].lock,&flag);
#if defined(__LINUX__)
if (card->u.aft.tdm_rx_dma[x]) {
wan_dma_descr_t *dma_descr = card->u.aft.tdm_rx_dma[x];
card->hw_iface.busdma_sync(card->hw, dma_descr, 1, 1, PCI_DMA_FROMDEVICE);
}
if (card->u.aft.tdm_tx_dma[x]) {
wan_dma_descr_t *dma_descr = card->u.aft.tdm_tx_dma[x];
card->hw_iface.busdma_sync(card->hw, dma_descr, 1, 1, PCI_DMA_TODEVICE);
}
prefetch(wp->chans[x].readchunk);
prefetch(wp->chans[x].writechunk);
#endif

View File

@ -87,9 +87,12 @@ void* sdla_tdmv_dummy_register(void)
#endif
wpd->span.channels = 0; /* no channels */
wpd->span.deflaw = ZT_LAW_MULAW;
#ifndef DAHDI_24
wpd->span.pvt = wpd;
wpd->chan.pvt = wpd;
#endif
if (zt_register(&wpd->span, 0)) {
DEBUG_EVENT( "Failed to register Zaptel span (%s)!\n",__FUNCTION__);
wan_free(wpd);

View File

@ -201,6 +201,15 @@ static void wp_usb_tdmv_remora_tone (void* card_id, wan_event_t *event);
extern int wp_init_proslic(sdla_fe_t *fe, int mod_no, int fast, int sane);
extern int wp_init_voicedaa(sdla_fe_t *fe, int mod_no, int fast, int sane);
static int wp_remora_zap_open(struct zt_chan *chan);
static int wp_remora_zap_close(struct zt_chan *chan);
static int wp_remora_zap_hooksig(struct zt_chan *chan, zt_txsig_t txsig);
static int wp_remora_zap_watchdog(struct zt_span *span, int event);
#if defined(__FreeBSD__) || defined(__OpenBSD__)
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, caddr_t data);
#else
static int wp_remora_zap_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long data);
#endif
#ifdef DAHDI_22
static int wp_usb_tdmv_remora_hwec_create(struct dahdi_chan *chan,
@ -209,7 +218,27 @@ static int wp_usb_tdmv_remora_hwec_create(struct dahdi_chan *chan,
struct dahdi_echocan_state **ec);
static void wp_usb_tdmv_remora_hwec_free(struct dahdi_chan *chan,
struct dahdi_echocan_state *ec);
#endif
#endif
#ifdef DAHDI_24
static const struct dahdi_span_ops wp_tdm_span_ops = {
.owner = THIS_MODULE,
.open = wp_remora_zap_open,
.close = wp_remora_zap_close,
.ioctl = wp_remora_zap_ioctl,
.hooksig = wp_remora_zap_hooksig,
.watchdog = wp_remora_zap_watchdog,
#if 0
/* FIXME: Add native bridging */
.dacs = ,
#endif
.echocan_create = wp_usb_tdmv_remora_hwec_create,
};
#endif
#ifdef DAHDI_22
/*
@ -1233,19 +1262,23 @@ static int wp_usb_tdmv_remora_software_init(wan_tdmv_t *wan_tdmv)
num++;
}
}
wr->span.pvt = wr;
#ifdef DAHDI_ISSUES
wr->span.chans = wr->chans_ptrs;
#ifdef DAHDI_24
wr->span.ops = &wp_tdm_span_ops;
#else
wr->span.chans = wr->chans;
wr->span.pvt = wr;
#if defined(DAHDI_23)
wr->span.owner = THIS_MODULE;
#endif
wr->span.channels = num/*wr->max_timeslots*/;
wr->span.hooksig = wp_remora_zap_hooksig;
wr->span.open = wp_remora_zap_open;
wr->span.close = wp_remora_zap_close;
wr->span.flags = ZT_FLAG_RBS;
wr->span.ioctl = wp_remora_zap_ioctl;
wr->span.watchdog = wp_remora_zap_watchdog;
/* Set this pointer only if card has hw echo canceller module */
if (wr->hwec == WANOPT_YES && card->wandev.ec_dev){
#ifdef DAHDI_22
@ -1254,6 +1287,20 @@ static int wp_usb_tdmv_remora_software_init(wan_tdmv_t *wan_tdmv)
wr->span.echocan = wp_remora_zap_hwec;
#endif
}
#endif
#ifdef DAHDI_ISSUES
wr->span.chans = wr->chans_ptrs;
#else
wr->span.chans = wr->chans;
#endif
wr->span.flags = ZT_FLAG_RBS;
wr->span.channels = num/*wr->max_timeslots*/;
#if defined(__LINUX__)
init_waitqueue_head(&wr->span.maintq);
#endif

View File

@ -2434,6 +2434,12 @@ static void disable_comm (sdla_t *card)
wan_spin_unlock_irq(&card->wandev.lock,&flags);
/* Release front end resources only after all interrupts and tasks have been shut down */
if (card->wandev.fe_iface.post_unconfig) {
card->wandev.fe_iface.post_unconfig(&card->fe);
}
WP_DELAY(10);
xilinx_chip_unconfigure(card);

View File

@ -7959,7 +7959,7 @@ static int sdla_memory_map(sdlahw_t* hw)
}
#if defined(__LINUX__) && defined(DMA_32BIT_MASK)
if((err = pci_set_dma_mask(hwcard->u_pci.pci_dev, DMA_32BIT_MASK))) {
if((err = pci_set_dma_mask(hwcard->u_pci.pci_dev, DMA_BIT_MASK(32)))) {
DEBUG_ERROR("%s: Error: No usable DMA configuration, aborting.\n",
hw->devname);
err = -EINVAL;
@ -10407,18 +10407,29 @@ sdla_busdma_map(void *phw, wan_dma_descr_t *dma_descr, void *buf, int buflen, in
}
#elif defined(__LINUX__)
dma_descr->dma_offset = 0;
dma_descr->dma_addr =
cpu_to_le32(pci_map_single(hwcard->u_pci.pci_dev,buf,map_len,dir));
if (dma_descr->dma_addr & (dma_descr->alignment-1)){
dma_descr->dma_virt = buf;
/* NC: We must align the virtual address first before we
map it to physical. */
if (dma_descr->alignment &&
(unsigned long)dma_descr->dma_virt & (dma_descr->alignment-1)){
dma_descr->dma_offset =
dma_descr->alignment -
(dma_descr->dma_addr & (dma_descr->alignment-1));
dma_descr->dma_virt = buf + dma_descr->dma_offset;
dma_descr->dma_addr += dma_descr->dma_offset;
}else{
dma_descr->dma_virt = buf;
dma_descr->dma_offset = 0;
dma_descr->alignment -
((unsigned long)dma_descr->dma_virt & (dma_descr->alignment-1));
dma_descr->dma_virt = (u8*)dma_descr->dma_virt + dma_descr->dma_offset;
map_len-=dma_descr->dma_offset;
}
dma_descr->dma_addr =
cpu_to_le32(pci_map_single(hwcard->u_pci.pci_dev,dma_descr->dma_virt,map_len,dir));
if (dma_descr->dma_addr & (dma_descr->alignment-1)){
DEBUG_ERROR("Critical Error: DMA ADDR is not in alignment even though virtual is! v=%p p=%08X\n",
dma_descr->dma_virt,dma_descr->dma_addr);
}
#elif defined(__OpenBSD__)
dma_descr->dma_addr = virt_to_phys(buf);
if (dma_descr->dma_addr & (dma_descr->alignment-1)){
@ -10490,7 +10501,6 @@ static void sdla_busdma_unmap(void *phw, wan_dma_descr_t *dma_descr, int dir)
}
#elif defined(__LINUX__)
if (dma_descr->dma_addr){
dma_descr->dma_addr -= dma_descr->dma_offset;
pci_unmap_single( hwcard->u_pci.pci_dev,
dma_descr->dma_addr,
dma_descr->dma_map_len,
@ -10516,13 +10526,21 @@ static void sdla_busdma_unmap(void *phw, wan_dma_descr_t *dma_descr, int dir)
static void
sdla_busdma_sync(void *phw, wan_dma_descr_t *dma_descr, int ndescr, int single, int dir)
{
sdlahw_t *hw = (sdlahw_t*)phw;
#if defined(__FreeBSD__)
int cnt = 0;
#endif
sdlahw_t *hw = (sdlahw_t*)phw;
sdlahw_card_t *hwcard;
sdlahw_cpu_t *hwcpu;
WAN_ASSERT_VOID(hw == NULL);
SDLA_MAGIC_VOID(hw);
WAN_ASSERT_VOID(hw->hwcpu == NULL);
hwcpu = hw->hwcpu;
WAN_ASSERT_VOID(hwcpu->hwcard == NULL);
hwcard = hwcpu->hwcard;
if (!wan_test_bit(SDLA_DMA_FLAG_READY, &dma_descr->flag)){
DEBUG_DMA("%s: Internal Error: %s:%d: DMA is not ready!\n",
hw->devname, __FUNCTION__,__LINE__);
@ -10534,7 +10552,15 @@ sdla_busdma_sync(void *phw, wan_dma_descr_t *dma_descr, int ndescr, int single,
if (single) break;
dma_descr++;
}
#elif defined(__LINUX__)
if (dir == PCI_DMA_TODEVICE) {
pci_dma_sync_single_for_device(hwcard->u_pci.pci_dev, dma_descr->dma_addr,
dma_descr->dma_map_len, dir);
} else {
pci_dma_sync_single_for_cpu(hwcard->u_pci.pci_dev, dma_descr->dma_addr,
dma_descr->dma_map_len, dir);
}
#elif defined(__OpenBSD__)
#elif defined(__WINDOWS__)
#else

View File

@ -60,7 +60,14 @@
#define WP_TDM_MAX_RX_Q_LEN 10
#define WP_TDM_MAX_TX_Q_LEN 5
#define WP_TDM_MAX_HDLC_TX_Q_LEN 17
#if defined(__WINDOWS__)
//davidr: v6.0.31.1
#define WP_TDM_MAX_EVENT_Q_LEN 50
#else
#define WP_TDM_MAX_EVENT_Q_LEN 200
#endif
#define WP_TDM_MAX_CTRL_EVENT_Q_LEN 2000 /* 500 channels * 40 events (At same time) */
#define WP_TDM_MAX_RX_FREE_Q_LEN 10
@ -680,11 +687,7 @@ int wanpipe_tdm_api_reg(wanpipe_tdm_api_dev_t *tdm_api)
}
if (WPTDM_CHAN_OP_MODE(tdm_api)) {
#if 0
tdm_api->cfg.hw_mtu_mru = 8;
tdm_api->cfg.usr_period = 10;
tdm_api->cfg.usr_mtu_mru = tdm_api->cfg.usr_period*tdm_api->cfg.hw_mtu_mru;
#endif
tdm_api->cfg.rx_queue_sz = WP_TDM_MAX_RX_Q_LEN;
tdm_api->cfg.tx_queue_sz = WP_TDM_MAX_TX_Q_LEN;
tdm_api->tx_channelized =1;
@ -724,8 +727,8 @@ int wanpipe_tdm_api_reg(wanpipe_tdm_api_dev_t *tdm_api)
sprintf(tmp_name,"wanpipe%d_if%d",tdm_api->tdm_span,tdm_api->tdm_chan);
DEBUG_TDMAPI("%s: Configuring TDM API NAME=%s Qlen=%i TS=%i\n",
card->devname,tmp_name, tdm_api->cfg.tx_queue_sz, tdm_api->timeslots);
DEBUG_TDMAPI("%s: Configuring TDM API NAME=%s Qlen=%i TS=%i MTU=%i\n",
card->devname,tmp_name, tdm_api->cfg.tx_queue_sz, tdm_api->timeslots,tdm_api->mtu_mru);
/* Initialize Event Callback functions */
card->wandev.event_callback.rbsbits = NULL; /*wp_tdmapi_rbsbits;*/
@ -871,6 +874,7 @@ tdm_api_reg_error_exit:
return err;
}
int wanpipe_tdm_api_unreg(wanpipe_tdm_api_dev_t *tdm_api)
{
sdla_t *card = tdm_api->card;
@ -1280,7 +1284,7 @@ static int wp_tdmapi_read_msg(void *obj , netskb_t **skb_ptr, wp_api_hdr_t *hdr,
if (count < (int)(wan_skb_len(skb)) ||
wan_skb_len(skb) < sizeof(wp_api_hdr_t)){
DEBUG_ERROR("%s:%d User API Error: User Rx Len=%i < Driver Rx Len=%i (hdr=%i). User API must increase expected rx lenght!\n",
DEBUG_ERROR("%s:%d User API Error: User Rx Len=%i < Driver Rx Len=%i (hdr=%i). User API must increase expected rx length!\n",
__FUNCTION__,__LINE__,count,wan_skb_len(skb),sizeof(wp_api_hdr_t));
wan_skb_free(skb);
hdr->wp_api_hdr_operation_status = SANG_STATUS_BUFFER_TOO_SMALL;
@ -2165,6 +2169,14 @@ static int wanpipe_tdm_api_ioctl_handle_tdm_api_cmd(wanpipe_tdm_api_dev_t *tdm_a
}
break;
case WP_API_CMD_GET_HW_EC_PERSIST:
if (card->hwec_conf.persist_disable) {
usr_tdm_api.hw_ec = WANOPT_NO;
} else {
usr_tdm_api.hw_ec = WANOPT_YES;
}
break;
case WP_API_CMD_GET_HW_EC_CHAN:
if (wan_test_bit(channel, &card->wandev.fe_ec_map)) {
usr_tdm_api.hw_ec = WANOPT_YES;
@ -3258,11 +3270,10 @@ static int rotate_debug[32];
#endif
int wanpipe_tdm_api_span_rx_tx(sdla_t *card, wanpipe_tdm_api_span_t *tdm_span, u32 buf_sz, unsigned long mask, int circ_buf_len)
{
int i,tidx;
int i,l_ch,tidx;
wanpipe_tdm_api_dev_t *tdm_api;
unsigned int rx_offset, tx_offset;
void *ptr;
if (!tdm_span || !card) {
return -ENODEV;
@ -3281,6 +3292,8 @@ int wanpipe_tdm_api_span_rx_tx(sdla_t *card, wanpipe_tdm_api_span_t *tdm_span, u
} else {
tidx=i-1;
}
l_ch=i-1;
#ifdef AFT_TDM_ROTATE_DEBUG
if (1) {
@ -3330,11 +3343,7 @@ int wanpipe_tdm_api_span_rx_tx(sdla_t *card, wanpipe_tdm_api_span_t *tdm_span, u
continue;
}
if (!wan_test_bit(0,&tdm_api->used)) {
/* Always use 'cfg.idle_flag' because it may be it was set by WP_API_CMD_SET_IDLE_FLAG */
memset(tdm_api->tx_buf,tdm_api->cfg.idle_flag,tdm_api->tx_buf_len);
continue;
}
#if 0
if (tdm_api->tdm_span == 5 && tdm_api->tdm_chan == 15) {
static unsigned char sync=0;
@ -3352,9 +3361,26 @@ int wanpipe_tdm_api_span_rx_tx(sdla_t *card, wanpipe_tdm_api_span_t *tdm_span, u
#endif
#if defined(__LINUX__)
if (card->u.aft.tdm_rx_dma[l_ch]) {
wan_dma_descr_t *dma_descr = card->u.aft.tdm_rx_dma[l_ch];
card->hw_iface.busdma_sync(card->hw, dma_descr, 1, 1, PCI_DMA_FROMDEVICE);
}
if (card->u.aft.tdm_tx_dma[l_ch]) {
wan_dma_descr_t *dma_descr = card->u.aft.tdm_tx_dma[l_ch];
card->hw_iface.busdma_sync(card->hw, dma_descr, 1, 1, PCI_DMA_TODEVICE);
}
prefetch(tdm_api->rx_buf);
prefetch(tdm_api->tx_buf);
#endif
if (!wan_test_bit(0,&tdm_api->used)) {
/* Always use 'cfg.idle_flag' because it may be it was set by WP_API_CMD_SET_IDLE_FLAG */
memset(tdm_api->tx_buf,tdm_api->cfg.idle_flag,tdm_api->tx_buf_len);
continue;
}
#if 0
/* NC: Enable rtp tap for api */
@ -3390,7 +3416,7 @@ int wanpipe_tdm_api_span_rx_tx(sdla_t *card, wanpipe_tdm_api_span_t *tdm_span, u
#endif
}
}
return 0;
}

View File

@ -1,2 +1,2 @@
/root/3.5/wanpipe/patches/kdrivers/wanec/wanec.ko
/root/3.5/wanpipe/patches/kdrivers/wanec/wanec_iface.o /root/3.5/wanpipe/patches/kdrivers/wanec/wanec_cmd.o /root/3.5/wanpipe/patches/kdrivers/wanec/wanec_utils.o /root/3.5/wanpipe/patches/kdrivers/wanec/wanec_dev.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/bt/octapi_bt0.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/largmath/octapi_largmath.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/llman/octapi_llman.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi/oct6100_mask_interrupts.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_events.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o /root/3.5/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_user.o
/root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec.ko
/root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec_iface.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec_cmd.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec_utils.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec_dev.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/apilib/bt/octapi_bt0.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/apilib/largmath/octapi_largmath.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/apilib/llman/octapi_llman.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi/oct6100_mask_interrupts.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_events.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_user.o

View File

@ -0,0 +1 @@
cmd_/root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec.ko := ld -m elf_i386 -m elf_i386 -r -o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec.ko /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec.o /root/3.5/wanpipe-3.5.15.9/patches/kdrivers/wanec/wanec.mod.o

View File

@ -1 +0,0 @@
core_marker_format vmlinux name %s format %s

View File

@ -0,0 +1,72 @@
0xf7567a8a wanpipe_api_buf_check /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xf27fa082 wanpipe_lip_connect /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x7ff2cd30 wanpipe_cdev_tdm_create /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xe656360e sdladrv_hw_mode /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x53ece134 wanpipe_cdev_tx_wake /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x1df80ee2 wanpipe_cdev_rx_wake /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x03865603 sdla_register /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x57e6ed60 wanpipe_api_sock_rx /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x0a7a356f wanpipe_cdev_event_wake /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xecace35b wanrouter_proc_add_interface /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x59fb2682 sdla_hw_probe /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x9a7a6658 wanpipe_lip_rx /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x8f31cdeb proc_router /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x77da8dee register_wanec_iface /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x1036a1ab bind_api_listen_to_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x524e2f20 register_wanpipe_fw_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x7c2dc516 register_wan_device /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x45866c4c wanrouter_proc_add_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x0deeaedb wp_logger_repeating_message_filter /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x618aefa9 wanpipe_cdev_logger_create /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xf7f5afa4 wanpipe_ec_event_ctrl /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x6201c669 wp_logger_level_fe /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x7cd3c2bc wanpipe_ec_poll /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x9e48e1bc wanrouter_proc_delete_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x6dd4c4d6 wanpipe_cdev_free /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xdfd0f6c6 sdla_get_hw_adptr_cnt /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x6ad0c191 wp_logger_level_bri /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xc2143791 wanpipe_ec_register /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xc288bfdc wanpipe_cdev_cfg_ctrl_create /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xb8da2b4c wanpipe_global_cdev_free /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x47ff4922 wanpipe_cdev_tdm_ctrl_create /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xaa81d611 wanpipe_global_cdev_init /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x02364d27 wanrouter_encapsulate /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x136b2537 wan_skb_destructor /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x3f234f3e wp_logger_input /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xfa083e32 register_wanpipe_api_socket /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x4de93988 sdla_get_hw_usb_adptr_cnt /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xade2d0d7 sdla_get_hw_probe /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xd90451b0 wanpipe_cdev_timer_create /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x0f19df36 sdladrv_callback /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xbd4a533a sdla_get_hwinfo /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xef48df91 proc_add_line /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x22a2999f sdla_unregister /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x85c05713 wanrouter_type_trans /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xfd74fadb wan_set_ip_address /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xc98aebe6 wan_get_ip_address /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x7d68ed07 protocol_disconnected /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xc5224c15 bind_api_to_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x38eb6851 unregister_wanpipe_api_socket /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xaac011d2 wanpipe_lip_kick /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x3b604364 unbind_api_listen_from_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x6df6c4e0 wan_run_wanrouter /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x05487ec8 wp_logger_level_default /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xeb418feb sdla_hw_bridge_probe /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xea9f3201 gl_usb_rw_fast /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x04df932b unregister_wanec_iface /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x562d2ade wanpipe_ec_isr /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x13405f6b unregister_wanpipe_fw_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xe72f44cb wanpipe_api_listen_rx /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x8bab76f8 wp_logger_level_tdmapi /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0x5b7efb57 wanpipe_api_poll_wake /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x651a840a wan_add_gateway /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x2f21a326 unregister_wanpipe_lip_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x6719218e wanrouter_proc_delete_interface /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x0ebe03d1 unregister_wan_device /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x22317d82 wanpipe_lip_disconnect /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x74a9ab7b wp_logger_level_te1 /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xed6a48f7 protocol_connected /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x53350bd4 wanpipe_ec_unregister /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0xc12eb167 wp_logger_level_hwec /root/3.5/wanpipe-3.5.15.9/kdrvtmp/sdladrv EXPORT_SYMBOL
0xc76eb4f8 register_wanpipe_lip_protocol /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL
0x00525339 protocol_connecting /root/3.5/wanpipe-3.5.15.9/kdrvtmp/wanrouter EXPORT_SYMBOL

View File

@ -11,54 +11,49 @@ __attribute__((section(".gnu.linkonce.this_module"))) = {
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
static const struct modversion_info ____versions[]
__used
__attribute_used__
__attribute__((section("__versions"))) = {
{ 0x4d033975, "module_layout" },
{ 0x89e24b9c, "struct_module" },
{ 0x3f234f3e, "wp_logger_input" },
{ 0x12da5bb2, "__kmalloc" },
{ 0x7ee91c1d, "_spin_trylock" },
{ 0x7e3f931f, "_spin_trylock" },
{ 0xec7bc0d, "__mod_timer" },
{ 0xd6ee688f, "vmalloc" },
{ 0xc12eb167, "wp_logger_level_hwec" },
{ 0xb61f0f80, "del_timer" },
{ 0xd0d8621b, "strlen" },
{ 0x5113d3a4, "malloc_sizes" },
{ 0x973873ab, "_spin_lock" },
{ 0x4661e311, "__tracepoint_kmalloc" },
{ 0x66351462, "device_destroy" },
{ 0x4827a016, "del_timer" },
{ 0xf26c4b72, "class_device_destroy" },
{ 0xb5513e49, "class_device_create" },
{ 0xab978df6, "malloc_sizes" },
{ 0x1bcd461f, "_spin_lock" },
{ 0xeae3dfd6, "__const_udelay" },
{ 0xb1ca2692, "init_timer_key" },
{ 0x999e8297, "vfree" },
{ 0x3c2c5af5, "sprintf" },
{ 0x2fd1d81c, "vfree" },
{ 0x1d26aa98, "sprintf" },
{ 0x7d11c268, "jiffies" },
{ 0xe2d5255a, "strcmp" },
{ 0x5487ec8, "wp_logger_level_default" },
{ 0x77da8dee, "register_wanec_iface" },
{ 0x8d3894f2, "_ctype" },
{ 0x5152e605, "memcmp" },
{ 0x2da418b5, "copy_to_user" },
{ 0xc7fbd1f5, "device_create" },
{ 0xeba165b4, "add_timer" },
{ 0x6dcedb09, "kmem_cache_alloc" },
{ 0x2e1de6c1, "class_create" },
{ 0x19070091, "kmem_cache_alloc" },
{ 0x4df932b, "unregister_wanec_iface" },
{ 0xdeeaedb, "wp_logger_repeating_message_filter" },
{ 0x181631b1, "register_chrdev" },
{ 0x4086729e, "register_chrdev" },
{ 0xd0b91f9b, "init_timer" },
{ 0xf6ebc03b, "net_ratelimit" },
{ 0x1d2e87c6, "do_gettimeofday" },
{ 0x72270e35, "do_gettimeofday" },
{ 0x37a0cba, "kfree" },
{ 0x2e60bace, "memcpy" },
{ 0x9ef749e2, "unregister_chrdev" },
{ 0xb4e817cd, "class_destroy" },
{ 0x12aacf5c, "__class_create" },
{ 0xc192d491, "unregister_chrdev" },
{ 0x4870cf59, "class_destroy" },
{ 0xf2a644fb, "copy_from_user" },
{ 0xe914e41e, "strcpy" },
};
static const char __module_depends[]
__used
__attribute_used__
__attribute__((section(".modinfo"))) =
"depends=sdladrv,wanrouter";

View File

@ -1,6 +1,6 @@
%define WANPIPE_VER wanpipe-modules
%define name %{WANPIPE_VER}
%define version 3.5.15
%define version 3.5.16
%define release 0
%define serial 1
%define MODULES_DIR /lib/modules
@ -51,7 +51,25 @@ echo "Wanpipe Modules located in %{MODULES_DIR}/%{KVERSION}"
%changelog
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.14
* Fri Sep 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.16
===================================================================
- Dahdi 2.4 Support
- Fixed BRI B500/B700 hwec enable on call start caused in 3.5.12 release.
- Bug fix in voice+data mixed mode where dchan could get stuck due to
dma overruns.
- Bug fix in tdmapi where excessive memory was allocated on pre-allocation buffers.
- Bug fix tdmapi defaults to 20ms chunk size instead of 10ms
- Bug fix broken support for A101/2 legacy EOL cards.
- New XEN Support
TDM Voice will now work properly on xen virtualized machines
- Fix for 64bit 8gig issues
- New rpmbuld spec files.
rpmbuild -tb wanpipe-3.5.16.tgz
rpmbuild -tb wanpipe-3.5.16.tgz --define 'with_dahdi 1' --define 'dahdi_dir /usr/src/dahdi'
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.15
===================================================================
- Fixed B600 and B601 warning messages introduced in 3.5.14

View File

@ -1,118 +0,0 @@
#
# spec file for package wanpipe (Version 2.3.4)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: wanpipe
BuildRequires: kernel-source kernel-syms module-init-tools udev
URL: http://www.sangoma.com
Summary: Sangoma Wanpipe Voice,TDM and Wan Drivers/Utilities
Version: 2.3.4
Release: 9
License: GNU General Public License (GPL)
Group: Productivity/Telephony/Utilities
PreReq: %insserv_prereq %fillup_prereq udev
PreReq: /usr/sbin/useradd
Excludearch: s390 s390x
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build
Source0: %name-%version-%release.tar.bz2
%define UTILS_DIR /usr/sbin
%define UTILS_LOCAL_DIR /usr/local/sbin
%define PROD_HOME /etc/wanpipe
%define WANCFG_LIBS_DIR /etc/wanpipe/lib
%define API_DIR /etc/wanpipe/api
%define DOCS_DIR /usr/share/doc/wanpipe
%define PROD wanrouter
%define MODULES_DIR /lib/modules
%define META_CONF %{PROD_HOME}/%{PROD}.rc
%define WAN_INTR_DIR %{PROD_HOME}/interfaces
%define WAN_CONF_DIR %{PROD_HOME}
%define PROD_CONF %{WAN_CONF_DIR}/wanpipe1.conf
%define START_SCRIPT S07%{PROD}
%define OLD_START S07router
%define STOP_SCRIPT K90%{PROD}
%define OLD_STOP K900router
%define ROUTER_RC %{META_CONF}
%define WANROUTER_STARTUP_SMPL %{PROD_HOME}/samples/wanrouter
%define WANROUTER_STARTUP /usr/sbin/wanrouter
%define NEW_IF_TYPE NO
%define PROD_INIT /usr/sbin/
%suse_kernel_module_package -p %_sourcedir/preamble kdump um iseries64 ppc64
%description
This package contains configuration files, header files, and setup
tools needed for the Sangoma wanpipe voice/TDM, Wan drivers.
See /usr/share/doc/packages/wanpipe/README for a list of supported
hardware.
Authors:
--------
Nenad Corbic <ncorbic@sangoma.com>
%package KMP
Summary: Sangoma Wanpipe Voice/TDM, WAN Drivers
Group: System/Kernel
%description KMP
This package contains the kernel modules of the Sangoma
Wanpipe Voice/TDM, Wan Drivers.
Authors:
--------
Nenad Corbic <ncorbic@sangoma.com>
%prep
%setup -q -a 1
%patch0 -p1
%patch1
%patch2
%patch3
%patch4 -p1
%build
make prereq all OPTFLAGS="%optflags"
for flavor in %flavors_to_build; do
./Setup install --silent --builddir=%buildroot --with-linux=/usr/src/linux-obj/%_target_cpu/$flavor --protocols=DEF
done
%install
%clean
rm -rf %buildroot
%pre
%post
%{?fillup_and_insserv:%fillup_and_insserv}
%{?run_ldconfig:%run_ldconfig}
%postun
%{?insserv_cleanup:%insserv_cleanup}
%preun
%{?stop_on_removal:%stop_on_removal zaptel}
%files
%defattr(-,root,root,-)
%doc README* ChangeLog
%{UTILS_DIR}
%{UTILS_LOCAL_DIR}
%{PROD_HOME}
%{DOCS_DIR}
%{MODULES_DIR}
%changelog

View File

@ -1,7 +1,7 @@
%define KERNEL_VERSION %{?kern_ver}
%define WANPIPE_VER wanpipe-util
%define name %{WANPIPE_VER}
%define version 3.5.15
%define version 3.5.16
%define release 0
%define serial 1
%define ETC_DIR /etc
@ -328,7 +328,25 @@ enable_smg_log;
%changelog
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.14
* Fri Sep 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.16
===================================================================
- Dahdi 2.4 Support
- Fixed BRI B500/B700 hwec enable on call start caused in 3.5.12 release.
- Bug fix in voice+data mixed mode where dchan could get stuck due to
dma overruns.
- Bug fix in tdmapi where excessive memory was allocated on pre-allocation buffers.
- Bug fix tdmapi defaults to 20ms chunk size instead of 10ms
- Bug fix broken support for A101/2 legacy EOL cards.
- New XEN Support
TDM Voice will now work properly on xen virtualized machines
- Fix for 64bit 8gig issues
- New rpmbuld spec files.
rpmbuild -tb wanpipe-3.5.16.tgz
rpmbuild -tb wanpipe-3.5.16.tgz --define 'with_dahdi 1' --define 'dahdi_dir /usr/src/dahdi'
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.15
===================================================================
- Fixed B600 and B601 warning messages introduced in 3.5.14

View File

@ -1,7 +1,7 @@
%define KERNEL_VERSION %{?kern_ver}
%define WANPIPE_VER wanpipe
%define name %{WANPIPE_VER}
%define version 3.5.15
%define version 3.5.16
%define release 0
%define serial 1
%define UTILS_DIR /usr/sbin
@ -255,7 +255,25 @@ install_init;
%changelog
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.14
* Fri Sep 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.16
===================================================================
- Dahdi 2.4 Support
- Fixed BRI B500/B700 hwec enable on call start caused in 3.5.12 release.
- Bug fix in voice+data mixed mode where dchan could get stuck due to
dma overruns.
- Bug fix in tdmapi where excessive memory was allocated on pre-allocation buffers.
- Bug fix tdmapi defaults to 20ms chunk size instead of 10ms
- Bug fix broken support for A101/2 legacy EOL cards.
- New XEN Support
TDM Voice will now work properly on xen virtualized machines
- Fix for 64bit 8gig issues
- New rpmbuld spec files.
rpmbuild -tb wanpipe-3.5.16.tgz
rpmbuild -tb wanpipe-3.5.16.tgz --define 'with_dahdi 1' --define 'dahdi_dir /usr/src/dahdi'
* Fri Aug 27 2010 Nenad Corbic <ncorbic@sangoma.com> - 3.5.15
===================================================================
- Fixed B600 and B601 warning messages introduced in 3.5.14

View File

@ -2208,7 +2208,7 @@ init_global_params()
{
if [ $OSYSTEM = "Linux" ]; then
ROUTER_VERSION=3.5.15
ROUTER_VERSION=3.5.16
IFCONFIG_LIST=ifconfig
MODULE_STAT=lsmod
WAN_DRIVERS="wanpipe"

View File

@ -1,5 +1,5 @@
#!/bin/sh
make CFLAGS=" -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I/usr/include/wanpipe -I/usr/src/linux-2.6.31/include -DMODULE -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -I/usr/src/dahdi" PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE -DCONFIG_PRODUCT_WANPIPE_FR -DCONFIG_PRODUCT_WANPIPE_CHDLC -DCONFIG_PRODUCT_WANPIPE_PPP -DCONFIG_PRODUCT_WANPIPE_X25 -DCONFIG_PRODUCT_WANPIPE_ADSL -DCONFIG_PRODUCT_WANPIPE_LIP_ATM -DCONFIG_PRODUCT_WANPIPE_ATM -DCONFIG_PRODUCT_WANPIPE_MULTPROT -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_CORE -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_AFT_56K -DCONFIG_PRODUCT_WANPIPE_AFT_RM -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW -DCONFIG_PRODUCT_WANPIPE_AFT_BRI -DCONFIG_PRODUCT_WANPIPE_AFT_SERIAL -DCONFIG_PRODUCT_WANPIPE_AFT_A600 -DCONFIG_PRODUCT_WANPIPE_AFT_B601 -DCONFIG_PRODUCT_WANPIPE_AFT_B800 -DCONFIG_PRODUCT_WANPIPE_AFT_A700 -DCONFIG_PRODUCT_WANPIPE_USB -DCONFIG_PRODUCT_WANPIPE_AFT_TE3 -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DDAHDI_ISSUES -DWANPIPE_USE_I_PRIVATE -DCONFIG_WANPIPE_HWEC "
make CFLAGS=" -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I/usr/include/wanpipe -I/lib/modules/2.6.18-194.11.1.el5/build/include -DMODULE -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -m32 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Wstrict-prototypes -Wundef -Werror-implicit-function-declaration -fno-delete-null-pointer-checks -fwrapv -Os -pipe -msoft-float -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -mtune=generic -mregparm=3 -ffreestanding -I/usr/include/wanpipe -I/lib/modules/2.6.18-194.11.1.el5/build/include/asm-i386/mach-generic -I/usr/include/wanpipe -I/lib/modules/2.6.18-194.11.1.el5/build/include/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -I/usr/src/dahdi" PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DDAHDI_ISSUES -DCONFIG_PRODUCT_WANPIPE_FR -DCONFIG_PRODUCT_WANPIPE_CHDLC -DCONFIG_PRODUCT_WANPIPE_PPP -DCONFIG_PRODUCT_WANPIPE_X25 -DCONFIG_PRODUCT_WANPIPE_ADSL -DCONFIG_PRODUCT_WANPIPE_LIP_ATM -DCONFIG_PRODUCT_WANPIPE_ATM -DCONFIG_PRODUCT_WANPIPE_MULTPROT -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_CORE -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_AFT_56K -DCONFIG_PRODUCT_WANPIPE_AFT_RM -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW -DCONFIG_PRODUCT_WANPIPE_AFT_BRI -DCONFIG_PRODUCT_WANPIPE_AFT_SERIAL -DCONFIG_PRODUCT_WANPIPE_AFT_A600 -DCONFIG_PRODUCT_WANPIPE_AFT_B601 -DCONFIG_PRODUCT_WANPIPE_AFT_B800 -DCONFIG_PRODUCT_WANPIPE_AFT_A700 -DCONFIG_PRODUCT_WANPIPE_USB -DCONFIG_PRODUCT_WANPIPE_AFT_TE3 -DWANPIPE_USE_I_PRIVATE -DCONFIG_WANPIPE_HWEC "

View File

@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 35
/svn/sangoma_mgd/!svn/ver/282/trunk
/svn/sangoma_mgd/!svn/ver/284/trunk
END
sigboost.h
K 25
@ -9,11 +9,11 @@ svn:wc:ra_dav:version-url
V 46
/svn/sangoma_mgd/!svn/ver/265/trunk/sigboost.h
END
sound.raw
switch_buffer.h
K 25
svn:wc:ra_dav:version-url
V 43
/svn/sangoma_mgd/!svn/ver/1/trunk/sound.raw
V 49
/svn/sangoma_mgd/!svn/ver/1/trunk/switch_buffer.h
END
sangoma_mgd.conf.sample
K 25
@ -21,11 +21,11 @@ svn:wc:ra_dav:version-url
V 59
/svn/sangoma_mgd/!svn/ver/253/trunk/sangoma_mgd.conf.sample
END
switch_buffer.h
sound.raw
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/1/trunk/switch_buffer.h
V 43
/svn/sangoma_mgd/!svn/ver/1/trunk/sound.raw
END
safe_sangoma
K 25
@ -39,23 +39,17 @@ svn:wc:ra_dav:version-url
V 48
/svn/sangoma_mgd/!svn/ver/1/trunk/callgettest.sh
END
smg_capabilities.h
K 25
svn:wc:ra_dav:version-url
V 54
/svn/sangoma_mgd/!svn/ver/186/trunk/smg_capabilities.h
END
ss7box
K 25
svn:wc:ra_dav:version-url
V 40
/svn/sangoma_mgd/!svn/ver/1/trunk/ss7box
END
re-sync.sh
smg_capabilities.h
K 25
svn:wc:ra_dav:version-url
V 45
/svn/sangoma_mgd/!svn/ver/20/trunk/re-sync.sh
V 54
/svn/sangoma_mgd/!svn/ver/186/trunk/smg_capabilities.h
END
call_signal.c
K 25
@ -63,24 +57,30 @@ svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/275/trunk/call_signal.c
END
re-sync.sh
K 25
svn:wc:ra_dav:version-url
V 45
/svn/sangoma_mgd/!svn/ver/20/trunk/re-sync.sh
END
sangoma_mgd_logger.c
K 25
svn:wc:ra_dav:version-url
V 56
/svn/sangoma_mgd/!svn/ver/189/trunk/sangoma_mgd_logger.c
END
sangoma_mgd.c
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/282/trunk/sangoma_mgd.c
END
woomera.conf
K 25
svn:wc:ra_dav:version-url
V 46
/svn/sangoma_mgd/!svn/ver/1/trunk/woomera.conf
END
sangoma_mgd.c
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/284/trunk/sangoma_mgd.c
END
call_signal.h
K 25
svn:wc:ra_dav:version-url
@ -145,7 +145,7 @@ smg_ctrl
K 25
svn:wc:ra_dav:version-url
V 44
/svn/sangoma_mgd/!svn/ver/278/trunk/smg_ctrl
/svn/sangoma_mgd/!svn/ver/283/trunk/smg_ctrl
END
switch_buffer.c
K 25

View File

@ -1,14 +1,14 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk
https://www.sangomapbx.com/svn/sangoma_mgd
2010-06-21T23:50:05.691425Z
282
2010-09-22T19:43:33.680100Z
284
ncorbic
@ -93,7 +93,7 @@ file
2009-08-25T20:41:34.000000Z
2010-05-27T17:25:04.000000Z
f20dab977386b2508903e24a307ca2d6
2007-09-21T20:53:51.260136Z
1
@ -289,10 +289,10 @@ file
2010-06-21T23:24:26.000000Z
9d9037aece4637004d1d8ea95d1a50a7
2010-06-21T23:50:05.691425Z
282
2010-09-22T18:15:14.000000Z
e036c2ad2938ac56202abcca8dafe730
2010-09-22T19:43:33.680100Z
284
ncorbic
woomera.conf
@ -362,10 +362,10 @@ file
2010-05-06T20:04:33.000000Z
a14a29f5626818cd593954c5288e967d
2010-04-24T00:03:23.938859Z
278
2010-09-22T18:15:27.000000Z
18b6087671c53307b19bfb1c8becafc0
2010-08-31T16:38:57.788045Z
283
davidy
has-props

View File

@ -9,6 +9,12 @@
*
* =============================================
*
* v1.72 Nenad Corbic <ncorbic@sangoma.com>
* Sep 22 2010
* Bug fix from 1.71, for BRI mode we must use the ec chip
* check not ec channel check since BRI mode starts in non persist
* state.
*
* v1.71 Nenad Corbic <ncorbic@sangoma.com>
* Jun 21 2010
* Added a hwec_chan_status check instead of hwec check.
@ -384,7 +390,7 @@ pthread_mutex_t g_smg_ip_bridge_lock;
#endif
#define SMG_VERSION "v1.71"
#define SMG_VERSION "v1.72"
/* enable early media */
#if 1
@ -436,7 +442,7 @@ static int drop_seq=0;
const char WELCOME_TEXT[] =
"================================================================================\n"
"Sangoma Media Gateway Daemon v1.71 \n"
"Sangoma Media Gateway Daemon v1.72 \n"
"\n"
"TDM Signal Media Gateway for Sangoma/Wanpipe Cards\n"
"Copyright 2005, 2006, 2007 \n"
@ -1475,6 +1481,8 @@ retry_loop:
#ifdef LIBSANGOMA_VERSION
#ifdef WP_API_FEATURE_EC_CHAN_STAT
/* Since we are in loop mode we want to make sure that hwec is disabled
before we start doing the loop test. */
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
#else
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
@ -1729,8 +1737,17 @@ media_retry:
#ifdef LIBSANGOMA_VERSION
#ifdef WP_API_FEATURE_EC_CHAN_STAT
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
#else
/* check if hwec is available */
if (tdmv_hwec_persist) {
/* For T1/E1 we run with ec on. If ec is off then it was meant to be off
thus use this as indication of whether hwec is on or off */
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
} else {
/* On BRI we run with ec off by default. Therefore we must check
for ec chip being enabled not the channel */
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
}
#else
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
#endif
if (ms->has_hwec < 0) {

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -p
cmd=$1;
sigd=$2;
xtraargs='';
@ -581,6 +581,13 @@ read_smg_conf
#Set sigd
if [ "$SANGOMA_PRID" = "YES" ]; then
sigd="sangoma_prid"
eval "echo $LD_LIBRARY_PATH | grep sangoma_prid > /dev/null 2>/dev/null"
if [ $? -ne 0 ];then
echo "Adding /usr/lib/sangoma_prid to library paths"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib/sangoma_prid"
else
echo "sangoma_prid libraries already in library paths"
fi
elif [ "$SANGOMA_BRID" = "YES" ]; then
sigd="sangoma_brid"
elif [ "$SANGOMA_SS7ISUP" = "YES" ]; then

View File

@ -0,0 +1,709 @@
#!/bin/bash -p
cmd=$1;
sigd=$2;
xtraargs='';
cnt=0;
max_retry=10;
use_syslog=1;
use_safe=0;
args=' ';
LOG=/var/log/sangoma_mgd.log
SIG_LOG=$LOG
PRI=0
BRI=0
SS7=0
PROD="smg_ctrl"
ulimit -n 65000
function usage()
{
echo " "
echo "Usage: smg_ctrl <command> <sigd> <options> "
echo
echo "command options:"
echo " "
echo " start :start $sigd and sangoma media gateway"
echo " stop :stop $sigd and sangoma media gateway"
echo " restart :restart $sigd and sangoma media gateway"
echo
echo " BRI/PRI Specific"
echo " test :test configuration only "
echo " capture :enable protocol capture "
echo " show_spans :show configured spans "
echo " show_calls :show active calls "
echo " v+ :increase verbosity"
echo " v- :decrease verbosity"
echo " "
echo "sigd options:"
echo " sangoma_isupd :ss7 isup daemon"
echo " sangoma_brid :bri daemon"
echo " sangoma_prid :pri daemon"
echo
echo "options:"
echo " nosyslog :does not use syslog to log data"
echo " "
return 1
}
logit()
{
local data="$1"
echo "$PROD: $data"
logger "$PROD: $data"
}
function stop_all()
{
echo " "
logit "Stopping running processes..."
stop_safe_sangoma
stop_sigdaemon
#post_args=$post_args" >/dev/null 2>/dev/null &"
if [ "$xtraargs" != "sigdonly" ]; then
stop_sangoma_mgd
fi
remove_pid_files
stop_scripts
}
function stop_sigdaemon()
{
#stop $sigd
eval "pidof $sigd >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending TERM signal to $sigd..."
eval "kill -TERM $(pidof $sigd) 2>/dev/null >/dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "FAILED"
logit "Failed to TERM $sigd"
break;
fi
fi
for ((i=0;i<$max_retry;i++))
do
eval "pidof $sigd >/dev/null 2>/dev/null"
if [ $? -ne 0 ]; then
logit "$sigd is stopped"
return;
else
logit "waiting for $sigd to finish($i/$max_retry)...."
sleep 1
fi
done
eval "pidof $sigd >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending KILL signal to $sigd..."
eval "kill -KILL $(pidof $sigd) 2>/dev/null >/dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "FAILED"
logit "Failed to KILL $sigd"
break;
fi
fi
for ((i=0;i<$max_retry;i++))
do
eval "pidof $sigd >/dev/null 2>/dev/null"
if [ $? -ne 0 ]; then
logit "$sigd is stopped"
break;
else
logit "waiting for $sigd to finish($i/$max_retry)...."
sleep 1
fi
done
}
function stop_sangoma_mgd()
{
max_retry=5
#stop sangoma media gateway
eval "pidof sangoma_mgd >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending TERM signal to sangoma_mgd..."
eval "sangoma_mgd -term 2>/dev/null >/dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
#already stopped
return 0;
fi
else
logit "sangoma_mgd not running..."
return;
fi
for ((i=0;i<$max_retry;i++))
do
eval "pidof sangoma_mgd >/dev/null 2>/dev/null"
if [ $? -ne 0 ]; then
logit "sangoma_mgd is stopped"
return 0
else
logit "waiting for sangoma_mgd to finish($i/$max_retry)...."
sleep 1
fi
done
#stop sangoma media gateway
eval "pidof sangoma_mgd >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending KILL signal to sangoma_mgd..."
eval "kill -KILL $(pidof sangoma_mgd) 2>/dev/null >/dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
#already stopped
return 0;
fi
else
echo "Ok"
fi
return 0
}
function stop_safe_sangoma()
{
eval "killall safe_sangoma >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending TERM signal to safe_sangoma..."
else
logit "safe_sangoma not running..."
return;
fi
sleep 1
eval "killall safe_sangoma >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo -n "Sending KILL signal to safe_sangoma..."
eval "killall -9 safe_sangoma 2>/dev/null >/dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "FAILED"
logit "Failed to stop safe_sangoma"
return 1
fi
else
echo "Ok"
fi
}
function remove_pid_files()
{
echo -n "Removing PID files..."
if [ -e /var/run/$sigd.pid ]; then
eval "rm -f /var/run/$sigd.pid > /dev/null"
if [ $? -ne 0 ]; then
echo " "
logit "Failed to remove /var/run/$sigd.pid, try to remove it manually"
fi
fi
if [ -e /var/run/sangoma_mgd.pid ]; then
eval "rm -f /var/run/sangoma_mgd.pid > /dev/null"
if [ $? -ne 0 ]; then
echo " "
logit "Failed to remove /var/run/sangoma_mgd.pid, try to remove it manually"
fi
fi
echo "done"
}
function start_test()
{
echo " "
logit "Testing configuration files..."
if [ $use_syslog -eq 1 ]; then
eval "$sigd -t"
else
eval "$sigd -t -log"
fi
if [ $? -eq 0 ]; then
logit "OK"
else
logit "Failed"
fi
}
function start_scripts()
{
if [ -d /etc/wanpipe/smg_ctrl.d ]; then
for script in /etc/wanpipe/smg_ctrl.d/*.start; do
if [ -x $script ]; then
logit "Executing startup script: $script"
source $script
fi
done
fi
}
function stop_scripts()
{
if [ -d /etc/wanpipe/smg_ctrl.d ]; then
for script in /etc/wanpipe/smg_ctrl.d/*.stop; do
if [ -x $script ]; then
logit "Executing stop script: $script"
source $script
fi
done
fi
}
function start_all()
{
#post_args=$post_args" >/dev/null 2>/dev/null &"
if [ "$xtraargs" = "sigdonly" ]; then
start_sigd
ret=$?
else
start_sigd
ret=$?
if [ $ret -eq 0 ]; then
start_smg
ret=$?
fi
fi
start_scripts
return $ret
}
function start_sigd()
{
check_sigd_running
pre_args="";
post_args="";
echo " "
if [ $use_safe -eq 1 ]; then
logit "Starting smg_ctrl in safe mode ..."
fi
logit "Starting processes..."
eval "cat /proc/net/protocols | grep sctp >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
echo "SCTP support already enabled"
else
echo -n "Loading SCTP..."
eval "modprobe sctp >>$LOG 2>>$LOG"
if [ $? -eq 0 ]; then
echo "OK"
else
logit "Failed"
logit "Failed to load SCTP kernel module, check $LOG"
return 1;
fi
fi
sleep 1
eval "ls /dev/wptdm* >/dev/null 2>/dev/null"
if [ $? -ne 0 ]; then
eval "ls /dev/wanpipe* >/dev/null 2>/dev/null"
if [ $? -ne 0 ]; then
logit "No Sangoma TDM API interfaces running"
logit "Did you start wanrouter? "
return 1;
fi
fi
echo -n "Starting $sigd..."
if [ $BRI -eq 1 ] && [ $use_syslog -eq 0 ]; then
post_args=$post_args" -log"
fi
if [ $use_safe -eq 1 ]; then
pre_args=" safe_sangoma"
post_args=" $sigd_safe_args"
else
post_args=" $sigd_bg_args"
fi
eval "$pre_args $sigd $post_args >/dev/null 2>/dev/null &"
if [ $? -eq 0 ]; then
echo "OK"
else
logit "Failed"
logit "Failed to start $sigd, check $SIG_LOG for errors"
return 1;
fi
sleep 2
if [ ! $(pidof $sigd) ]; then
logit "$sigd failed to start"
logit "check $SIG_LOG for errors"
return 1;
fi
sleep 3
if [ "$xtraargs" = "sigdonly" ]; then
logit "Sangoma $sigd running.."
if [ $use_syslog -eq 1 ]; then
logit "log file: $LOG and /var/log/messages"
else
logit "log file: $LOG and /var/log/messages"
fi
echo " "
fi
return 0
}
function start_smg()
{
check_smg_running
pre_args="";
post_args="";
if [ $use_safe -eq 1 ]; then
pre_args=" safe_sangoma"
post_args=""
else
post_args=" -bg"
fi
if [ -e /etc/wanpipe/.no_smg_load ]; then
logit "Skipping sangoma_mgd..."
return 0;
fi
echo -n "Starting sangoma_mgd..."
eval "$pre_args sangoma_mgd $post_args >/dev/null 2>/dev/null &"
if [ $? -eq 0 ]; then
echo "OK"
else
logit "Failed"
logit "Failed to start sangoma_mgd, check $LOG for errors"
return 1;
fi
sleep 2
if [ ! $(pidof sangoma_mgd) ]; then
logit "sangoma_mgd failed to start"
logit "check $LOG for errors"
return 1;
fi
echo "Sangoma SMG running.."
if [ $use_syslog -eq 1 ]; then
logit "log file: $LOG and /var/log/messages"
else
logit "log file: $LOG and /var/log/messages"
fi
echo " "
return 0
}
function check_sigd_running()
{
local rc
eval "pidof $sigd 2> /dev/null > /dev/null"
rc=$?
if [ $rc -eq 0 ]; then
logit "$sigd is currently running"
logit "exiting..."
exit 0
fi
if [ -e /var/run/$sigd.pid ];then
eval "rm -f /var/run/$sigd.pid >/dev/null 2>/dev/null";
fi
return 0
}
function check_smg_running()
{
local rc
eval "pidof sangoma_mgd 2> /dev/null > /dev/null"
rc=$?
if [ $rc -eq 0 ]; then
logit "sangoma_mgd is currently running"
logit "exiting..."
exit 0
fi
if [ -e /var/run/sangoma_mgd.pid ];then
eval "rm -f /var/run/sangoma_mgd.pid >/dev/null 2>/dev/null";
fi
return 0
}
function check_pid_sigd()
{
if [ ! $(pidof $sigd) ]; then
logit "$sigd is not running"
exit 1
fi
return 0
}
function toggle_capture()
{
local rc
check_pid_sigd
eval "kill -SIGRTMIN+2 $(pidof $sigd)"
rc=$?
if [ $rc -eq 0 ]; then
logit "BRI/PRI: Protocol capture toggled"
else
logit "BRI/PRI: Failed to send command"
fi
return $rc
}
function increase_verbose()
{
local rc
check_pid_sigd
SIG_VAL=`kill -l SIGRTMIN`
logit "signal: $SIG_VAL"
eval "kill -SIGRTMIN $(pidof $sigd)"
rc=$?
if [ $rc -eq 0 ]; then
logit "BRI/PRI: Verbosity increased"
else
logit "BRI/PRI: Failed to send command"
fi
return $rc
}
function decrease_verbose()
{
local rc
check_pid_sigd
eval "kill -SIGRTMIN+1 $(pidof $sigd)"
rc=$?
if [ $rc -eq 0 ]; then
logit "BRI/PRI: Verbosity decreased"
else
logit "BRI/PRI: Failed to send command"
fi
return $rc
}
function show_calls()
{
local rc
check_pid_sigd
eval "kill -SIGRTMIN+3 $(pidof $sigd) "
rc=$?
if [ $rc -eq 0 ]; then
logit "BRI/PRI: Show calls"
else
logit "BRI/PRI: Failed to send command"
fi
return $rc
}
function show_spans()
{
local rc
check_pid_sigd
eval "kill -SIGRTMIN+4 $(pidof $sigd)"
rc=$?
if [ $rc -eq 0 ]; then
logit "BRI/PRI: Show spans"
else
logit "BRI/PRI: Failed to send command"
fi
return $rc
}
function parse_args()
{
for arg in $args
do
case $arg in
nosyslog)
use_syslog=0;
;;
safe)
use_safe=1;
;;
esac
done
}
read_smg_conf ()
{
WAN_HOME=/etc/wanpipe
WAN_CONF_DIR=$WAN_HOME
META_SMG_CONF=$WAN_HOME/smg.rc
# Read meta-configuration file.
if [ -f $META_SMG_CONF ]
then . $META_SMG_CONF
else
logit " $META_SMG_CONF not found !!!!"
return 1
fi
return 0
}
function init_smg_conf()
{
SMG_BOOT=
SANGOMA_PRID=
SANGOMA_BRID=
SANGOMA_SS7ISUP=
SANGOMA_MEDIA_GATEWAY=
SANGOMA_SS7BOOST=
SANGOMA_SAFE_MODE=
}
######################
#main start here
######################
parse_args
init_smg_conf
read_smg_conf
#Set sigd
if [ "$SANGOMA_PRID" = "YES" ]; then
sigd="sangoma_prid"
eval "echo $LD_LIBRARY_PATH | grep sangoma_prid > /dev/null 2>/dev/null"
if [ $? -ne 0 ];then
echo "Adding /usr/lib/sangoma_prid to library paths"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib/sangoma_prid"
else
echo "sangoma_prid libraries already in library paths"
fi
elif [ "$SANGOMA_BRID" = "YES" ]; then
sigd="sangoma_brid"
elif [ "$SANGOMA_SS7ISUP" = "YES" ]; then
sigd="sangoma_isupd"
elif [ "$SANGOMA_SS7BOOST" = "YES" ]; then
sigd="ss7boost"
else
logit "Failed to specify sigd!!! check $META_SMG_CONF "
exit 1
fi
if [ $SANGOMA_MEDIA_GATEWAY = "NO" ]; then
xtraargs="sigdonly"
fi
if [ $sigd = "ss7boost" ] || [ $sigd = "sangoma_isupd" ]; then
sigd_safe_args="-i"
sigd_bg_args=""
SIG_LOG=/var/log/messages
eval "type $sigd 2> /dev/null > /dev/null"
if [ $? -ne 0 ]; then
export PATH=$PATH:/usr/local/ss7box
fi
eval "type $sigd 2> /dev/null > /dev/null"
if [ $? -ne 0 ]; then
echo
logit "Error $sigd is not found"
echo
exit 1
fi
SS7=1;
elif [ $sigd = "sangoma_brid" ]; then
sigd_safe_args=""
sigd_bg_args="-bg"
BRI=1;
elif [ $sigd = "sangoma_prid" ]; then
sigd_safe_args=""
sigd_bg_args="-bg"
PRI=1;
else
usage
exit 1
fi
while [ ! -z "$3" ];
do
args=$args"$3 "
shift
done
ret=0
if [ "$cmd" = "start" ] && [ "$SANGOMA_SAFE_MODE" = "YES" ]; then
cmd="safe_start"
fi
if [ "$cmd" = "start" ]; then
start_all
ret=$?
if [ $ret -ne 0 ]; then
stop_all
fi
elif [ "$cmd" = "safe_start" ]; then
use_safe=1
start_all
ret=$?
if [ $ret -ne 0 ]; then
stop_all
fi
ret=$?
elif [ "$cmd" = "stop" ]; then
stop_all
ret=$?
elif [ "$cmd" = "restart" ]; then
stop_all
if [ "$SANGOMA_SAFE_MODE" = "YES" ]; then
use_safe=1
fi
start_all
ret=$?
if [ $ret -ne 0 ]; then
stop_all
fi
else
if [ $SS7 -eq 1 ]; then
logit "Error: Unsupported command $cmd for SS7"
echo
usage
exit 1
fi
if [ "$cmd" = "capture" ]; then
toggle_capture
ret=$?
elif [ "$cmd" = "v+" ]; then
increase_verbose
ret=$?
elif [ "$cmd" = "v-" ]; then
decrease_verbose
ret=$?
elif [ "$cmd" = "show_spans" ]; then
show_spans
ret=$?
elif [ "$cmd" = "show_calls" ]; then
show_calls
ret=$?
elif [ "$cmd" = "test" ]; then
start_test
ret=$?
else
usage
ret=1
fi
fi
exit $ret

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/app
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/conf
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/conf_bri
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib/libteletone
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib/libteletone/src
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
282
284
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/rc
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -9,6 +9,12 @@
*
* =============================================
*
* v1.72 Nenad Corbic <ncorbic@sangoma.com>
* Sep 22 2010
* Bug fix from 1.71, for BRI mode we must use the ec chip
* check not ec channel check since BRI mode starts in non persist
* state.
*
* v1.71 Nenad Corbic <ncorbic@sangoma.com>
* Jun 21 2010
* Added a hwec_chan_status check instead of hwec check.
@ -384,7 +390,7 @@ pthread_mutex_t g_smg_ip_bridge_lock;
#endif
#define SMG_VERSION "v1.71"
#define SMG_VERSION "v1.72"
/* enable early media */
#if 1
@ -436,7 +442,7 @@ static int drop_seq=0;
const char WELCOME_TEXT[] =
"================================================================================\n"
"Sangoma Media Gateway Daemon v1.71 \n"
"Sangoma Media Gateway Daemon v1.72 \n"
"\n"
"TDM Signal Media Gateway for Sangoma/Wanpipe Cards\n"
"Copyright 2005, 2006, 2007 \n"
@ -1475,6 +1481,8 @@ retry_loop:
#ifdef LIBSANGOMA_VERSION
#ifdef WP_API_FEATURE_EC_CHAN_STAT
/* Since we are in loop mode we want to make sure that hwec is disabled
before we start doing the loop test. */
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
#else
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
@ -1729,8 +1737,17 @@ media_retry:
#ifdef LIBSANGOMA_VERSION
#ifdef WP_API_FEATURE_EC_CHAN_STAT
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
#else
/* check if hwec is available */
if (tdmv_hwec_persist) {
/* For T1/E1 we run with ec on. If ec is off then it was meant to be off
thus use this as indication of whether hwec is on or off */
ms->has_hwec = sangoma_tdm_get_hwec_chan_status(ms->sangoma_sock, &tdm_api);
} else {
/* On BRI we run with ec off by default. Therefore we must check
for ec chip being enabled not the channel */
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
}
#else
ms->has_hwec = sangoma_tdm_get_hw_ec(ms->sangoma_sock, &tdm_api);
#endif
if (ms->has_hwec < 0) {

Some files were not shown because too many files have changed in this diff Show More