wanpipe-7.0.26.tgz
This commit is contained in:
parent
239dc6e15f
commit
ff69be317e
|
@ -1,2 +1,2 @@
|
|||
wanpipe_linux: git ver 9fc832f
|
||||
wanpipe_common: git ver 2534792
|
||||
wanpipe_linux: git ver a362c80
|
||||
wanpipe_common: git ver 25d1643
|
||||
|
|
|
@ -1 +1 @@
|
|||
wanpipe-7.0.25.1
|
||||
wanpipe-7.0.26
|
||||
|
|
|
@ -2,11 +2,16 @@
|
|||
WANPIPE TDM VOICE - IP/WAN Package
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Copyright (c) 1995-2017 Sangoma Technologies Inc.
|
||||
Copyright (c) 1995-2019 Sangoma Technologies Inc.
|
||||
|
||||
For more info visit: http://wiki.sangoma.com
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Tue Apr 02 2019 Pushkar Singh <psingh@sangoma.com> - 7.0.26
|
||||
==================================================================
|
||||
- Support for Kernel version 4.15+
|
||||
- Support for GLIBC version 2.27+
|
||||
|
||||
* Wed Feb 23 2019 Nenad Corbic <ncorbic@sangoma.com> - 7.0.25
|
||||
==================================================================
|
||||
- Fix the build for DATA
|
||||
|
|
39
Makefile
39
Makefile
|
@ -209,10 +209,47 @@ ifneq (,$(wildcard $(KDIR)/include/linux/netdevice.h))
|
|||
KERN_NDO_CHANGE_MTU_RH74=$(shell grep "ndo_change_mtu_rh74" $(KDIR)/include/linux/netdevice.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_NDO_CHANGE_MTU_RH74=$(KERN_NDO_CHANGE_MTU_RH74)
|
||||
else
|
||||
KERN_NETIF_TRANS_UPDATE=$(shell grep "ndo_change_mtu_rh74" $(KSRC)/include/linux/netdevice.h -c)
|
||||
KERN_NDO_CHANGE_MTU_RH74=$(shell grep "ndo_change_mtu_rh74" $(KSRC)/include/linux/netdevice.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_NDO_CHANGE_MTU_RH74=$(KERN_NDO_CHANGE_MTU_RH74)
|
||||
endif
|
||||
|
||||
ifneq (,$(wildcard $(KDIR)/include/linux/device.h))
|
||||
KERN_CLASS_DEV_GROUPS=$(shell awk 'BEGIN { s=0 } /\*\*dev_groups;/ { s=1; exit } END { print s }' $(KDIR)/include/linux/device.h)
|
||||
EXTRA_CFLAGS+=-DKERN_CLASS_DEV_GROUPS=$(KERN_CLASS_DEV_GROUPS)
|
||||
else
|
||||
KERN_CLASS_DEV_GROUPS=$(shell awk 'BEGIN { s=0 } /\*\*dev_groups;/ { s=1; exit } END { print s }' $(KSRC)/include/linux/device.h)
|
||||
EXTRA_CFLAGS+=-DKERN_CLASS_DEV_GROUPS=$(KERN_CLASS_DEV_GROUPS)
|
||||
endif
|
||||
|
||||
ifneq (,$(wildcard $(KDIR)/include/linux/timer.h))
|
||||
KERN_TIMER_SETUP=$(shell grep 'define timer_setup' $(KDIR)/include/linux/timer.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_TIMER_SETUP=$(KERN_TIMER_SETUP)
|
||||
else
|
||||
KERN_TIMER_SETUP=$(shell grep 'define timer_setup' $(KSRC)/include/linux/timer.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_TIMER_SETUP=$(KERN_TIMER_SETUP)
|
||||
endif
|
||||
|
||||
ifneq (,$(wildcard $(KDIR)/include/linux/refcount.h))
|
||||
KERN_REFCNT_UPDATE=$(shell grep 'refcount_read' $(KDIR)/include/linux/refcount.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_REFCNT_UPDATE=$(KERN_REFCNT_UPDATE)
|
||||
else ifneq (,$(wildcard $(KSRC)/include/linux/refcount.h))
|
||||
KERN_REFCNT_UPDATE=$(shell grep 'refcount_read' $(KSRC)/include/linux/refcount.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_REFCNT_UPDATE=$(KERN_REFCNT_UPDATE)
|
||||
else
|
||||
KERN_REFCNT_UPDATE=0
|
||||
EXTRA_CFLAGS+=-DKERN_REFCNT_UPDATE=$(KERN_REFCNT_UPDATE)
|
||||
endif
|
||||
|
||||
ifneq (,$(wildcard $(KDIR)/include/linux/sched/signal.h))
|
||||
KERN_SIG_UPDATE=$(shell grep 'signal_pending' $(KDIR)/include/linux/sched/signal.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_SIG_UPDATE=$(KERN_SIG_UPDATE)
|
||||
else ifneq (,$(wildcard $(KSRC)/include/linux/sched/signal.h))
|
||||
KERN_SIG_UPDATE=$(shell grep 'signal_pending' $(KSRC)/include/linux/sched/signal.h -c)
|
||||
EXTRA_CFLAGS+=-DKERN_SIG_UPDATE=$(KERN_SIG_UPDATE)
|
||||
else
|
||||
KERN_SIG_UPDATE=0
|
||||
EXTRA_CFLAGS+=-DKERN_SIG_UPDATE=$(KERN_SIG_UPDATE)
|
||||
endif
|
||||
|
||||
# First pass, kernel Makefile reads module objects
|
||||
ifneq ($(KERNELRELEASE),)
|
||||
|
|
99
Setup
99
Setup
|
@ -247,7 +247,7 @@ check_kern_memcpy_from_msg ()
|
|||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $MEMCPY_FROM_MSG_FEATURE "
|
||||
elif [ -e $DEBSRCDIR/include/linux/skbuff.h ];then
|
||||
eval "grep PDE_DATA $DEBSRCDIR/include/linux/skbuff.h >/dev/null 2>/dev/null"
|
||||
eval "grep \"memcpy_from_msg\" $DEBSRCDIR/include/linux/skbuff.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
MEMCPY_FROM_MSG_FEATURE="-DKERN_MEMCPY_FROM_MSG=1"
|
||||
else
|
||||
|
@ -268,7 +268,7 @@ check_kern_memcpy_to_msg ()
|
|||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $MEMCPY_TO_MSG_FEATURE "
|
||||
elif [ -e $DEBSRCDIR/include/linux/skbuff.h ];then
|
||||
eval "grep PDE_DATA $DEBSRCDIR/include/linux/skbuff.h >/dev/null 2>/dev/null"
|
||||
eval "grep \"memcpy_to_msg\" $DEBSRCDIR/include/linux/skbuff.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
MEMCPY_TO_MSG_FEATURE="-DKERN_MEMCPY_TO_MSG=1"
|
||||
else
|
||||
|
@ -277,6 +277,91 @@ check_kern_memcpy_to_msg ()
|
|||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $MEMCPY_TO_MSG_FEATURE "
|
||||
fi
|
||||
}
|
||||
|
||||
check_kern_dev_group_struct ()
|
||||
{
|
||||
if [ -e $SOURCEDIR/include/linux/device.h ];then
|
||||
eval "awk 'BEGIN { s=0 } /\*\*dev_groups;/ { s=1; exit } END { print s }' $SOURCEDIR/include/linux/device.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
DEV_GRP_STRUCT="-DKERN_CLASS_DEV_GROUPS=1"
|
||||
else
|
||||
DEV_GRP_STRUCT="-DKERN_CLASS_DEV_GROUPS=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $DEV_GRP_STRUCT "
|
||||
elif [ -e $DEBSRCDIR/include/linux/device.h ];then
|
||||
eval "awk 'BEGIN { s=0 } /\*\*dev_groups;/ { s=1; exit } END { print s }' $DEBSRCDIR/include/linux/device.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
DEV_GRP_STRUCT="-DKERN_CLASS_DEV_GROUPS=1"
|
||||
else
|
||||
DEV_GRP_STRUCT="-DKERN_CLASS_DEV_GROUPS=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $DEV_GRP_STRUCT "
|
||||
fi
|
||||
}
|
||||
|
||||
check_kern_timer_struct ()
|
||||
{
|
||||
if [ -e $SOURCEDIR/include/linux/timer.h ];then
|
||||
eval "grep \"define timer_setup\" $SOURCEDIR/include/linux/timer.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
TIMER_STRUCT="-DKERN_TIMER_SETUP=1"
|
||||
else
|
||||
TIMER_STRUCT="-DKERN_TIMER_SETUP=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $TIMER_STRUCT "
|
||||
elif [ -e $DEBSRCDIR/include/linux/timer.h ];then
|
||||
eval "grep \"define timer_setup\" $DEBSRCDIR/include/linux/timer.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
TIMER_STRUCT="-DKERN_TIMER_SETUP=1"
|
||||
else
|
||||
TIMER_STRUCT="-DKERN_TIMER_SETUP=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $TIMER_STRUCT "
|
||||
fi
|
||||
}
|
||||
|
||||
check_kern_refcount_feature ()
|
||||
{
|
||||
if [ -e $SOURCEDIR/include/linux/refcount.h ];then
|
||||
eval "grep \"refcount_read\" $SOURCEDIR/include/linux/refcount.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
REFCOUNT_UPDATE="-DKERN_REFCNT_UPDATE=1"
|
||||
else
|
||||
REFCOUNT_UPDATE="-DKERN_REFCNT_UPDATE=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $REFCOUNT_UPDATE "
|
||||
elif [ -e $DEBSRCDIR/include/linux/refcount.h ];then
|
||||
eval "grep \"refcount_read\" $DEBSRCDIR/include/linux/refcount.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
REFCOUNT_UPDATE="-DKERN_REFCNT_UPDATE=1"
|
||||
else
|
||||
REFCOUNT_UPDATE="-DKERN_REFCNT_UPDATE=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $REFCOUNT_UPDATE "
|
||||
fi
|
||||
}
|
||||
|
||||
check_kern_signal_feature ()
|
||||
{
|
||||
if [ -e $SOURCEDIR/include/linux/sched/signal.h ];then
|
||||
eval "grep \"signal_pending\" $SOURCEDIR/include/linux/sched/signal.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
SIGNAL_UPDATE="-DKERN_SIG_UPDATE=1"
|
||||
else
|
||||
SIGNAL_UPDATE="-DKERN_SIG_UPDATE=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $SIGNAL_UPDATE "
|
||||
elif [ -e $DEBSRCDIR/include/linux/sched/signal.h ];then
|
||||
eval "grep \"signal_pending\" $DEBSRCDIR/include/linux/sched/signal.h >/dev/null 2>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
SIGNAL_UPDATE="-DKERN_SIG_UPDATE=1"
|
||||
else
|
||||
SIGNAL_UPDATE="-DKERN_SIG_UPDATE=0"
|
||||
fi
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES $SIGNAL_UPDATE "
|
||||
fi
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Display error message.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
@ -3693,6 +3778,14 @@ CFLAGS="$CC -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dli
|
|||
|
||||
check_kern_memcpy_to_msg
|
||||
|
||||
check_kern_dev_group_struct
|
||||
|
||||
check_kern_timer_struct
|
||||
|
||||
check_kern_refcount_feature
|
||||
|
||||
check_kern_signal_feature
|
||||
|
||||
if [ "$BRI_MODULE_TEST" = "YES" ]; then
|
||||
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DBUILD_MOD_TESTER"
|
||||
fi
|
||||
|
@ -7470,7 +7563,7 @@ KERNEL_UNAME=`uname -r`
|
|||
PKG_NAME=wanpipe
|
||||
DISTR_NAME="WANPIPE"
|
||||
PROD=wanrouter
|
||||
PROD_VER=7.0.25.1
|
||||
PROD_VER=7.0.26
|
||||
PROD_HOME=`pwd`
|
||||
META_CONF=$PROD_HOME/$PROD.rc
|
||||
WAN_INTR_DIR=$PROD_HOME/interfaces
|
||||
|
|
|
@ -705,6 +705,11 @@ int registry_write_front_end_cfg(HKEY hPortRegistryKey, port_cfg_t *port_cfg)
|
|||
break;
|
||||
}
|
||||
|
||||
iReturnCode = registry_set_integer_value(hPortRegistryKey, "TE_IGNORE_DEBOUNCE", te_cfg->ignore_debounce_alarm);
|
||||
if(iReturnCode){
|
||||
break;
|
||||
}
|
||||
|
||||
iReturnCode = registry_set_integer_value(hPortRegistryKey, "ACTIVE_CH", ENABLE_ALL_CHANNELS /*must be hardcoded*/);
|
||||
if(iReturnCode){
|
||||
break;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Package: wanpipe
|
||||
Version: 7.0.25.1-0
|
||||
Version: 7.0.26-0
|
||||
Section: networking
|
||||
Priority: optional
|
||||
Architecture: all
|
||||
|
|
|
@ -637,6 +637,8 @@ int aft_background_timer_add(sdla_t* card, unsigned long delay);
|
|||
void aft_background_timer_expire(void* pcard);
|
||||
#elif defined(__WINDOWS__)
|
||||
void aft_background_timer_expire(IN PKDPC Dpc, void* pcard, void* arg2, void* arg3);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
void aft_background_timer_expire(struct timer_list *t);
|
||||
#else
|
||||
void aft_background_timer_expire(unsigned long pcard);
|
||||
#endif
|
||||
|
|
|
@ -389,8 +389,16 @@ typedef struct wanpipe_datascope
|
|||
wan_free(dev); \
|
||||
}
|
||||
|
||||
/* since in kernel release 4.15 and after atomic_inc take argument of type atomic_t
|
||||
* and since sock struct sk_refcnt member is not atomic_t type we need to type cast the same
|
||||
* here as we donot want to change the kernel sock struct */
|
||||
#if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
#define wp_sock_hold(sk) refcount_inc(&(sk)->sk_refcnt)
|
||||
#define wp_sock_put(sk) refcount_dec_and_test(&(sk)->sk_refcnt)
|
||||
#else
|
||||
#define wp_sock_hold(sk) atomic_inc(&(sk)->sk_refcnt)
|
||||
#define wp_sock_put(sk) atomic_dec_and_test(&(sk)->sk_refcnt)
|
||||
#endif
|
||||
|
||||
|
||||
struct wanpipe_api_register_struct
|
||||
|
|
|
@ -462,6 +462,7 @@ typedef struct sdla_te_cfg {
|
|||
u_int8_t ignore_yel_alarm;
|
||||
u_int8_t ais_maintenance;
|
||||
u_int8_t ais_auto_on_los;
|
||||
u_int8_t ignore_debounce_alarm;
|
||||
} sdla_te_cfg_t;
|
||||
|
||||
/* Performamce monitor counters */
|
||||
|
|
|
@ -1050,9 +1050,13 @@ static __inline void
|
|||
wan_init_timer(wan_timer_t* wan_timer, wan_timer_func_t timer_func, wan_timer_arg_t arg)
|
||||
{
|
||||
#if defined(__LINUX__)
|
||||
# if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&wan_timer->timer_info, timer_func, 0);
|
||||
# else
|
||||
init_timer(&wan_timer->timer_info);
|
||||
wan_timer->timer_info.function = timer_func;
|
||||
wan_timer->timer_info.data = arg;
|
||||
# endif
|
||||
#elif defined(__FreeBSD__)
|
||||
/* FIXME_ADSL_TIMER */
|
||||
callout_handle_init(&wan_timer->timer_info);
|
||||
|
|
|
@ -527,7 +527,11 @@ typedef int wan_ioctl_cmd_t;
|
|||
typedef struct sk_buff netskb_t;
|
||||
typedef struct sk_buff_head wan_skb_queue_t;
|
||||
typedef struct timer_list wan_timer_info_t;
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
typedef void (*wan_timer_func_t)(struct timer_list *t);
|
||||
#else
|
||||
typedef void (*wan_timer_func_t)(unsigned long);
|
||||
#endif
|
||||
typedef unsigned long wan_timer_arg_t;
|
||||
typedef void wan_tasklet_func_t(unsigned long);
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
|
|
|
@ -269,6 +269,12 @@
|
|||
# include <linux/inet.h>
|
||||
# include <linux/netdevice.h>
|
||||
# include <linux/list.h>
|
||||
# if defined(KERN_SIG_UPDATE) && KERN_SIG_UPDATE > 0
|
||||
# include <linux/sched/signal.h>
|
||||
# endif
|
||||
# if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
# include <linux/refcount.h>
|
||||
# endif
|
||||
# include <asm/io.h> /* phys_to_virt() */
|
||||
# if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)
|
||||
# include <asm/system.h>
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
#define WANPIPE_COMPANY "Sangoma Technologies Inc"
|
||||
|
||||
/********** LINUX **********/
|
||||
#define WANPIPE_VERSION "7.0.25.1"
|
||||
#define WANPIPE_VERSION "7.0.26"
|
||||
#define WANPIPE_SUB_VERSION "0"
|
||||
#define WANPIPE_LITE_VERSION "1.1.1"
|
||||
|
||||
#if defined(__LINUX__)
|
||||
#define WANPIPE_VERSION_MAJOR 7
|
||||
#define WANPIPE_VERSION_MINOR 0
|
||||
#define WANPIPE_VERSION_MINOR1 25
|
||||
#define WANPIPE_VERSION_MINOR2 1
|
||||
#define WANPIPE_VERSION_MINOR1 26
|
||||
#define WANPIPE_VERSION_MINOR2 0
|
||||
#endif
|
||||
|
||||
/********** FreeBSD **********/
|
||||
|
|
|
@ -22,6 +22,8 @@ static wplip_prot_reg_t wplip_prot_reg_ops;
|
|||
#if defined(__WINDOWS__)
|
||||
static void wplip_prot_timer(IN PKDPC Dpc, void *arg, void *arg2, void *arg3);
|
||||
extern void wplip_poll_carrier_status(wplip_link_t *lip_link);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wplip_prot_timer(struct timer_list *t);
|
||||
#else
|
||||
static void wplip_prot_timer(wan_timer_arg_t arg);
|
||||
#endif
|
||||
|
@ -587,11 +589,17 @@ static void wplip_port_task (struct work_struct *work)
|
|||
#if defined(__WINDOWS__)
|
||||
/* This timer runs all the time. The delay is 1 second. */
|
||||
static void wplip_prot_timer(IN PKDPC Dpc, void *arg, void *arg2, void *arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wplip_prot_timer(struct timer_list *t)
|
||||
#else
|
||||
static void wplip_prot_timer(wan_timer_arg_t arg)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
wplip_link_t *lip_link=from_timer(lip_link, t, prot_timer.timer_info);
|
||||
#else
|
||||
wplip_link_t *lip_link=(wplip_link_t *)arg;
|
||||
#endif
|
||||
unsigned int period=HZ;
|
||||
wan_smp_flag_t flags;
|
||||
wplip_prot_iface_t *prot_iface;
|
||||
|
|
|
@ -3434,6 +3434,8 @@ int aft_background_timer_add(sdla_t* card, unsigned long delay)
|
|||
void aft_background_timer_expire(void* pcard)
|
||||
#elif defined(__WINDOWS__)
|
||||
void aft_background_timer_expire(IN PKDPC Dpc, void* pcard, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
void aft_background_timer_expire(struct timer_list *t)
|
||||
#else
|
||||
void aft_background_timer_expire(unsigned long pcard)
|
||||
#endif
|
||||
|
|
|
@ -292,6 +292,8 @@ static int sdla_ds_te1_sigctrl(sdla_fe_t *fe, int, unsigned long, int);
|
|||
static void sdla_ds_te1_timer(void* pfe);
|
||||
#elif defined(__WINDOWS__)
|
||||
static void sdla_ds_te1_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sdla_ds_te1_timer(struct timer_list *t);
|
||||
#else
|
||||
static void sdla_ds_te1_timer(unsigned long pfe);
|
||||
#endif
|
||||
|
@ -2361,62 +2363,103 @@ static u_int32_t sdla_ds_te1_read_frame_alarms(sdla_fe_t *fe)
|
|||
fe->name, FE_MEDIA_DECODE(fe),
|
||||
rrts1, alarm);
|
||||
|
||||
/* Framer alarms */
|
||||
if (rrts1 & BIT_RRTS1_RRAI){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_ON);
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_OFF);
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) {
|
||||
alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
|
||||
/* Framer alarms */
|
||||
//if (WAN_FE_FRAME(fe) != WAN_FR_UNFRAMED){
|
||||
if (rrts1 & BIT_RRTS1_RRAI){
|
||||
if (!(alarm & WAN_TE_BIT_ALARM_RAI)){
|
||||
DEBUG_WARNING("%s: RAI : ON\n",
|
||||
fe->name);
|
||||
}
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_yel_alarm == WANOPT_NO){
|
||||
alarm |= WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
}else{
|
||||
if (alarm & WAN_TE_BIT_ALARM_RAI){
|
||||
DEBUG_WARNING("%s: RAI : OFF\n",
|
||||
fe->name);
|
||||
}
|
||||
alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
//}
|
||||
} else {
|
||||
/* Framer alarms */
|
||||
if (rrts1 & BIT_RRTS1_RRAI){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_ON);
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
if (rrts1 & BIT_RRTS1_RAIS){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_AIS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_AIS_ON);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (!IS_TE_ALARM_AIS(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_AIS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_AIS_ON);
|
||||
}
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_AIS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_AIS_OFF);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (IS_TE_ALARM_AIS(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_AIS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_AIS_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
if (rrts1 & BIT_RRTS1_RLOS){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_LOS_ON);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (!IS_TE_ALARM_LOS(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_LOS_ON);
|
||||
}
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_LOS_OFF);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (IS_TE_ALARM_LOS(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOS,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_LOS_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
if (WAN_FE_FRAME(fe) != WAN_FR_UNFRAMED){
|
||||
if (rrts1 & BIT_RRTS1_RLOF){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOF,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_LOF_ON);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (!IS_TE_ALARM_LOF(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOF,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_LOF_ON);
|
||||
}
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOF,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_LOF_OFF);
|
||||
if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) ||
|
||||
((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) && (IS_TE_ALARM_LOF(alarm)))) {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_LOF,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_LOF_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Aug 30, 2006
|
||||
|
@ -2543,24 +2586,26 @@ static u_int32_t sdla_ds_te1_read_alarms(sdla_fe_t *fe, int action)
|
|||
static int
|
||||
sdla_ds_te1_update_alarms(sdla_fe_t *fe, u_int32_t alarms)
|
||||
{
|
||||
if (!IS_TE_ALARM_RAI(fe->fe_alarm)){
|
||||
if (IS_TE_ALARM_RAI(alarms)){
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_yel_alarm == WANOPT_NO){
|
||||
DEBUG_EVENT("%s: RAI : ON\n",
|
||||
fe->name);
|
||||
fe->fe_alarm |= WAN_TE_BIT_ALARM_RAI;
|
||||
} else {
|
||||
DEBUG_EVENT("%s: RAI : ON (Skipped)\n",
|
||||
fe->name);
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) {
|
||||
if (!IS_TE_ALARM_RAI(fe->fe_alarm)){
|
||||
if (IS_TE_ALARM_RAI(alarms)){
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_yel_alarm == WANOPT_NO){
|
||||
DEBUG_EVENT("%s: RAI : ON\n",
|
||||
fe->name);
|
||||
fe->fe_alarm |= WAN_TE_BIT_ALARM_RAI;
|
||||
} else {
|
||||
DEBUG_EVENT("%s: RAI : ON (Skipped)\n",
|
||||
fe->name);
|
||||
fe->fe_alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if (!IS_TE_ALARM_RAI(alarms)){
|
||||
DEBUG_EVENT("%s: RAI : OFF\n",
|
||||
fe->name);
|
||||
fe->fe_alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if (!IS_TE_ALARM_RAI(alarms)){
|
||||
DEBUG_EVENT("%s: RAI : OFF\n",
|
||||
fe->name);
|
||||
fe->fe_alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IS_TE_ALARM_AIS(fe->fe_alarm)){
|
||||
|
@ -3455,17 +3500,29 @@ static int sdla_ds_te1_fr_rxintr_rls1(sdla_fe_t *fe, int silent)
|
|||
|
||||
if (rls1 & (BIT_RLS1_RRAIC|BIT_RLS1_RRAID)){
|
||||
if (rrts1 & BIT_RRTS1_RRAI){
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) {
|
||||
fe->fe_alarm |= WAN_TE_BIT_ALARM_RAI;
|
||||
if (!silent) DEBUG_EVENT("%s: RAI alarm is ON\n",
|
||||
fe->name);
|
||||
} else {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_ON);
|
||||
}
|
||||
}else{
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) {
|
||||
fe->fe_alarm &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
if (!silent) DEBUG_EVENT("%s: RAI alarm is OFF\n",
|
||||
fe->name);
|
||||
} else {
|
||||
sdla_ds_te1_swirq_trigger(
|
||||
fe,
|
||||
WAN_TE1_SWIRQ_TYPE_ALARM_RAI,
|
||||
WAN_TE1_SWIRQ_SUBTYPE_ALARM_OFF,
|
||||
WAN_T1_ALARM_THRESHOLD_RAI_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4053,11 +4110,17 @@ static int sdla_ds_te1_intr(sdla_fe_t *fe)
|
|||
static void sdla_ds_te1_timer(void* pfe)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void sdla_ds_te1_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sdla_ds_te1_timer(struct timer_list *t)
|
||||
#else
|
||||
static void sdla_ds_te1_timer(unsigned long pfe)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_fe_t *fe = from_timer(fe, t, timer.timer_info);
|
||||
#else
|
||||
sdla_fe_t *fe = (sdla_fe_t*)pfe;
|
||||
#endif
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
wan_device_t *wandev = &card->wandev;
|
||||
wan_smp_flag_t smp_flags;
|
||||
|
@ -4340,8 +4403,10 @@ static int sdla_ds_te1_swirq_alarm(sdla_fe_t* fe, int type)
|
|||
|
||||
if (swirq->subtype == WAN_TE1_SWIRQ_SUBTYPE_ALARM_ON){
|
||||
|
||||
if (fe->fe_status == FE_DISCONNECTED && type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI) {
|
||||
swirq->delay=0;
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) {
|
||||
if (fe->fe_status == FE_DISCONNECTED && type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI) {
|
||||
swirq->delay=0;
|
||||
}
|
||||
}
|
||||
|
||||
if (WAN_STIMEOUT(swirq->start, swirq->delay)){
|
||||
|
@ -4352,7 +4417,7 @@ static int sdla_ds_te1_swirq_alarm(sdla_fe_t* fe, int type)
|
|||
alarms |= WAN_TE_BIT_ALARM_LOS;
|
||||
}else if (type == WAN_TE1_SWIRQ_TYPE_ALARM_LOF){
|
||||
alarms |= WAN_TE_BIT_ALARM_LOF;
|
||||
}else if (type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI){
|
||||
}else if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) && (type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI)) {
|
||||
alarms |= WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
wan_clear_bit(1, (void*)&swirq->pending);
|
||||
|
@ -4377,7 +4442,7 @@ static int sdla_ds_te1_swirq_alarm(sdla_fe_t* fe, int type)
|
|||
alarms &= ~WAN_TE_BIT_ALARM_LOS;
|
||||
}else if (type == WAN_TE1_SWIRQ_TYPE_ALARM_LOF){
|
||||
alarms &= ~WAN_TE_BIT_ALARM_LOF;
|
||||
}else if (type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI){
|
||||
}else if ((fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) && (type == WAN_TE1_SWIRQ_TYPE_ALARM_RAI)) {
|
||||
alarms &= ~WAN_TE_BIT_ALARM_RAI;
|
||||
}
|
||||
wan_clear_bit(1, (void*)&swirq->pending);
|
||||
|
@ -4444,18 +4509,28 @@ static int sdla_ds_te1_swirq_trigger(sdla_fe_t* fe, int type, int subtype, int d
|
|||
/* new swirq */
|
||||
fe->swirq[type].subtype = (u8)subtype;
|
||||
fe->swirq[type].start = SYSTEM_TICKS;
|
||||
fe->swirq[type].delay = delay;
|
||||
wan_set_bit(type, (void*)&fe->swirq_map);
|
||||
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) {
|
||||
fe->swirq[type].delay = delay;
|
||||
wan_set_bit(type, (void*)&fe->swirq_map);
|
||||
}
|
||||
}else{
|
||||
/* already in a process */
|
||||
if (fe->swirq[type].subtype != subtype){
|
||||
fe->swirq[type].subtype = (u8)subtype;
|
||||
fe->swirq[type].start = SYSTEM_TICKS;
|
||||
fe->swirq[type].delay = delay;
|
||||
wan_set_bit(type, (void*)&fe->swirq_map);
|
||||
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) {
|
||||
fe->swirq[type].delay = delay;
|
||||
wan_set_bit(type, (void*)&fe->swirq_map);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_YES) {
|
||||
fe->swirq[type].delay = delay;
|
||||
wan_set_bit(type, (void*)&fe->swirq_map);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -4488,10 +4563,11 @@ static int sdla_ds_te1_swirq(sdla_fe_t* fe)
|
|||
sdla_ds_te1_swirq_alarm(fe, WAN_TE1_SWIRQ_TYPE_ALARM_LOF);
|
||||
}
|
||||
|
||||
if (wan_test_bit(1, (void*)&fe->swirq[WAN_TE1_SWIRQ_TYPE_ALARM_RAI].pending)){
|
||||
sdla_ds_te1_swirq_alarm(fe, WAN_TE1_SWIRQ_TYPE_ALARM_RAI);
|
||||
if (fe->fe_cfg.cfg.te_cfg.ignore_debounce_alarm == WANOPT_NO) {
|
||||
if (wan_test_bit(1, (void*)&fe->swirq[WAN_TE1_SWIRQ_TYPE_ALARM_RAI].pending)){
|
||||
sdla_ds_te1_swirq_alarm(fe, WAN_TE1_SWIRQ_TYPE_ALARM_RAI);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -228,7 +228,11 @@ static int set_dev_config(struct file*, const char*, unsigned long, void *);
|
|||
static int set_if_info(struct file*, const char*, unsigned long, void *);
|
||||
#endif
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void atm_timer_poll(struct timer_list *t);
|
||||
#else
|
||||
static void atm_timer_poll(unsigned long data);
|
||||
#endif
|
||||
|
||||
static netdevice_t* move_dev_to_next (sdla_t *card, netdevice_t *dev);
|
||||
|
||||
|
@ -575,10 +579,20 @@ int wp_atm_init (sdla_t* card, wandev_conf_t* conf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void atm_timer_poll(struct timer_list *t)
|
||||
#else
|
||||
static void atm_timer_poll(unsigned long data)
|
||||
#endif
|
||||
{
|
||||
struct wan_dev_le *devle;
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_t *card = from_timer(card, t, u.atm.atm_timer.timer_info);
|
||||
#else
|
||||
sdla_t *card = (sdla_t *)data;
|
||||
#endif
|
||||
|
||||
netdevice_t *dev;
|
||||
private_area_t *chan;
|
||||
int err;
|
||||
|
|
|
@ -264,6 +264,9 @@ static void l1_timer_expire_t4(void* pfe);
|
|||
#elif defined(__WINDOWS__)
|
||||
static void l1_timer_expire_t3(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3);
|
||||
static void l1_timer_expire_t4(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void l1_timer_expire_t3(struct timer_list *t);
|
||||
static void l1_timer_expire_t4(struct timer_list *t);
|
||||
#else
|
||||
static void l1_timer_expire_t3(unsigned long pfe);
|
||||
static void l1_timer_expire_t4(unsigned long pfe);
|
||||
|
@ -281,6 +284,8 @@ static void __l1_timer_expire_t3(sdla_fe_t *fe);
|
|||
static void l1_timer_expire_t1(void* pfe);
|
||||
#elif defined(__WINDOWS__)
|
||||
static void l1_timer_expire_t1(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void l1_timer_expire_t1(struct timer_list *t);
|
||||
#else
|
||||
static void l1_timer_expire_t1(unsigned long pfe);
|
||||
#endif
|
||||
|
@ -2292,11 +2297,17 @@ static void l1_timer_stop_t3(void *pport)
|
|||
static void l1_timer_expire_t3(void* pport)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void l1_timer_expire_t3(IN PKDPC Dpc, void* pport, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void l1_timer_expire_t3(struct timer_list *t)
|
||||
#else
|
||||
static void l1_timer_expire_t3(unsigned long pport)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
bri_xhfc_port_t *port_ptr = from_timer(port_ptr, t, t3_timer.timer_info);
|
||||
#else
|
||||
bri_xhfc_port_t *port_ptr = (bri_xhfc_port_t*)pport;
|
||||
#endif
|
||||
wp_bri_module_t *bri_module = port_ptr->hw;
|
||||
sdla_fe_t *fe = (sdla_fe_t*)bri_module->fe;
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
|
@ -2408,11 +2419,17 @@ static void l1_timer_stop_t4(void *pport)
|
|||
static void l1_timer_expire_t4(void* pport)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void l1_timer_expire_t4(IN PKDPC Dpc, void* pport, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void l1_timer_expire_t4(struct timer_list *t)
|
||||
#else
|
||||
static void l1_timer_expire_t4(unsigned long pport)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
bri_xhfc_port_t *port_ptr = from_timer(port_ptr, t, t4_timer.timer_info);
|
||||
#else
|
||||
bri_xhfc_port_t *port_ptr = (bri_xhfc_port_t*)pport;
|
||||
#endif
|
||||
wp_bri_module_t *bri_module = port_ptr->hw;
|
||||
sdla_fe_t *fe = bri_module->fe;
|
||||
u8 mod_no, port_no;
|
||||
|
@ -2442,11 +2459,17 @@ static void l1_timer_expire_t4(unsigned long pport)
|
|||
static void l1_timer_expire_t1(void* pport)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void l1_timer_expire_t1(IN PKDPC Dpc, void* pport, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void l1_timer_expire_t1(struct timer_list *t)
|
||||
#else
|
||||
static void l1_timer_expire_t1(unsigned long pport)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
bri_xhfc_port_t *port_ptr = from_timer(port_ptr, t, t1_timer.timer_info);
|
||||
#else
|
||||
bri_xhfc_port_t *port_ptr = (bri_xhfc_port_t*)pport;
|
||||
#endif
|
||||
wp_bri_module_t *bri_module = port_ptr->hw;
|
||||
sdla_fe_t *fe = (sdla_fe_t*)bri_module->fe;
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
|
|
|
@ -237,7 +237,12 @@ static int config_chdlc (sdla_t *card, netdevice_t *dev);
|
|||
static void disable_comm (sdla_t *card);
|
||||
|
||||
static void trigger_chdlc_poll (netdevice_t *);
|
||||
static void trigger_chdlc_poll_priv_area (chdlc_private_area_t *);
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void chdlc_poll_delay (struct timer_list *t);
|
||||
#else
|
||||
static void chdlc_poll_delay (unsigned long dev_ptr);
|
||||
#endif
|
||||
static int chdlc_calibrate_baud (sdla_t *card);
|
||||
static int chdlc_read_baud_calibration (sdla_t *card);
|
||||
|
||||
|
@ -1111,9 +1116,13 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf)
|
|||
WAN_TASKQ_INIT((&chdlc_priv_area->poll_task),0,chdlc_poll,dev);
|
||||
|
||||
/* Initialize the polling delay timer */
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&chdlc_priv_area->poll_delay_timer, chdlc_poll_delay, 0);
|
||||
#else
|
||||
init_timer(&chdlc_priv_area->poll_delay_timer);
|
||||
chdlc_priv_area->poll_delay_timer.data = (unsigned long)dev;
|
||||
chdlc_priv_area->poll_delay_timer.function = chdlc_poll_delay;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Create interface file in proc fs.
|
||||
|
@ -4530,18 +4539,9 @@ static void chdlc_poll (struct work_struct *work)
|
|||
* a polling routine.
|
||||
*
|
||||
*/
|
||||
static void trigger_chdlc_poll (netdevice_t *dev)
|
||||
static void trigger_chdlc_poll_priv_area (chdlc_private_area_t *chdlc_priv_area)
|
||||
{
|
||||
chdlc_private_area_t *chdlc_priv_area;
|
||||
sdla_t *card;
|
||||
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
if ((chdlc_priv_area = wan_netif_priv(dev))==NULL)
|
||||
return;
|
||||
|
||||
card = chdlc_priv_area->card;
|
||||
sdla_t * card = chdlc_priv_area->card;
|
||||
|
||||
if (test_and_set_bit(POLL_CRIT,&card->wandev.critical)){
|
||||
return;
|
||||
|
@ -4553,13 +4553,32 @@ static void trigger_chdlc_poll (netdevice_t *dev)
|
|||
return;
|
||||
}
|
||||
|
||||
static void trigger_chdlc_poll (netdevice_t *dev)
|
||||
{
|
||||
chdlc_private_area_t *chdlc_priv_area;
|
||||
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
if ((chdlc_priv_area = wan_netif_priv(dev))==NULL)
|
||||
return;
|
||||
|
||||
trigger_chdlc_poll_priv_area(chdlc_priv_area);
|
||||
}
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void chdlc_poll_delay (struct timer_list *t)
|
||||
{
|
||||
chdlc_private_area_t *chdlc_priv_area = from_timer(chdlc_priv_area, t, poll_delay_timer);
|
||||
trigger_chdlc_poll_priv_area(chdlc_priv_area);
|
||||
}
|
||||
#else
|
||||
static void chdlc_poll_delay (unsigned long dev_ptr)
|
||||
{
|
||||
netdevice_t *dev = (netdevice_t *)dev_ptr;
|
||||
trigger_chdlc_poll(dev);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static int set_adapter_config (sdla_t* card)
|
||||
{
|
||||
|
|
|
@ -449,8 +449,12 @@ int is_arp(void *buf);
|
|||
int send_inarp_request(sdla_t *card, netdevice_t *dev);
|
||||
|
||||
static void trigger_fr_arp (netdevice_t *);
|
||||
static void fr_arp (unsigned long data);
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void fr_arp (struct timer_list *t);
|
||||
#else
|
||||
static void fr_arp (unsigned long data);
|
||||
#endif
|
||||
|
||||
/* Udp management functions */
|
||||
static int process_udp_mgmt_pkt(sdla_t *card, void *local_dev);
|
||||
|
@ -1282,9 +1286,13 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf)
|
|||
|
||||
WAN_TASKQ_INIT((&chan->fr_poll_task),0,fr_poll,dev);
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&chan->fr_arp_timer, fr_arp, 0);
|
||||
#else
|
||||
init_timer(&chan->fr_arp_timer);
|
||||
chan->fr_arp_timer.data=(unsigned long)dev;
|
||||
chan->fr_arp_timer.function = fr_arp;
|
||||
#endif
|
||||
|
||||
/* Tells us that if this interface is a
|
||||
* gateway or not */
|
||||
|
@ -5379,10 +5387,18 @@ static void trigger_fr_arp (netdevice_t *dev)
|
|||
* to the remote end.
|
||||
*/
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void fr_arp (struct timer_list *t)
|
||||
#else
|
||||
static void fr_arp (unsigned long data)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
fr_channel_t *chan = from_timer(chan, t, fr_arp_timer);
|
||||
#else
|
||||
netdevice_t *dev = (netdevice_t *)data;
|
||||
fr_channel_t *chan = wan_netif_priv(dev);
|
||||
#endif
|
||||
sdla_t *card = chan->card;
|
||||
|
||||
/* Send ARP packets for all devs' until
|
||||
|
|
|
@ -332,7 +332,12 @@ static int chk_bcast_mcast_addr(sdla_t* card, netdevice_t* dev,
|
|||
|
||||
static int config_ppp (sdla_t *);
|
||||
static void trigger_ppp_poll(netdevice_t *);
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void ppp_poll_delay (struct timer_list *t);
|
||||
#else
|
||||
static void ppp_poll_delay (unsigned long dev_ptr);
|
||||
#endif
|
||||
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
static void ppp_poll (void *card_ptr);
|
||||
|
@ -772,9 +777,13 @@ static int new_if(wan_device_t *wandev, netdevice_t *dev, wanif_conf_t *conf)
|
|||
WAN_TASKQ_INIT((&ppp_priv_area->poll_task),0,ppp_poll,dev);
|
||||
|
||||
/* Initialize the polling delay timer */
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&ppp_priv_area->poll_delay_timer, ppp_poll_delay, 0);
|
||||
#else
|
||||
init_timer(&ppp_priv_area->poll_delay_timer);
|
||||
ppp_priv_area->poll_delay_timer.data = (unsigned long)dev;
|
||||
ppp_priv_area->poll_delay_timer.function = ppp_poll_delay;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Create interface file in proc fs.
|
||||
|
@ -4048,32 +4057,44 @@ static void ppp_poll (struct work_struct *work)
|
|||
*
|
||||
*/
|
||||
|
||||
static void trigger_ppp_poll_priv_area (ppp_private_area_t *ppp_priv_area)
|
||||
{
|
||||
sdla_t *card = ppp_priv_area->card;
|
||||
|
||||
if (test_bit(PERI_CRIT,&card->wandev.critical)){
|
||||
return;
|
||||
}
|
||||
|
||||
if (test_and_set_bit(POLL_CRIT,&card->wandev.critical)){
|
||||
return;
|
||||
}
|
||||
|
||||
WAN_TASKQ_SCHEDULE((&ppp_priv_area->poll_task));
|
||||
}
|
||||
|
||||
static void trigger_ppp_poll (netdevice_t *dev)
|
||||
{
|
||||
ppp_private_area_t *ppp_priv_area;
|
||||
|
||||
if ((ppp_priv_area=wan_netif_priv(dev)) != NULL){
|
||||
|
||||
sdla_t *card = ppp_priv_area->card;
|
||||
|
||||
if (test_bit(PERI_CRIT,&card->wandev.critical)){
|
||||
return;
|
||||
}
|
||||
|
||||
if (test_and_set_bit(POLL_CRIT,&card->wandev.critical)){
|
||||
return;
|
||||
}
|
||||
|
||||
WAN_TASKQ_SCHEDULE((&ppp_priv_area->poll_task));
|
||||
trigger_ppp_poll_priv_area(ppp_priv_area);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void ppp_poll_delay (struct timer_list *t)
|
||||
{
|
||||
ppp_private_area_t *ppp_priv_area = from_timer(ppp_priv_area, t, poll_delay_timer);
|
||||
trigger_ppp_poll_priv_area(ppp_priv_area);
|
||||
}
|
||||
#else
|
||||
static void ppp_poll_delay (unsigned long dev_ptr)
|
||||
{
|
||||
netdevice_t *dev = (netdevice_t *)dev_ptr;
|
||||
trigger_ppp_poll(dev);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*============================================================
|
||||
* detect_and_fix_tx_bug
|
||||
|
|
|
@ -423,6 +423,8 @@ static int wp_remora_add_timer(sdla_fe_t*, unsigned long);
|
|||
static void wp_remora_timer(void*);
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wp_remora_timer(IN PKDPC,void*,void*,void*);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wp_remora_timer(struct timer_list *t);
|
||||
#else
|
||||
static void wp_remora_timer(unsigned long);
|
||||
#endif
|
||||
|
@ -2000,11 +2002,17 @@ static int wp_remora_set_dtmf(sdla_fe_t *fe, int mod_no, unsigned char val)
|
|||
static void wp_remora_timer(void* pfe)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wp_remora_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wp_remora_timer(struct timer_list *t)
|
||||
#else
|
||||
static void wp_remora_timer(unsigned long pfe)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_fe_t *fe = from_timer(fe, t, timer.timer_info);
|
||||
#else
|
||||
sdla_fe_t *fe = (sdla_fe_t*)pfe;
|
||||
#endif
|
||||
|
||||
DEBUG_TEST("%s: RM timer!\n", fe->name);
|
||||
|
||||
|
|
|
@ -2304,6 +2304,8 @@ static int sdla_te_txlbcode_done(sdla_fe_t *fe);
|
|||
static void sdla_te_timer(void*);
|
||||
#elif defined(__WINDOWS__)
|
||||
static void sdla_te_timer(IN PKDPC,void*,void*,void*);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sdla_te_timer(struct timer_list *t);
|
||||
#else
|
||||
static void sdla_te_timer(unsigned long);
|
||||
#endif
|
||||
|
@ -6322,11 +6324,18 @@ static u32 sdla_te_get_lbmode(sdla_fe_t *fe)
|
|||
static void sdla_te_timer(void* pfe)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void sdla_te_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sdla_te_timer(struct timer_list *t)
|
||||
#else
|
||||
static void sdla_te_timer(unsigned long pfe)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_fe_t *fe = from_timer(fe, t, timer.timer_info
|
||||
);
|
||||
#else
|
||||
sdla_fe_t *fe = (sdla_fe_t*)pfe;
|
||||
#endif
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
wan_device_t *wandev = &card->wandev;
|
||||
wan_smp_flag_t smp_flags;
|
||||
|
|
|
@ -1387,11 +1387,17 @@ static int sdla_te3_add_timer(sdla_fe_t* fe, unsigned long delay)
|
|||
static void sdla_te3_timer(void* pfe)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void sdla_te3_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sdla_te3_timer(struct timer_list *t)
|
||||
#else
|
||||
static void sdla_te3_timer(unsigned long pfe)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_fe_t *fe = from_timer(fe, t, timer.timer_info);
|
||||
#else
|
||||
sdla_fe_t *fe = (sdla_fe_t*)pfe;
|
||||
#endif
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
wan_device_t *wandev = &card->wandev;
|
||||
|
||||
|
|
|
@ -411,6 +411,8 @@ static int wp_usb_remora_add_event(sdla_fe_t*, sdla_fe_timer_event_t*);
|
|||
static void wp_usb_remora_timer(void*);
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wp_usb_remora_timer(IN PKDPC,void*,void*,void*);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wp_usb_remora_timer(struct timer_list *t);
|
||||
#else
|
||||
static void wp_usb_remora_timer(unsigned long);
|
||||
#endif
|
||||
|
@ -1807,14 +1809,21 @@ static int wp_usb_remora_set_dtmf(sdla_fe_t *fe, int mod_no, unsigned char val)
|
|||
******************************************************************************
|
||||
*/
|
||||
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
static void wp_usb_remora_timer(void* pfe)
|
||||
static void
|
||||
wp_usb_remora_timer(void* pfe)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wp_usb_remora_timer(IN PKDPC Dpc, void* pfe, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wp_usb_remora_timer(struct timer_list *t)
|
||||
#else
|
||||
static void wp_usb_remora_timer(unsigned long pfe)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_fe_t *fe = from_timer(fe, t, timer.timer_info);
|
||||
#else
|
||||
sdla_fe_t *fe = (sdla_fe_t*)pfe;
|
||||
#endif
|
||||
sdla_t *card = (sdla_t*)fe->card;
|
||||
wan_device_t *wandev = &card->wandev;
|
||||
wan_smp_flag_t smp_flags;
|
||||
|
|
|
@ -430,7 +430,7 @@ static netdevice_t * move_dev_to_next (sdla_t *, netdevice_t *);
|
|||
/*=================================================
|
||||
* Background polling routines
|
||||
*/
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
static void wpx_poll (void *card_ptr);
|
||||
#else
|
||||
static void wpx_poll (struct work_struct *work);
|
||||
|
@ -439,7 +439,11 @@ static void poll_disconnected (sdla_t* card);
|
|||
static void poll_connecting (sdla_t* card);
|
||||
static void poll_active (sdla_t* card);
|
||||
static void trigger_x25_poll(sdla_t *card);
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void x25_timer_routine(struct timer_list *t);
|
||||
#else
|
||||
static void x25_timer_routine(unsigned long data);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
@ -994,9 +998,13 @@ int wpx_init (sdla_t* card, wandev_conf_t* conf)
|
|||
|
||||
WAN_TASKQ_INIT((&card->u.x.x25_poll_task),0,wpx_poll,card);
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&card->u.x.x25_timer, x25_timer_routine, 0);
|
||||
#else
|
||||
init_timer(&card->u.x.x25_timer);
|
||||
card->u.x.x25_timer.data = (unsigned long)card;
|
||||
card->u.x.x25_timer.function = x25_timer_routine;
|
||||
#endif
|
||||
|
||||
skb_queue_head_init(&card->u.x.trace_queue);
|
||||
|
||||
|
@ -2359,7 +2367,9 @@ static void rx_intr (sdla_t* card)
|
|||
return;
|
||||
}
|
||||
|
||||
#if KERN_TIMER_SETUP == 0
|
||||
dev->last_rx = jiffies; /* timestamp */
|
||||
#endif
|
||||
|
||||
/* set rx_skb to NULL so we won't access it later when
|
||||
* kernel already owns it */
|
||||
|
@ -3069,7 +3079,7 @@ static void spur_intr (sdla_t* card)
|
|||
* enabled. Beware!
|
||||
*====================================================================*/
|
||||
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20))
|
||||
static void wpx_poll (void *card_ptr)
|
||||
#else
|
||||
static void wpx_poll (struct work_struct *work)
|
||||
|
@ -4902,10 +4912,12 @@ static int chan_send (netdevice_t* dev, void* buff, unsigned data_len, unsigned
|
|||
case 0x00: /* success */
|
||||
chan->i_timeout_sofar = jiffies;
|
||||
|
||||
#if defined(LINUX_2_4)||defined(LINUX_2_6)
|
||||
# if defined(KERN_NETIF_TRANS_UPDATE) && KERN_NETIF_TRANS_UPDATE > 0
|
||||
netif_trans_update(dev);
|
||||
#elif defined(LINUX_2_4)||defined(LINUX_2_6)
|
||||
dev->trans_start=jiffies;
|
||||
#endif
|
||||
|
||||
|
||||
if ((qdm & M_BIT) && !card->u.x.LAPB_hdlc){
|
||||
|
||||
chan->tx_offset += len;
|
||||
|
@ -6640,10 +6652,17 @@ static void S508_S514_unlock(sdla_t *card, unsigned long *smp_flags)
|
|||
*
|
||||
* FIXME Polling should be rethinked.
|
||||
*==============================================================*/
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void x25_timer_routine(struct timer_list *t)
|
||||
#else
|
||||
static void x25_timer_routine(unsigned long data)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_t *card = from_timer(card, t, u.x.x25_timer);
|
||||
#else
|
||||
sdla_t *card = (sdla_t*)data;
|
||||
#endif
|
||||
|
||||
if (test_bit(PERI_CRIT,&card->wandev.critical)){
|
||||
printk(KERN_INFO "%s: Stopping the X25 Poll Timer: Shutting down.\n",
|
||||
|
|
|
@ -154,17 +154,27 @@ static struct cdev wp_cdev_dev = {
|
|||
/* Global WANDEV Structure */
|
||||
static wanpipe_cdev_device_t wandev;
|
||||
|
||||
#if defined(KERN_CLASS_DEV_GROUPS) && KERN_CLASS_DEV_GROUPS > 0
|
||||
static struct attribute * wanpipe_device_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
ATTRIBUTE_GROUPS(wanpipe_device);
|
||||
#else
|
||||
static struct device_attribute wanpipe_device_attrs[] = {
|
||||
__ATTR_NULL,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct bus_type wanpipe_device_bus = {
|
||||
.name = "wanpipe_devices",
|
||||
#if defined(KERN_CLASS_DEV_GROUPS) && KERN_CLASS_DEV_GROUPS > 0
|
||||
.dev_groups = wanpipe_device_groups,
|
||||
#else
|
||||
.dev_attrs = wanpipe_device_attrs,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*=========================================================
|
||||
* PUBLIC FUNCTIONS
|
||||
*========================================================*/
|
||||
|
|
|
@ -1159,7 +1159,7 @@ static void if_tx_timeout (netdevice_t *dev)
|
|||
card->devname,wan_netif_name(dev));
|
||||
WAN_NETIF_WAKE_QUEUE (dev);
|
||||
#if defined(__LINUX__)
|
||||
# if (LINUX_VERSION_CODE > KERNEL_VERSION(4,7,0))
|
||||
# if defined(KERN_NETIF_TRANS_UPDATE) && KERN_NETIF_TRANS_UPDATE > 0
|
||||
netif_trans_update(dev);
|
||||
# else
|
||||
dev->trans_start = SYSTEM_TICKS;
|
||||
|
@ -1379,7 +1379,7 @@ static int if_send(netdevice_t *dev, netskb_t *skb, struct sockaddr *dst,struct
|
|||
++card->wandev.stats.tx_packets;
|
||||
card->wandev.stats.tx_bytes += wan_skb_len(skb);
|
||||
#if defined(__LINUX__)
|
||||
# if (LINUX_VERSION_CODE > KERNEL_VERSION(4,7,0))
|
||||
# if defined(KERN_NETIF_TRANS_UPDATE) && KERN_NETIF_TRANS_UPDATE > 0
|
||||
netif_trans_update(dev);
|
||||
# else
|
||||
dev->trans_start = SYSTEM_TICKS;
|
||||
|
|
|
@ -240,7 +240,12 @@ static struct timer_list sppp_keepalive_timer;
|
|||
wan_spinlock_t spppq_lock;
|
||||
wan_spinlock_t authenticate_lock;
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sppp_keepalive (struct timer_list *t);
|
||||
#else
|
||||
static void sppp_keepalive (unsigned long dummy);
|
||||
#endif
|
||||
|
||||
static void sppp_cp_send (struct sppp *sp, u16 proto, u8 type,
|
||||
u8 ident, u16 len, void *data);
|
||||
static void sppp_cisco_send (struct sppp *sp, int type, long par1, long par2);
|
||||
|
@ -251,7 +256,11 @@ static void sppp_lcp_open (struct sppp *sp);
|
|||
static void sppp_ipcp_open (struct sppp *sp);
|
||||
static int sppp_lcp_conf_parse_options (struct sppp *sp, struct lcp_header *h,
|
||||
int len, u32 *magic);
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sppp_cp_timeout (struct timer_list *t);
|
||||
#else
|
||||
static void sppp_cp_timeout (unsigned long arg);
|
||||
#endif
|
||||
static char *sppp_lcp_type_name (u8 type);
|
||||
static char *sppp_ipcp_type_name (u8 type);
|
||||
static void sppp_print_bytes (u8 *p, u16 len);
|
||||
|
@ -363,10 +372,15 @@ static void sppp_set_timeout(struct sppp *p,int s)
|
|||
{
|
||||
if (! (p->pp_flags & PP_TIMO))
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&p->pp_timer, sppp_cp_timeout, 0);
|
||||
mod_timer(&p->pp_timer, jiffies+s*HZ);
|
||||
#else
|
||||
init_timer(&p->pp_timer);
|
||||
p->pp_timer.function=sppp_cp_timeout;
|
||||
p->pp_timer.expires=jiffies+s*HZ;
|
||||
p->pp_timer.data=(unsigned long)p;
|
||||
#endif
|
||||
p->pp_flags |= PP_TIMO;
|
||||
add_timer(&p->pp_timer);
|
||||
}
|
||||
|
@ -397,10 +411,15 @@ static void auth_timeout(void * function, struct sppp *p, unsigned int seconds)
|
|||
if (! (p->pp_auth_flags & PP_TIMO1))
|
||||
{
|
||||
printk(KERN_INFO "starting pp_auth_timer...\n");
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&p->pp_auth_timer, function, 0);
|
||||
mod_timer(&p->pp_auth_timer, jiffies + seconds * HZ);
|
||||
#else
|
||||
init_timer(&p->pp_auth_timer);
|
||||
p->pp_auth_timer.function = function;
|
||||
p->pp_auth_timer.expires = jiffies + seconds * HZ;
|
||||
p->pp_auth_timer.data = (unsigned long)p;
|
||||
#endif
|
||||
p->pp_auth_flags |= PP_TIMO1;
|
||||
add_timer(&p->pp_auth_timer);
|
||||
}
|
||||
|
@ -1465,7 +1484,11 @@ static const struct header_ops sppp_header_ops = {
|
|||
* Send keepalive packets, every 10 seconds.
|
||||
*/
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sppp_keepalive (struct timer_list *dummy)
|
||||
#else
|
||||
static void sppp_keepalive (unsigned long dummy)
|
||||
#endif
|
||||
{
|
||||
struct sppp *sp;
|
||||
//unsigned long flags;
|
||||
|
@ -2250,10 +2273,15 @@ void wp_sppp_attach(struct ppp_device *pd)
|
|||
/* Initialize keepalive handler. */
|
||||
if (! spppq)
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
timer_setup(&sppp_keepalive_timer, sppp_keepalive, 0);
|
||||
mod_timer(&sppp_keepalive_timer, jiffies+10*HZ);
|
||||
#else
|
||||
init_timer(&sppp_keepalive_timer);
|
||||
sppp_keepalive_timer.expires=jiffies+10*HZ;
|
||||
sppp_keepalive_timer.function=sppp_keepalive;
|
||||
add_timer(&sppp_keepalive_timer);
|
||||
#endif
|
||||
}
|
||||
/* Insert new entry into the keepalive list. */
|
||||
sp->pp_next = spppq;
|
||||
|
@ -2995,10 +3023,17 @@ static void sppp_ipcp_open (struct sppp *sp)
|
|||
/*
|
||||
* Process PPP control protocol timeouts.
|
||||
*/
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void sppp_cp_timeout (struct timer_list *t)
|
||||
#else
|
||||
static void sppp_cp_timeout (unsigned long arg)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
struct sppp *sp = from_timer(sp, t, pp_timer);
|
||||
#else
|
||||
struct sppp *sp = (struct sppp*) arg;
|
||||
#endif
|
||||
//unsigned long flags;
|
||||
|
||||
//wan_spin_lock_irq(&spppq_lock, &flags);
|
||||
|
|
|
@ -69,6 +69,8 @@ static void wanpipe_debug_timer(void* arg);
|
|||
#elif defined(__WINDOWS__)
|
||||
static void wanpipe_debug_timer(IN PKDPC Dpc, void* arg, void* arg2, void* arg3);
|
||||
extern int set_netdev_state(sdla_t* card, netdevice_t* sdla_net_dev, int state);
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wanpipe_debug_timer(struct timer_list *t);
|
||||
#else
|
||||
static void wanpipe_debug_timer(unsigned long arg);
|
||||
#endif
|
||||
|
@ -498,11 +500,17 @@ void wanpipe_debug_timer_init(void* card_id)
|
|||
static void wanpipe_debug_timer(void* arg)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wanpipe_debug_timer(IN PKDPC Dpc, void* arg, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wanpipe_debug_timer(struct timer_list *t)
|
||||
#else
|
||||
static void wanpipe_debug_timer(unsigned long arg)
|
||||
#endif
|
||||
{
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
sdla_t* card = from_timer(card, t, debug_timer.timer_info);
|
||||
#else
|
||||
sdla_t* card = (sdla_t*)arg;
|
||||
#endif
|
||||
wan_tasklet_t* debug_task = NULL;
|
||||
/*
|
||||
** I should set running flag to zero in order to
|
||||
|
|
|
@ -211,7 +211,11 @@ static int wanpipe_ioctl(struct socket *sock, unsigned int cmd, unsigned long ar
|
|||
switch(cmd)
|
||||
{
|
||||
case SIOC_WANPIPE_CHECK_TX:
|
||||
#if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
if (refcount_read(&sk->sk_wmem_alloc))
|
||||
#else
|
||||
if (atomic_read(&sk->sk_wmem_alloc))
|
||||
#endif
|
||||
return 1;
|
||||
|
||||
goto dev_private_ioctl;
|
||||
|
@ -564,8 +568,11 @@ static int wanpipe_listen(struct socket *sock, int backlog)
|
|||
* For each incoming call, create a new socket and
|
||||
* return it to the user.
|
||||
*=====================================================================*/
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static int wanpipe_accept(struct socket *sock, struct socket *newsock, int flags, bool kern)
|
||||
#else
|
||||
static int wanpipe_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
#endif
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sock *newsk=NULL, *newsk_frmskb=NULL;
|
||||
|
@ -1086,11 +1093,19 @@ void wanpipe_kill_sock (struct sock *sk)
|
|||
SK_PRIV_INIT(sk,NULL);
|
||||
|
||||
#if defined(LINUX_2_4)||defined(LINUX_2_6)
|
||||
#if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
if (refcount_read(&sk->sk_refcnt) != 1){
|
||||
DEBUG_TEST("af_wanpipe: Error, wrong reference count: %i ! :Kill.\n",
|
||||
refcount_read(&sk->sk_refcnt));
|
||||
refcount_set(&sk->sk_refcnt,1);
|
||||
}
|
||||
#else
|
||||
if (atomic_read(&sk->sk_refcnt) != 1){
|
||||
DEBUG_TEST("af_wanpipe: Error, wrong reference count: %i ! :Kill.\n",
|
||||
atomic_read(&sk->sk_refcnt));
|
||||
atomic_set(&sk->sk_refcnt,1);
|
||||
}
|
||||
#endif
|
||||
sock_put(sk);
|
||||
#else
|
||||
sk_free(sk);
|
||||
|
@ -1277,11 +1292,19 @@ static int wanpipe_release(struct socket *sock, struct socket *peersock)
|
|||
SK_PRIV_INIT(sk,NULL);
|
||||
|
||||
#if defined(LINUX_2_4)||defined(LINUX_2_6)
|
||||
#if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
if (refcount_read(&sk->sk_refcnt) != 1){
|
||||
DEBUG_EVENT("af_wanpipe: Error, wrong reference count: %i !:release.\n",
|
||||
refcount_read(&sk->sk_refcnt));
|
||||
refcount_set(&sk->sk_refcnt,1);
|
||||
}
|
||||
#else
|
||||
if (atomic_read(&sk->sk_refcnt) != 1){
|
||||
DEBUG_EVENT("af_wanpipe: Error, wrong reference count: %i !:release.\n",
|
||||
atomic_read(&sk->sk_refcnt));
|
||||
atomic_set(&sk->sk_refcnt,1);
|
||||
}
|
||||
#endif
|
||||
sock_put(sk);
|
||||
#else
|
||||
sk_free(sk);
|
||||
|
@ -1311,7 +1334,11 @@ static void check_write_queue(struct sock *sk)
|
|||
if (sk->sk_state != WANSOCK_CONNECTED)
|
||||
return;
|
||||
|
||||
#if defined(KERN_REFCNT_UPDATE) && KERN_REFCNT_UPDATE > 0
|
||||
if (!refcount_read(&sk->sk_wmem_alloc))
|
||||
#else
|
||||
if (!atomic_read(&sk->sk_wmem_alloc))
|
||||
#endif
|
||||
return;
|
||||
|
||||
printk(KERN_INFO "af_wanpipe: MAJOR ERROR, Data lost on sock release !!!\n");
|
||||
|
|
|
@ -464,13 +464,18 @@ wanec_bypass(wan_ec_dev_t *ec_dev, int fe_chan, int enable, int verbose)
|
|||
static void wanec_timer(void* p_ec_dev)
|
||||
#elif defined(__WINDOWS__)
|
||||
static void wanec_timer(IN PKDPC Dpc, void* p_ec_dev, void* arg2, void* arg3)
|
||||
#elif defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
static void wanec_timer(struct timer_list *t)
|
||||
#else
|
||||
static void wanec_timer(unsigned long p_ec_dev)
|
||||
#endif
|
||||
{
|
||||
wan_ec_dev_t *ec_dev = (wan_ec_dev_t*)p_ec_dev;
|
||||
sdla_t *card = NULL;
|
||||
|
||||
#if defined(KERN_TIMER_SETUP) && KERN_TIMER_SETUP > 0
|
||||
wan_ec_dev_t *ec_dev = from_timer(ec_dev, t, timer.timer_info);
|
||||
#else
|
||||
wan_ec_dev_t *ec_dev = (wan_ec_dev_t*)p_ec_dev;
|
||||
#endif
|
||||
WAN_ASSERT1(ec_dev == NULL);
|
||||
WAN_ASSERT1(ec_dev->card == NULL);
|
||||
card = (sdla_t*)ec_dev->card;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%define WANPIPE_VER wanpipe-modules
|
||||
%define name %{WANPIPE_VER}
|
||||
%define version 7.0.25.1
|
||||
%define version 7.0.26
|
||||
%define release 0
|
||||
%define serial 1
|
||||
%define MODULES_DIR /lib/modules
|
||||
|
@ -58,6 +58,11 @@ fi
|
|||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 02 2019 Pushkar Singh <psingh@sangoma.com> - 7.0.26
|
||||
==================================================================
|
||||
- Support for Kernel version 4.15+
|
||||
- Support for GLIBC version 2.27+
|
||||
|
||||
* Wed Feb 23 2019 Nenad Corbic <ncorbic@sangoma.com> - 7.0.25
|
||||
==================================================================
|
||||
- Fix the build for DATA
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%define WANPIPE_VER wanpipe-util
|
||||
%define name %{WANPIPE_VER}
|
||||
%define version 7.0.25.1
|
||||
%define version 7.0.26
|
||||
%define release 0
|
||||
%define serial 1
|
||||
%define UTILS_DIR /usr/sbin
|
||||
|
@ -228,6 +228,11 @@ chmod 755 /usr/local/sbin/setup-sangoma
|
|||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 02 2019 Pushkar Singh <psingh@sangoma.com> - 7.0.26
|
||||
==================================================================
|
||||
- Support for Kernel version 4.15+
|
||||
- Support for GLIBC version 2.27+
|
||||
|
||||
* Wed Feb 23 2019 Nenad Corbic <ncorbic@sangoma.com> - 7.0.25
|
||||
==================================================================
|
||||
- Fix the build for DATA
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%define KERNEL_VERSION %{?kern_ver}
|
||||
%define WANPIPE_VER wanpipe
|
||||
%define name %{WANPIPE_VER}
|
||||
%define version 7.0.25.1
|
||||
%define version 7.0.26
|
||||
%define release 0
|
||||
%define serial 1
|
||||
%define UTILS_DIR /usr/sbin
|
||||
|
@ -245,6 +245,11 @@ chmod 755 /usr/local/sbin/setup-sangoma
|
|||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 02 2019 Pushkar Singh <psingh@sangoma.com> - 7.0.26
|
||||
==================================================================
|
||||
- Support for Kernel version 4.15+
|
||||
- Support for GLIBC version 2.27+
|
||||
|
||||
* Wed Feb 23 2019 Nenad Corbic <ncorbic@sangoma.com> - 7.0.25
|
||||
==================================================================
|
||||
- Fix the build for DATA
|
||||
|
|
|
@ -2231,7 +2231,7 @@ init_global_params()
|
|||
{
|
||||
|
||||
if [ $OSYSTEM = "Linux" ]; then
|
||||
ROUTER_VERSION=7.0.25.1
|
||||
ROUTER_VERSION=7.0.26
|
||||
IFCONFIG_LIST=ifconfig
|
||||
MODULE_STAT=lsmod
|
||||
WAN_DRIVERS="wanpipe"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
@ -282,6 +283,7 @@ static key_word_t common_conftab[] = /* Common configuration parameters */
|
|||
{ "TE_REF_CLOCK", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, te_ref_clock), DTYPE_UCHAR },
|
||||
{ "TE_SIG_MODE", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, sig_mode), DTYPE_UCHAR },
|
||||
{ "TE_IGNORE_YEL", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, ignore_yel_alarm), DTYPE_UCHAR },
|
||||
{ "TE_IGNORE_DEBOUNCE", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, ignore_debounce_alarm), DTYPE_UCHAR },
|
||||
{ "TE_AIS_MAINTENANCE", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, ais_maintenance), DTYPE_UCHAR },
|
||||
{ "TE_AIS_AUTO_ON_LOS", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_te_cfg_t, ais_auto_on_los), DTYPE_UCHAR },
|
||||
/* T1/E1 Front-End parameters (old style) */
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#
|
||||
|
||||
%define NAME wanpipe
|
||||
%define VERSION 7.0.25.1
|
||||
%define VERSION 7.0.26
|
||||
%define RELEASE 0
|
||||
%define KVERSION %{?kernel}
|
||||
%define KSRC %{?ksrc}
|
||||
|
@ -259,6 +259,11 @@ fi
|
|||
################################################################################
|
||||
|
||||
%changelog
|
||||
* Tue Apr 02 2019 Pushkar Singh <psingh@sangoma.com> - 7.0.26
|
||||
==================================================================
|
||||
- Support for Kernel version 4.15+
|
||||
- Support for GLIBC version 2.27+
|
||||
|
||||
* Wed Feb 23 2019 Nenad Corbic <ncorbic@sangoma.com> - 7.0.25
|
||||
==================================================================
|
||||
- Fix the build for DATA
|
||||
|
|
Loading…
Reference in New Issue