From c9ef3c49278fbac296b1d730aa1632910bc17ad9 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Mon, 22 Aug 2005 13:56:53 +0000
Subject: [PATCH] fix atm driver build, fix static build of sched and crypto
 stuff

SVN-Revision: 1724
---
 openwrt/target/linux/linux-2.4/Makefile       |  10 +-
 .../patches/ar7/004-atm_driver.patch          | 625 ++----------------
 2 files changed, 77 insertions(+), 558 deletions(-)

diff --git a/openwrt/target/linux/linux-2.4/Makefile b/openwrt/target/linux/linux-2.4/Makefile
index afff6c11fa..71b8420f50 100644
--- a/openwrt/target/linux/linux-2.4/Makefile
+++ b/openwrt/target/linux/linux-2.4/Makefile
@@ -142,9 +142,12 @@ $(eval $(call KMOD_template,VFAT,vfat,\
 	$(MODULES_DIR)/kernel/fs/vfat/vfat.o \
 	$(MODULES_DIR)/kernel/fs/fat/fat.o \
 ,CONFIG_VFAT_FS,,30,fat vfat))
+ifneq (${shell ls $(MODULES_DIR)/kernel/crypto/*.o},)
+CONFIG_CRYPTO:=m
+endif
 $(eval $(call KMOD_template,CRYPTO,crypto,\
 	$(MODULES_DIR)/kernel/crypto/*.o \
-))
+,CONFIG_CRYPTO))
 $(eval $(call KMOD_template,PPP,ppp,\
 	$(MODULES_DIR)/kernel/drivers/net/ppp_async.o \
 	$(MODULES_DIR)/kernel/drivers/net/ppp_generic.o \
@@ -163,9 +166,12 @@ $(eval $(call KMOD_template,TUN,tun,\
 $(eval $(call KMOD_template,GRE,gre,\
 	$(MODULES_DIR)/kernel/net/ipv4/ip_gre.o \
 ,CONFIG_NET_IPGRE))
+ifneq (${shell ls $(MODULES_DIR)/kernel/net/sched/*.o},)
+CONFIG_SCHED:=m
+endif
 $(eval $(call KMOD_template,SCHED,sched,\
 	$(MODULES_DIR)/kernel/net/sched/*.o \
-))
+,CONFIG_SCHED))
 $(eval $(call KMOD_template,VIDEODEV,videodev,\
 	$(MODULES_DIR)/kernel/drivers/media/video/videodev.o \
 ,CONFIG_VIDEO_DEV))
diff --git a/openwrt/target/linux/linux-2.4/patches/ar7/004-atm_driver.patch b/openwrt/target/linux/linux-2.4/patches/ar7/004-atm_driver.patch
index bed3a8160d..885609904c 100644
--- a/openwrt/target/linux/linux-2.4/patches/ar7/004-atm_driver.patch
+++ b/openwrt/target/linux/linux-2.4/patches/ar7/004-atm_driver.patch
@@ -1,6 +1,6 @@
 diff -urN linux.old/drivers/atm/Config.in linux.dev/drivers/atm/Config.in
---- linux.old/drivers/atm/Config.in	2005-08-13 00:39:58.084910600 +0200
-+++ linux.dev/drivers/atm/Config.in	2005-08-13 02:47:40.527042336 +0200
+--- linux.old/drivers/atm/Config.in	2005-08-22 23:18:37.773532032 +0200
++++ linux.dev/drivers/atm/Config.in	2005-08-22 23:17:42.413947968 +0200
 @@ -99,4 +99,10 @@
      bool 'Use S/UNI PHY driver' CONFIG_ATM_HE_USE_SUNI
    fi
@@ -13,8 +13,8 @@ diff -urN linux.old/drivers/atm/Config.in linux.dev/drivers/atm/Config.in
 +fi
  endmenu
 diff -urN linux.old/drivers/atm/Makefile linux.dev/drivers/atm/Makefile
---- linux.old/drivers/atm/Makefile	2005-08-13 00:39:58.085910448 +0200
-+++ linux.dev/drivers/atm/Makefile	2005-08-13 02:47:40.527042336 +0200
+--- linux.old/drivers/atm/Makefile	2005-08-22 23:18:37.773532032 +0200
++++ linux.dev/drivers/atm/Makefile	2005-08-22 23:17:42.413947968 +0200
 @@ -14,6 +14,32 @@
  obj-$(CONFIG_ATM_NICSTAR) += nicstar.o
  obj-$(CONFIG_ATM_IDT77252) += idt77252.o
@@ -50,7 +50,7 @@ diff -urN linux.old/drivers/atm/Makefile linux.dev/drivers/atm/Makefile
  endif
 diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.c linux.dev/drivers/atm/sangam_atm/aal5sar.c
 --- linux.old/drivers/atm/sangam_atm/aal5sar.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/aal5sar.c	2005-08-13 02:47:40.530041880 +0200
++++ linux.dev/drivers/atm/sangam_atm/aal5sar.c	2005-08-22 23:17:42.416947512 +0200
 @@ -0,0 +1,2962 @@
 +
 +/**
@@ -3016,7 +3016,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.c linux.dev/drivers/atm/sanga
 +  }
 diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.h linux.dev/drivers/atm/sangam_atm/aal5sar.h
 --- linux.old/drivers/atm/sangam_atm/aal5sar.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/aal5sar.h	2005-08-13 02:47:40.531041728 +0200
++++ linux.dev/drivers/atm/sangam_atm/aal5sar.h	2005-08-22 23:17:42.417947360 +0200
 @@ -0,0 +1,198 @@
 +/**@file************************************************************************
 + *  TNETDxxxx Software Support
@@ -3218,7 +3218,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.h linux.dev/drivers/atm/sanga
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.c linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.c
 --- linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.c	2005-08-13 02:47:40.532041576 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.c	2005-08-22 23:17:42.418947208 +0200
 @@ -0,0 +1,728 @@
 +#ifndef _INC_CPCOMMON_C
 +#define _INC_CPCOMMON_C
@@ -3950,7 +3950,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.c linux.dev/drivers/a
 +#endif  /* _INC  */
 diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.h
 --- linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.h	2005-08-13 02:47:40.532041576 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.h	2005-08-22 23:17:42.418947208 +0200
 @@ -0,0 +1,79 @@
 +#ifndef _INC_CPCOMMON_H
 +#define _INC_CPCOMMON_H
@@ -4033,7 +4033,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.h linux.dev/drivers/a
 +
 diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.c linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.c
 --- linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.c	2005-08-13 02:47:40.533041424 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.c	2005-08-22 23:17:42.419947056 +0200
 @@ -0,0 +1,728 @@
 +#ifndef _INC_CPCOMMON_C
 +#define _INC_CPCOMMON_C
@@ -4765,7 +4765,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.c linux.dev/drivers/at
 +#endif  /* _INC  */
 diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.h linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.h
 --- linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.h	2005-08-13 02:47:40.533041424 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.h	2005-08-22 23:17:42.419947056 +0200
 @@ -0,0 +1,79 @@
 +#ifndef _INC_CPCOMMON_H
 +#define _INC_CPCOMMON_H
@@ -4848,7 +4848,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.h linux.dev/drivers/at
 +
 diff -urN linux.old/drivers/atm/sangam_atm/cppi_cpaal5.c linux.dev/drivers/atm/sangam_atm/cppi_cpaal5.c
 --- linux.old/drivers/atm/sangam_atm/cppi_cpaal5.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cppi_cpaal5.c	2005-08-13 02:47:40.535041120 +0200
++++ linux.dev/drivers/atm/sangam_atm/cppi_cpaal5.c	2005-08-22 23:17:42.421946752 +0200
 @@ -0,0 +1,1483 @@
 +/*************************************************************************
 + *  TNETDxxxx Software Support
@@ -6335,7 +6335,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cppi_cpaal5.c linux.dev/drivers/atm/s
 +  }
 diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpaal5.c linux.dev/drivers/atm/sangam_atm/cpremap_cpaal5.c
 --- linux.old/drivers/atm/sangam_atm/cpremap_cpaal5.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpremap_cpaal5.c	2005-08-13 02:47:40.535041120 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpremap_cpaal5.c	2005-08-22 23:17:42.421946752 +0200
 @@ -0,0 +1,27 @@
 +#ifndef _INC_CPREMAP_C
 +#define _INC_CPREMAP_C
@@ -6366,7 +6366,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpaal5.c linux.dev/drivers/at
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpsar.c linux.dev/drivers/atm/sangam_atm/cpremap_cpsar.c
 --- linux.old/drivers/atm/sangam_atm/cpremap_cpsar.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpremap_cpsar.c	2005-08-13 02:47:40.535041120 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpremap_cpsar.c	2005-08-22 23:17:42.421946752 +0200
 @@ -0,0 +1,27 @@
 +#ifndef _INC_CPREMAP_C
 +#define _INC_CPREMAP_C
@@ -6397,7 +6397,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpsar.c linux.dev/drivers/atm
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/cpsar.c linux.dev/drivers/atm/sangam_atm/cpsar.c
 --- linux.old/drivers/atm/sangam_atm/cpsar.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar.c	2005-08-13 02:47:40.536040968 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpsar.c	2005-08-22 23:17:42.422946600 +0200
 @@ -0,0 +1,881 @@
 +/**
 + *  cpsar.c
@@ -7282,7 +7282,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpsar.c linux.dev/drivers/atm/sangam_
 +  }
 diff -urN linux.old/drivers/atm/sangam_atm/cpsar_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpsar_cpaal5.h
 --- linux.old/drivers/atm/sangam_atm/cpsar_cpaal5.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar_cpaal5.h	2005-08-13 02:47:40.536040968 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpsar_cpaal5.h	2005-08-22 23:17:42.422946600 +0200
 @@ -0,0 +1,103 @@
 +/*******************************************************************************
 + *  TNETDxxxx Software Support
@@ -7389,7 +7389,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpsar_cpaal5.h linux.dev/drivers/atm/
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/cpsar.h linux.dev/drivers/atm/sangam_atm/cpsar.h
 --- linux.old/drivers/atm/sangam_atm/cpsar.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar.h	2005-08-13 02:47:40.536040968 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpsar.h	2005-08-22 23:17:42.423946448 +0200
 @@ -0,0 +1,103 @@
 +/*******************************************************************************
 + *  TNETDxxxx Software Support
@@ -7496,7 +7496,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpsar.h linux.dev/drivers/atm/sangam_
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/cp_sar_reg.h linux.dev/drivers/atm/sangam_atm/cp_sar_reg.h
 --- linux.old/drivers/atm/sangam_atm/cp_sar_reg.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cp_sar_reg.h	2005-08-13 02:47:40.537040816 +0200
++++ linux.dev/drivers/atm/sangam_atm/cp_sar_reg.h	2005-08-22 23:17:42.423946448 +0200
 @@ -0,0 +1,217 @@
 +/***************************************************************************
 +        TNETD73xx Software Support
@@ -7717,7 +7717,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cp_sar_reg.h linux.dev/drivers/atm/sa
 +#endif _INC_SAR_REG
 diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpswhal_cpaal5.h
 --- linux.old/drivers/atm/sangam_atm/cpswhal_cpaal5.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpaal5.h	2005-08-13 02:47:40.538040664 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpaal5.h	2005-08-22 23:17:42.424946296 +0200
 @@ -0,0 +1,629 @@
 +/************************************************************************
 + *  TNETDxxxx Software Support
@@ -8350,7 +8350,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpaal5.h linux.dev/drivers/at
 +#endif  /*  end of _INC_    */
 diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpsar.h linux.dev/drivers/atm/sangam_atm/cpswhal_cpsar.h
 --- linux.old/drivers/atm/sangam_atm/cpswhal_cpsar.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpsar.h	2005-08-13 02:47:40.539040512 +0200
++++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpsar.h	2005-08-22 23:17:42.425946144 +0200
 @@ -0,0 +1,629 @@
 +/************************************************************************
 + *  TNETDxxxx Software Support
@@ -8983,7 +8983,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpsar.h linux.dev/drivers/atm
 +#endif  /*  end of _INC_    */
 diff -urN linux.old/drivers/atm/sangam_atm/dev_host_interface.h linux.dev/drivers/atm/sangam_atm/dev_host_interface.h
 --- linux.old/drivers/atm/sangam_atm/dev_host_interface.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dev_host_interface.h	2005-08-13 02:47:40.540040360 +0200
++++ linux.dev/drivers/atm/sangam_atm/dev_host_interface.h	2005-08-22 23:17:42.426945992 +0200
 @@ -0,0 +1,1162 @@
 +#ifndef __DEV_HOST_INTERFACE_H__
 +#define __DEV_HOST_INTERFACE_H__ 1
@@ -10149,7 +10149,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dev_host_interface.h linux.dev/driver
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/dev_host_verdef.h linux.dev/drivers/atm/sangam_atm/dev_host_verdef.h
 --- linux.old/drivers/atm/sangam_atm/dev_host_verdef.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dev_host_verdef.h	2005-08-13 02:47:40.541040208 +0200
++++ linux.dev/drivers/atm/sangam_atm/dev_host_verdef.h	2005-08-22 23:17:42.427945840 +0200
 @@ -0,0 +1,102 @@
 +#ifndef __DEV_HOST_VERDEF_H__
 +#define __DEV_HOST_VERDEF_H__ 1
@@ -10255,7 +10255,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dev_host_verdef.h linux.dev/drivers/a
 +#endif // __DEV_HOST_VERDEF_H__
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.c linux.dev/drivers/atm/sangam_atm/dsl_hal_api.c
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_api.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.c	2005-08-13 02:47:40.545039600 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.c	2005-08-22 23:17:42.430945384 +0200
 @@ -0,0 +1,3339 @@
 +/*******************************************************************************
 +* FILE PURPOSE:     DSL Driver API functions for Sangam
@@ -13598,7 +13598,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.c linux.dev/drivers/atm/s
 +
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.h linux.dev/drivers/atm/sangam_atm/dsl_hal_api.h
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_api.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.h	2005-08-13 02:47:40.552038536 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.h	2005-08-22 23:17:42.432945080 +0200
 @@ -0,0 +1,1721 @@
 +#ifndef __DSL_HAL_API_H__
 +#define __DSL_HAL_API_H__ 1
@@ -15323,7 +15323,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.h linux.dev/drivers/atm/s
 +#endif /* pairs #ifndef __DSL_APPLICATION_INTERFACE_H__ */
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_logtable.h linux.dev/drivers/atm/sangam_atm/dsl_hal_logtable.h
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_logtable.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_logtable.h	2005-08-13 02:47:40.574035192 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_logtable.h	2005-08-22 23:17:42.433944928 +0200
 @@ -0,0 +1,259 @@
 +unsigned int log10[]=
 +{
@@ -15586,7 +15586,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_logtable.h linux.dev/drivers/
 +    };
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_register.h linux.dev/drivers/atm/sangam_atm/dsl_hal_register.h
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_register.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_register.h	2005-08-13 02:47:40.574035192 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_register.h	2005-08-22 23:17:42.433944928 +0200
 @@ -0,0 +1,337 @@
 +#ifndef ___DSL_REGISTER_DEFINES_H___
 +#define ___DSL_REGISTER_DEFINES_H___ 1
@@ -15927,7 +15927,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_register.h linux.dev/drivers/
 +#endif /* pairs #ifndef ___DSL_REGISTER_DEFINES_H___ */
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.c linux.dev/drivers/atm/sangam_atm/dsl_hal_support.c
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_support.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.c	2005-08-13 02:47:40.578034584 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.c	2005-08-22 23:17:42.436944472 +0200
 @@ -0,0 +1,2788 @@
 +/*******************************************************************************
 +* FILE PURPOSE:     DSL Driver API functions for Sangam
@@ -18719,7 +18719,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.c linux.dev/drivers/a
 +} /* end of dslhal_support_byteSwap32() */
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.h linux.dev/drivers/atm/sangam_atm/dsl_hal_support.h
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_support.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.h	2005-08-13 02:47:40.579034432 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.h	2005-08-22 23:37:21.760660016 +0200
 @@ -0,0 +1,718 @@
 +#ifndef DSL_HAL_SUPPORT_H__
 +#define DSL_HAL_SUPPORT_H__ 1
@@ -19441,7 +19441,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.h linux.dev/drivers/a
 +#endif /* Pairs #ifndef DSL_HAL_FUNCTIONDEFINES_H__ */
 diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_version.h linux.dev/drivers/atm/sangam_atm/dsl_hal_version.h
 --- linux.old/drivers/atm/sangam_atm/dsl_hal_version.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_version.h	2005-08-13 02:47:40.579034432 +0200
++++ linux.dev/drivers/atm/sangam_atm/dsl_hal_version.h	2005-08-22 23:17:42.437944320 +0200
 @@ -0,0 +1,94 @@
 +#ifndef __SYSSW_VERSION_H__
 +#define __SYSSW_VERSION_H__ 1
@@ -19539,7 +19539,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_version.h linux.dev/drivers/a
 +#endif /* pairs with #ifndef __SYSSW_VERSION_H__ */
 diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpaal5.h linux.dev/drivers/atm/sangam_atm/ec_errors_cpaal5.h
 --- linux.old/drivers/atm/sangam_atm/ec_errors_cpaal5.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpaal5.h	2005-08-13 02:47:40.760006920 +0200
++++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpaal5.h	2005-08-22 23:17:42.438944168 +0200
 @@ -0,0 +1,118 @@
 +/***************************************************************************
 + Copyright(c) 2001, Texas Instruments Incorporated. All Rights Reserved.
@@ -19661,7 +19661,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpaal5.h linux.dev/drivers/
 +#endif /* _INC_EC_ERRORS */
 diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpsar.h linux.dev/drivers/atm/sangam_atm/ec_errors_cpsar.h
 --- linux.old/drivers/atm/sangam_atm/ec_errors_cpsar.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpsar.h	2005-08-13 02:47:40.761006768 +0200
++++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpsar.h	2005-08-22 23:17:42.438944168 +0200
 @@ -0,0 +1,118 @@
 +/***************************************************************************
 + Copyright(c) 2001, Texas Instruments Incorporated. All Rights Reserved.
@@ -19783,7 +19783,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpsar.h linux.dev/drivers/a
 +#endif /* _INC_EC_ERRORS */
 diff -urN linux.old/drivers/atm/sangam_atm/env_def_defines.h linux.dev/drivers/atm/sangam_atm/env_def_defines.h
 --- linux.old/drivers/atm/sangam_atm/env_def_defines.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/env_def_defines.h	2005-08-13 02:47:40.762006616 +0200
++++ linux.dev/drivers/atm/sangam_atm/env_def_defines.h	2005-08-22 23:17:42.439944016 +0200
 @@ -0,0 +1,926 @@
 +#ifndef __ENV_DEF_DEFINES_H__
 +#define __ENV_DEF_DEFINES_H__ 1
@@ -20713,7 +20713,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/env_def_defines.h linux.dev/drivers/a
 +
 diff -urN linux.old/drivers/atm/sangam_atm/env_def_typedefs.h linux.dev/drivers/atm/sangam_atm/env_def_typedefs.h
 --- linux.old/drivers/atm/sangam_atm/env_def_typedefs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/env_def_typedefs.h	2005-08-13 02:47:40.763006464 +0200
++++ linux.dev/drivers/atm/sangam_atm/env_def_typedefs.h	2005-08-22 23:17:42.440943864 +0200
 @@ -0,0 +1,228 @@
 +#ifndef __ENV_DEF_TYPEDEFS_H__
 +#define __ENV_DEF_TYPEDEFS_H__ 1
@@ -20945,7 +20945,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/env_def_typedefs.h linux.dev/drivers/
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/Makefile linux.dev/drivers/atm/sangam_atm/Makefile
 --- linux.old/drivers/atm/sangam_atm/Makefile	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/Makefile	2005-08-13 02:47:40.763006464 +0200
++++ linux.dev/drivers/atm/sangam_atm/Makefile	2005-08-22 23:17:42.440943864 +0200
 @@ -0,0 +1,35 @@
 +# File: drivers/net/avalanche_cpmac/Makefile
 +#
@@ -20984,7 +20984,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/Makefile linux.dev/drivers/atm/sangam
 +	rm -f core *.o *.a *.s
 diff -urN linux.old/drivers/atm/sangam_atm/queue.h linux.dev/drivers/atm/sangam_atm/queue.h
 --- linux.old/drivers/atm/sangam_atm/queue.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/queue.h	2005-08-13 02:47:40.763006464 +0200
++++ linux.dev/drivers/atm/sangam_atm/queue.h	2005-08-22 23:17:42.440943864 +0200
 @@ -0,0 +1,167 @@
 +
 +#if !defined( __QUEUE_H__ )
@@ -21155,7 +21155,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/queue.h linux.dev/drivers/atm/sangam_
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/release.txt linux.dev/drivers/atm/sangam_atm/release.txt
 --- linux.old/drivers/atm/sangam_atm/release.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/release.txt	2005-08-13 02:47:40.764006312 +0200
++++ linux.dev/drivers/atm/sangam_atm/release.txt	2005-08-22 23:17:42.441943712 +0200
 @@ -0,0 +1,118 @@
 +This is release notes for AR7 Linux ATM driver.
 +
@@ -21277,7 +21277,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/release.txt linux.dev/drivers/atm/san
 +   
 diff -urN linux.old/drivers/atm/sangam_atm/syssw_version.h linux.dev/drivers/atm/sangam_atm/syssw_version.h
 --- linux.old/drivers/atm/sangam_atm/syssw_version.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/syssw_version.h	2005-08-13 02:47:40.764006312 +0200
++++ linux.dev/drivers/atm/sangam_atm/syssw_version.h	2005-08-22 23:17:42.441943712 +0200
 @@ -0,0 +1,94 @@
 +#ifndef __SYSSW_VERSION_H__
 +#define __SYSSW_VERSION_H__ 1
@@ -21375,7 +21375,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/syssw_version.h linux.dev/drivers/atm
 +#endif /* pairs with #ifndef __SYSSW_VERSION_H__ */
 diff -urN linux.old/drivers/atm/sangam_atm/tn7api.h linux.dev/drivers/atm/sangam_atm/tn7api.h
 --- linux.old/drivers/atm/sangam_atm/tn7api.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7api.h	2005-08-13 02:47:40.764006312 +0200
++++ linux.dev/drivers/atm/sangam_atm/tn7api.h	2005-08-22 23:17:42.441943712 +0200
 @@ -0,0 +1,54 @@
 +/* 
 + *    Tnetd73xx ATM driver.
@@ -21433,7 +21433,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7api.h linux.dev/drivers/atm/sangam
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.c linux.dev/drivers/atm/sangam_atm/tn7atm.c
 --- linux.old/drivers/atm/sangam_atm/tn7atm.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7atm.c	2005-08-13 02:47:40.766006008 +0200
++++ linux.dev/drivers/atm/sangam_atm/tn7atm.c	2005-08-22 23:17:42.442943560 +0200
 @@ -0,0 +1,1212 @@
 +/* 
 + *   tn7.c
@@ -22649,7 +22649,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.c linux.dev/drivers/atm/sangam
 +#endif /* MODULE */
 diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.h linux.dev/drivers/atm/sangam_atm/tn7atm.h
 --- linux.old/drivers/atm/sangam_atm/tn7atm.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7atm.h	2005-08-13 02:47:40.766006008 +0200
++++ linux.dev/drivers/atm/sangam_atm/tn7atm.h	2005-08-22 23:17:42.443943408 +0200
 @@ -0,0 +1,115 @@
 +/* 
 + *    Tnetd73xx ATM driver.
@@ -22768,8 +22768,8 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.h linux.dev/drivers/atm/sangam
 +#endif
 diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam_atm/tn7dsl.c
 --- linux.old/drivers/atm/sangam_atm/tn7dsl.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7dsl.c	2005-08-13 02:47:40.768005704 +0200
-@@ -0,0 +1,1778 @@
++++ linux.dev/drivers/atm/sangam_atm/tn7dsl.c	2005-08-22 23:40:31.372834584 +0200
+@@ -0,0 +1,1780 @@
 +/* 
 + *  $Id$
 + *
@@ -22796,6 +22796,8 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam
 +#include <linux/sysctl.h>
 +#include <linux/timer.h>
 +#include <linux/vmalloc.h>
++#include <linux/file.h>
++#include <asm/uaccess.h>
 +
 +#include "tn7atm.h"
 +#include "tn7api.h"
@@ -23148,7 +23150,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam
 +}
 +*/
 +
-+int shim_osLoadFWImage(char *ptr)
++int shim_osLoadFWImage(unsigned char *ptr)
 +{
 +  unsigned int bytesRead;
 +  mm_segment_t  oldfs;  
@@ -23222,7 +23224,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam
 +  return bytesRead;
 +}
 +
-+int shim_osLoadDebugFWImage(char *ptr)
++int shim_osLoadDebugFWImage(unsigned char *ptr)
 +{
 +  return 0;
 +}
@@ -24288,7 +24290,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam
 +    1,0,1,0,1,0,1,0   // Tones 57-64
 +  };
 +
-+int shim_osGetCpuFrequency(void)
++unsigned int shim_osGetCpuFrequency(void)
 +{
 +  return 150;
 +}
@@ -24550,7 +24552,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam
 +
 diff -urN linux.old/drivers/atm/sangam_atm/tn7sar.c linux.dev/drivers/atm/sangam_atm/tn7sar.c
 --- linux.old/drivers/atm/sangam_atm/tn7sar.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7sar.c	2005-08-13 02:47:40.769005552 +0200
++++ linux.dev/drivers/atm/sangam_atm/tn7sar.c	2005-08-22 23:17:42.445943104 +0200
 @@ -0,0 +1,1376 @@
 +/******************************************************************************
 + * FILE PURPOSE:    OS files for CPSAR
@@ -25930,7 +25932,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tn7sar.c linux.dev/drivers/atm/sangam
 +}
 diff -urN linux.old/drivers/atm/sangam_atm/tnetd7300_sar_firm.h linux.dev/drivers/atm/sangam_atm/tnetd7300_sar_firm.h
 --- linux.old/drivers/atm/sangam_atm/tnetd7300_sar_firm.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tnetd7300_sar_firm.h	2005-08-13 02:47:40.771005248 +0200
++++ linux.dev/drivers/atm/sangam_atm/tnetd7300_sar_firm.h	2005-08-22 23:17:42.446942952 +0200
 @@ -0,0 +1,988 @@
 +//SarPdspFirmware Revision:  49
 +
@@ -26922,7 +26924,7 @@ diff -urN linux.old/drivers/atm/sangam_atm/tnetd7300_sar_firm.h linux.dev/driver
 +                             0x209e0000};
 diff -urN linux.old/drivers/atm/sangam_atm/turbodsl.c linux.dev/drivers/atm/sangam_atm/turbodsl.c
 --- linux.old/drivers/atm/sangam_atm/turbodsl.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/turbodsl.c	2005-08-13 02:47:40.771005248 +0200
++++ linux.dev/drivers/atm/sangam_atm/turbodsl.c	2005-08-22 23:17:42.447942800 +0200
 @@ -0,0 +1,223 @@
 +
 +
@@ -27148,8 +27150,8 @@ diff -urN linux.old/drivers/atm/sangam_atm/turbodsl.c linux.dev/drivers/atm/sang
 +
 +  
 diff -urN linux.old/include/linux/atmdev.h linux.dev/include/linux/atmdev.h
---- linux.old/include/linux/atmdev.h	2005-08-13 00:39:58.131903456 +0200
-+++ linux.dev/include/linux/atmdev.h	2005-08-13 03:25:29.311134728 +0200
+--- linux.old/include/linux/atmdev.h	2005-08-22 23:18:37.812526104 +0200
++++ linux.dev/include/linux/atmdev.h	2005-08-22 23:17:42.447942800 +0200
 @@ -30,6 +30,9 @@
  #define ATM_DS3_PCR	(8000*12)
  			/* DS3: 12 cells in a 125 usec time slot */
@@ -27272,498 +27274,9 @@ diff -urN linux.old/include/linux/atmdev.h linux.dev/include/linux/atmdev.h
  
  /*
   * This is approximately the algorithm used by alloc_skb.
-diff -urN linux.old/include/linux/atmdev.h.orig linux.dev/include/linux/atmdev.h.orig
---- linux.old/include/linux/atmdev.h.orig	1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/linux/atmdev.h.orig	2005-08-13 03:18:36.129947816 +0200
-@@ -0,0 +1,485 @@
-+/* atmdev.h - ATM device driver declarations and various related items */
-+ 
-+/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
-+ 
-+
-+#ifndef LINUX_ATMDEV_H
-+#define LINUX_ATMDEV_H
-+
-+
-+#include <linux/config.h>
-+#include <linux/atmapi.h>
-+#include <linux/atm.h>
-+#include <linux/atmioc.h>
-+
-+
-+#define ESI_LEN		6
-+
-+#define ATM_OC3_PCR	(155520000/270*260/8/53)
-+			/* OC3 link rate:  155520000 bps
-+			   SONET overhead: /270*260 (9 section, 1 path)
-+			   bits per cell:  /8/53
-+			   max cell rate:  353207.547 cells/sec */
-+#define ATM_25_PCR	((25600000/8-8000)/54)
-+			/* 25 Mbps ATM cell rate (59111) */
-+#define ATM_OC12_PCR	(622080000/1080*1040/8/53)
-+			/* OC12 link rate: 622080000 bps
-+			   SONET overhead: /1080*1040
-+			   bits per cell:  /8/53
-+			   max cell rate:  1412830.188 cells/sec */
-+#define ATM_DS3_PCR	(8000*12)
-+			/* DS3: 12 cells in a 125 usec time slot */
-+
-+#define ATM_PDU_OVHD	0	/* number of bytes to charge against buffer
-+				   quota per PDU */
-+
-+#define ATM_SD(s)	((s)->sk->protinfo.af_atm)
-+
-+
-+#define __AAL_STAT_ITEMS \
-+    __HANDLE_ITEM(tx);			/* TX okay */ \
-+    __HANDLE_ITEM(tx_err);		/* TX errors */ \
-+    __HANDLE_ITEM(rx);			/* RX okay */ \
-+    __HANDLE_ITEM(rx_err);		/* RX errors */ \
-+    __HANDLE_ITEM(rx_drop);		/* RX out of memory */
-+
-+struct atm_aal_stats {
-+#define __HANDLE_ITEM(i) int i
-+	__AAL_STAT_ITEMS
-+#undef __HANDLE_ITEM
-+};
-+
-+
-+struct atm_dev_stats {
-+	struct atm_aal_stats aal0;
-+	struct atm_aal_stats aal34;
-+	struct atm_aal_stats aal5;
-+} __ATM_API_ALIGN;
-+
-+
-+#define ATM_GETLINKRATE	_IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
-+					/* get link rate */
-+#define ATM_GETNAMES	_IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
-+					/* get interface names (numbers) */
-+#define ATM_GETTYPE	_IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
-+					/* get interface type name */
-+#define ATM_GETESI	_IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
-+					/* get interface ESI */
-+#define ATM_GETADDR	_IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
-+					/* get itf's local ATM addr. list */
-+#define ATM_RSTADDR	_IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
-+					/* reset itf's ATM address list */
-+#define ATM_ADDADDR	_IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
-+					/* add a local ATM address */
-+#define ATM_DELADDR	_IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
-+					/* remove a local ATM address */
-+#define ATM_GETCIRANGE	_IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
-+					/* get connection identifier range */
-+#define ATM_SETCIRANGE	_IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
-+					/* set connection identifier range */
-+#define ATM_SETESI	_IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
-+					/* set interface ESI */
-+#define ATM_SETESIF	_IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
-+					/* force interface ESI */
-+#define ATM_GETSTAT	_IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
-+					/* get AAL layer statistics */
-+#define ATM_GETSTATZ	_IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
-+					/* get AAL layer statistics and zero */
-+#define ATM_GETLOOP	_IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
-+					/* get loopback mode */
-+#define ATM_SETLOOP	_IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
-+					/* set loopback mode */
-+#define ATM_QUERYLOOP	_IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
-+					/* query supported loopback modes */
-+#define ATM_SETSC	_IOW('a',ATMIOC_SPECIAL+1,int)
-+					/* enable or disable single-copy */
-+#define ATM_SETBACKEND	_IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
-+					/* set backend handler */
-+#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
-+					/* use backend to make new if */
-+#define ATM_STOPTX      _IOW('a',ATMIOC_SPECIAL+4,struct atmif_sioc)
-+					/* Stop Tx on Sangam DSL */
-+/*
-+ * These are backend handkers that can be set via the ATM_SETBACKEND call
-+ * above.  In the future we may support dynamic loading of these - for now,
-+ * they're just being used to share the ATMIOC_BACKEND ioctls
-+ */
-+#define ATM_BACKEND_RAW		0	
-+#define ATM_BACKEND_PPP		1	/* PPPoATM - RFC2364 */
-+#define ATM_BACKEND_BR2684	2	/* Bridged RFC1483/2684 */
-+
-+/* for ATM_GETTYPE */
-+#define ATM_ITFTYP_LEN	8	/* maximum length of interface type name */
-+
-+/*
-+ * Loopback modes for ATM_{PHY,SAR}_{GET,SET}LOOP
-+ */
-+
-+/* Point of loopback				CPU-->SAR-->PHY-->line--> ... */
-+#define __ATM_LM_NONE	0	/* no loop back     ^     ^     ^      ^      */
-+#define __ATM_LM_AAL	1	/* loop back PDUs --'     |     |      |      */
-+#define __ATM_LM_ATM	2	/* loop back ATM cells ---'     |      |      */
-+/* RESERVED		4	loop back on PHY side  ---'		      */
-+#define __ATM_LM_PHY	8	/* loop back bits (digital) ----'      |      */
-+#define __ATM_LM_ANALOG 16	/* loop back the analog signal --------'      */
-+
-+/* Direction of loopback */
-+#define __ATM_LM_MKLOC(n)	((n))	    /* Local (i.e. loop TX to RX) */
-+#define __ATM_LM_MKRMT(n)	((n) << 8)  /* Remote (i.e. loop RX to TX) */
-+
-+#define __ATM_LM_XTLOC(n)	((n) & 0xff)
-+#define __ATM_LM_XTRMT(n)	(((n) >> 8) & 0xff)
-+
-+#define ATM_LM_NONE	0	/* no loopback */
-+
-+#define ATM_LM_LOC_AAL	__ATM_LM_MKLOC(__ATM_LM_AAL)
-+#define ATM_LM_LOC_ATM	__ATM_LM_MKLOC(__ATM_LM_ATM)
-+#define ATM_LM_LOC_PHY	__ATM_LM_MKLOC(__ATM_LM_PHY)
-+#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
-+
-+#define ATM_LM_RMT_AAL	__ATM_LM_MKRMT(__ATM_LM_AAL)
-+#define ATM_LM_RMT_ATM	__ATM_LM_MKRMT(__ATM_LM_ATM)
-+#define ATM_LM_RMT_PHY	__ATM_LM_MKRMT(__ATM_LM_PHY)
-+#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
-+
-+/*
-+ * Note: ATM_LM_LOC_* and ATM_LM_RMT_* can be combined, provided that
-+ * __ATM_LM_XTLOC(x) <= __ATM_LM_XTRMT(x)
-+ */
-+
-+
-+struct atm_iobuf {
-+	int length;
-+	void *buffer;
-+};
-+
-+/* for ATM_GETCIRANGE / ATM_SETCIRANGE */
-+
-+#define ATM_CI_MAX      -1              /* use maximum range of VPI/VCI */
-+ 
-+struct atm_cirange {
-+	char	vpi_bits;		/* 1..8, ATM_CI_MAX (-1) for maximum */
-+	char	vci_bits;		/* 1..16, ATM_CI_MAX (-1) for maximum */
-+};
-+
-+/* for ATM_SETSC; actually taken from the ATM_VF number space */
-+
-+#define ATM_SC_RX	1024		/* enable RX single-copy */
-+#define ATM_SC_TX	2048		/* enable TX single-copy */
-+
-+#define ATM_BACKLOG_DEFAULT 32 /* if we get more, we're likely to time out
-+				  anyway */
-+
-+/* MF: change_qos (Modify) flags */
-+
-+#define ATM_MF_IMMED	 1	/* Block until change is effective */
-+#define ATM_MF_INC_RSV	 2	/* Change reservation on increase */
-+#define ATM_MF_INC_SHP	 4	/* Change shaping on increase */
-+#define ATM_MF_DEC_RSV	 8	/* Change reservation on decrease */
-+#define ATM_MF_DEC_SHP	16	/* Change shaping on decrease */
-+#define ATM_MF_BWD	32	/* Set the backward direction parameters */
-+
-+#define ATM_MF_SET	(ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | \
-+			  ATM_MF_DEC_SHP | ATM_MF_BWD)
-+
-+/*
-+ * ATM_VS_* are used to express VC state in a human-friendly way.
-+ */
-+
-+#define ATM_VS_IDLE	0	/* VC is not used */
-+#define ATM_VS_CONNECTED 1	/* VC is connected */
-+#define ATM_VS_CLOSING	2	/* VC is closing */
-+#define ATM_VS_LISTEN	3	/* VC is listening for incoming setups */
-+#define ATM_VS_INUSE	4	/* VC is in use (registered with atmsigd) */
-+#define ATM_VS_BOUND	5	/* VC is bound */
-+
-+#define ATM_VS2TXT_MAP \
-+    "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
-+
-+#define ATM_VF2TXT_MAP \
-+    "ADDR",	"READY",	"PARTIAL",	"REGIS", \
-+    "RELEASED", "HASQOS",	"LISTEN",	"META", \
-+    "256",	"512",		"1024",		"2048", \
-+    "SESSION",	"HASSAP",	"BOUND",	"CLOSE"
-+
-+
-+#ifndef __KERNEL__
-+#undef __AAL_STAT_ITEMS
-+#else
-+
-+#include <linux/sched.h> /* wait_queue_head_t */
-+#include <linux/time.h> /* struct timeval */
-+#include <linux/net.h>
-+#include <linux/skbuff.h> /* struct sk_buff */
-+#include <linux/uio.h>
-+#include <net/sock.h>
-+#include <asm/atomic.h>
-+
-+#ifdef CONFIG_PROC_FS
-+#include <linux/proc_fs.h>
-+#endif
-+
-+
-+struct k_atm_aal_stats {
-+#define __HANDLE_ITEM(i) atomic_t i
-+	__AAL_STAT_ITEMS
-+#undef __HANDLE_ITEM
-+};
-+
-+
-+struct k_atm_dev_stats {
-+	struct k_atm_aal_stats aal0;
-+	struct k_atm_aal_stats aal34;
-+	struct k_atm_aal_stats aal5;
-+};
-+
-+
-+enum {
-+	ATM_VF_ADDR,		/* Address is in use. Set by anybody, cleared
-+				   by device driver. */
-+	ATM_VF_READY,		/* VC is ready to transfer data. Set by device
-+				   driver, cleared by anybody. */
-+	ATM_VF_PARTIAL,		/* resources are bound to PVC (partial PVC
-+				   setup), controlled by socket layer */
-+	ATM_VF_REGIS,		/* registered with demon, controlled by SVC
-+				   socket layer */
-+	ATM_VF_BOUND,		/* local SAP is set, controlled by SVC socket
-+				   layer */
-+	ATM_VF_RELEASED,	/* demon has indicated/requested release,
-+				   controlled by SVC socket layer */
-+	ATM_VF_HASQOS,		/* QOS parameters have been set */
-+	ATM_VF_LISTEN,		/* socket is used for listening */
-+	ATM_VF_META,		/* SVC socket isn't used for normal data
-+				   traffic and doesn't depend on signaling
-+				   to be available */
-+	ATM_VF_SESSION,		/* VCC is p2mp session control descriptor */
-+	ATM_VF_HASSAP,		/* SAP has been set */
-+	ATM_VF_CLOSE,		/* asynchronous close - treat like VF_RELEASED*/
-+};
-+
-+
-+#define ATM_VF2VS(flags) \
-+    (test_bit(ATM_VF_READY,&(flags)) ? ATM_VS_CONNECTED : \
-+     test_bit(ATM_VF_RELEASED,&(flags)) ? ATM_VS_CLOSING : \
-+     test_bit(ATM_VF_LISTEN,&(flags)) ? ATM_VS_LISTEN : \
-+     test_bit(ATM_VF_REGIS,&(flags)) ? ATM_VS_INUSE : \
-+     test_bit(ATM_VF_BOUND,&(flags)) ? ATM_VS_BOUND : ATM_VS_IDLE)
-+
-+
-+enum {
-+	ATM_DF_CLOSE,		/* close device when last VCC is closed */
-+};
-+
-+
-+#define ATM_PHY_SIG_LOST    0	/* no carrier/light */
-+#define ATM_PHY_SIG_UNKNOWN 1	/* carrier/light status is unknown */
-+#define ATM_PHY_SIG_FOUND   2	/* carrier/light okay */
-+
-+#define ATM_ATMOPT_CLP	1	/* set CLP bit */
-+
-+
-+typedef struct { unsigned long bits; } atm_vcc_flags_t;
-+
-+
-+struct atm_vcc {
-+	atm_vcc_flags_t flags;		/* VCC flags (ATM_VF_*) */
-+	unsigned char	family;		/* address family; 0 if unused */
-+	short		vpi;		/* VPI and VCI (types must be equal */
-+					/* with sockaddr) */
-+	int 		vci;
-+	unsigned long	aal_options;	/* AAL layer options */
-+	unsigned long	atm_options;	/* ATM layer options */
-+	struct atm_dev	*dev;		/* device back pointer */
-+	struct atm_qos	qos;		/* QOS */
-+	struct atm_sap	sap;		/* SAP */
-+	void (*push)(struct atm_vcc *vcc,struct sk_buff *skb);
-+	void (*pop)(struct atm_vcc *vcc,struct sk_buff *skb); /* optional */
-+	struct sk_buff *(*alloc_tx)(struct atm_vcc *vcc,unsigned int size);
-+					/* TX allocation routine - can be */
-+					/* modified by protocol or by driver.*/
-+					/* NOTE: this interface will change */
-+	int (*push_oam)(struct atm_vcc *vcc,void *cell);
-+	int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
-+	void		*dev_data;	/* per-device data */
-+	void		*proto_data;	/* per-protocol data */
-+	struct timeval	timestamp;	/* AAL timestamps */
-+	struct sk_buff_head recvq;	/* receive queue */
-+	struct k_atm_aal_stats *stats;	/* pointer to AAL stats group */
-+	wait_queue_head_t sleep;	/* if socket is busy */
-+	struct sock	*sk;		/* socket backpointer */
-+	struct atm_vcc	*prev,*next;
-+	/* SVC part --- may move later ------------------------------------- */
-+	short		itf;		/* interface number */
-+	struct sockaddr_atmsvc local;
-+	struct sockaddr_atmsvc remote;
-+	void (*callback)(struct atm_vcc *vcc);
-+	struct sk_buff_head listenq;
-+	int		backlog_quota;	/* number of connection requests we */
-+					/* can still accept */
-+	int		reply;		/* also used by ATMTCP */
-+	/* Multipoint part ------------------------------------------------- */
-+	struct atm_vcc	*session;	/* session VCC descriptor */
-+	/* Other stuff ----------------------------------------------------- */
-+	void		*user_back;	/* user backlink - not touched by */
-+					/* native ATM stack. Currently used */
-+					/* by CLIP and sch_atm. */
-+};
-+
-+
-+struct atm_dev_addr {
-+	struct sockaddr_atmsvc addr;	/* ATM address */
-+	struct atm_dev_addr *next;	/* next address */
-+};
-+
-+
-+typedef struct { unsigned int bits; } atm_dev_flags_t;
-+
-+
-+struct atm_dev {
-+	const struct atmdev_ops *ops;	/* device operations; NULL if unused */
-+	const struct atmphy_ops *phy;	/* PHY operations, may be undefined */
-+					/* (NULL) */
-+	const char	*type;		/* device type name */
-+	int		number;		/* device index */
-+	struct atm_vcc	*vccs;		/* VCC table (or NULL) */
-+	struct atm_vcc	*last;		/* last VCC (or undefined) */
-+	void		*dev_data;	/* per-device data */
-+	void		*phy_data;	/* private PHY date */
-+	atm_dev_flags_t flags;		/* device flags (ATM_DF_*) */
-+	struct atm_dev_addr *local;	/* local ATM addresses */
-+	unsigned char	esi[ESI_LEN];	/* ESI ("MAC" addr) */
-+	struct atm_cirange ci_range;	/* VPI/VCI range */
-+	struct k_atm_dev_stats stats;	/* statistics */
-+	char		signal;		/* signal status (ATM_PHY_SIG_*) */
-+	int		link_rate;	/* link rate (default: OC3) */
-+        atomic_t        refcnt;         /* reference count */
-+        spinlock_t      lock;           /* protect internal members */
-+#ifdef CONFIG_PROC_FS
-+	struct proc_dir_entry *proc_entry; /* proc entry */
-+	char *proc_name;		/* proc entry name */
-+#endif
-+	struct atm_dev	*prev,*next;	/* linkage */
-+	struct list_head dev_list;      /* linkage */
-+
-+};
-+
-+
-+/*
-+ * ioctl, getsockopt, setsockopt, and sg_send are optional and can be set to
-+ * NULL. */
-+
-+/* OF: send_Oam Flags */
-+
-+#define ATM_OF_IMMED	1	/* Attempt immediate delivery */
-+#define ATM_OF_INRATE	2	/* Attempt in-rate delivery */
-+
-+struct atmdev_ops { /* only send is required */
-+	void (*dev_close)(struct atm_dev *dev);
-+	int (*open)(struct atm_vcc *vcc,short vpi,int vci);
-+	void (*close)(struct atm_vcc *vcc);
-+	int (*ioctl)(struct atm_dev *dev,unsigned int cmd,void *arg);
-+	int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
-+	    void *optval,int optlen);
-+	int (*setsockopt)(struct atm_vcc *vcc,int level,int optname,
-+	    void *optval,int optlen);
-+	int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
-+	int (*sg_send)(struct atm_vcc *vcc,unsigned long start,
-+	    unsigned long size);
-+#if 0 /* keep the current hack for now */
-+	int (*send_iovec)(struct atm_vcc *vcc,struct iovec *iov,int size,
-+	    void (*discard)(struct atm_vcc *vcc,void *user),void *user);
-+#endif
-+	int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
-+	void (*phy_put)(struct atm_dev *dev,unsigned char value,
-+	    unsigned long addr);
-+	unsigned char (*phy_get)(struct atm_dev *dev,unsigned long addr);
-+	void (*feedback)(struct atm_vcc *vcc,struct sk_buff *skb,
-+	    unsigned long start,unsigned long dest,int len);
-+	int (*change_qos)(struct atm_vcc *vcc,struct atm_qos *qos,int flags);
-+	void (*free_rx_skb)(struct atm_vcc *vcc, struct sk_buff *skb);
-+		/* @@@ temporary hack */
-+	int (*proc_read)(struct atm_dev *dev,loff_t *pos,char *page);
-+	struct module *owner;
-+};
-+
-+
-+struct atmphy_ops {
-+	int (*start)(struct atm_dev *dev);
-+	int (*ioctl)(struct atm_dev *dev,unsigned int cmd,void *arg);
-+	void (*interrupt)(struct atm_dev *dev);
-+	int (*stop)(struct atm_dev *dev);
-+};
-+
-+struct atm_skb_data {
-+	struct atm_vcc	*vcc;		/* ATM VCC */
-+	int		iovcnt;		/* 0 for "normal" operation */
-+	unsigned long	atm_options;	/* ATM layer options */
-+};
-+
-+extern struct sock *vcc_sklist;
-+extern rwlock_t vcc_sklist_lock;
-+
-+#define ATM_SKB(skb) (((struct atm_skb_data *) (skb)->cb))
-+
-+struct atm_dev *atm_dev_register(const char *type,const struct atmdev_ops *ops,
-+    int number,atm_dev_flags_t *flags); /* number == -1: pick first available */
-+struct atm_dev *atm_find_dev(int number);
-+void atm_dev_deregister(struct atm_dev *dev);
-+void shutdown_atm_dev(struct atm_dev *dev);
-+void bind_vcc(struct atm_vcc *vcc,struct atm_dev *dev);
-+
-+
-+/*
-+ * This is approximately the algorithm used by alloc_skb.
-+ *
-+ */
-+
-+static __inline__ int atm_guess_pdu2truesize(int pdu_size)
-+{
-+	return ((pdu_size+15) & ~15) + sizeof(struct sk_buff);
-+}
-+
-+
-+static __inline__ void atm_force_charge(struct atm_vcc *vcc,int truesize)
-+{
-+	atomic_add(truesize+ATM_PDU_OVHD,&vcc->rx_inuse);
-+}
-+
-+
-+static __inline__ void atm_return(struct atm_vcc *vcc,int truesize)
-+{
-+	atomic_sub(truesize+ATM_PDU_OVHD,&vcc->rx_inuse);
-+}
-+
-+
-+static __inline__ int atm_may_send(struct atm_vcc *vcc,unsigned int size)
-+{
-+	return size+atomic_read(&vcc->tx_inuse)+ATM_PDU_OVHD < vcc->sk->sndbuf;
-+}
-+
-+
-+int atm_charge(struct atm_vcc *vcc,int truesize);
-+struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size,
-+    int gfp_flags);
-+int atm_find_ci(struct atm_vcc *vcc,short *vpi,int *vci);
-+int atm_pcr_goal(struct atm_trafprm *tp);
-+
-+void atm_async_release_vcc(struct atm_vcc *vcc,int reply);
-+
-+static inline void atm_dev_hold(struct atm_dev *dev)
-+{
-+        atomic_inc(&dev->refcnt);
-+}
-+
-+static inline void atm_dev_put(struct atm_dev *dev)
-+{
-+        atomic_dec(&dev->refcnt);
-+
-+        if ((atomic_read(&dev->refcnt) == 1) &&
-+            test_bit(ATM_DF_CLOSE,&dev->flags))
-+                shutdown_atm_dev(dev);
-+}
-+
-+#endif /* __KERNEL__ */
-+
-+#endif
 diff -urN linux.old/include/linux/atm.h linux.dev/include/linux/atm.h
---- linux.old/include/linux/atm.h	2005-08-13 00:39:58.131903456 +0200
-+++ linux.dev/include/linux/atm.h	2005-08-13 02:47:40.877988984 +0200
+--- linux.old/include/linux/atm.h	2005-08-22 23:18:50.877539920 +0200
++++ linux.dev/include/linux/atm.h	2005-08-22 23:17:42.448942648 +0200
 @@ -135,9 +135,12 @@
  	unsigned char	traffic_class;	/* traffic class (ATM_UBR, ...) */
  	int		max_pcr;	/* maximum PCR in cells per second */
@@ -27778,8 +27291,8 @@ diff -urN linux.old/include/linux/atm.h linux.dev/include/linux/atm.h
          unsigned int 	icr;         	/* Initial Cell Rate (24-bit) */
          unsigned int	tbe;		/* Transient Buffer Exposure (24-bit) */ 
 diff -urN linux.old/net/atm/clip.c linux.dev/net/atm/clip.c
---- linux.old/net/atm/clip.c	2004-11-17 12:54:22.000000000 +0100
-+++ linux.dev/net/atm/clip.c	2005-08-13 03:26:40.842260344 +0200
+--- linux.old/net/atm/clip.c	2005-08-22 23:18:50.877539920 +0200
++++ linux.dev/net/atm/clip.c	2005-08-22 23:17:42.449942496 +0200
 @@ -722,7 +722,7 @@
  	set_bit(ATM_VF_META,&vcc->flags);
  	set_bit(ATM_VF_READY,&vcc->flags);
@@ -27790,8 +27303,8 @@ diff -urN linux.old/net/atm/clip.c linux.dev/net/atm/clip.c
  	vcc->push = NULL;
  	vcc->pop = NULL; /* crash */
 diff -urN linux.old/net/atm/common.c linux.dev/net/atm/common.c
---- linux.old/net/atm/common.c	2004-02-18 14:36:32.000000000 +0100
-+++ linux.dev/net/atm/common.c	2005-08-13 04:08:54.066151776 +0200
+--- linux.old/net/atm/common.c	2005-08-22 23:18:50.878539768 +0200
++++ linux.dev/net/atm/common.c	2005-08-22 23:17:42.449942496 +0200
 @@ -385,7 +385,7 @@
  	error = 0;
  	if (!try_inc_mod_count(dev->ops->owner))
@@ -27822,8 +27335,8 @@ diff -urN linux.old/net/atm/common.c linux.dev/net/atm/common.c
  	    vcc->qos.rxtp.traffic_class == ATM_ANYCLASS)
  		return -EINVAL;
 diff -urN linux.old/net/atm/lec.c linux.dev/net/atm/lec.c
---- linux.old/net/atm/lec.c	2004-11-17 12:54:22.000000000 +0100
-+++ linux.dev/net/atm/lec.c	2005-08-13 03:30:50.951238000 +0200
+--- linux.old/net/atm/lec.c	2005-08-22 23:18:50.879539616 +0200
++++ linux.dev/net/atm/lec.c	2005-08-22 23:17:42.450942344 +0200
 @@ -811,7 +811,7 @@
          lec_arp_init(priv);
  	priv->itfnum = i;  /* LANE2 addition */
@@ -27834,8 +27347,8 @@ diff -urN linux.old/net/atm/lec.c linux.dev/net/atm/lec.c
          
          vcc->proto_data = dev_lec[i];
 diff -urN linux.old/net/atm/mpc.c linux.dev/net/atm/mpc.c
---- linux.old/net/atm/mpc.c	2003-11-28 19:26:21.000000000 +0100
-+++ linux.dev/net/atm/mpc.c	2005-08-13 03:31:04.569167760 +0200
+--- linux.old/net/atm/mpc.c	2005-08-22 23:18:50.880539464 +0200
++++ linux.dev/net/atm/mpc.c	2005-08-22 23:17:42.451942192 +0200
 @@ -787,7 +787,7 @@
  	}
  
@@ -27846,8 +27359,8 @@ diff -urN linux.old/net/atm/mpc.c linux.dev/net/atm/mpc.c
  	set_bit(ATM_VF_META,&vcc->flags);
  	set_bit(ATM_VF_READY,&vcc->flags);
 diff -urN linux.old/net/atm/pvc.c linux.dev/net/atm/pvc.c
---- linux.old/net/atm/pvc.c	2003-11-28 19:26:21.000000000 +0100
-+++ linux.dev/net/atm/pvc.c	2005-08-13 04:03:41.850615752 +0200
+--- linux.old/net/atm/pvc.c	2005-08-22 23:18:50.880539464 +0200
++++ linux.dev/net/atm/pvc.c	2005-08-22 23:17:42.451942192 +0200
 @@ -38,10 +38,12 @@
  	if (addr->sap_family != AF_ATMPVC) return -EAFNOSUPPORT;
  	lock_sock(sk);
@@ -27862,8 +27375,8 @@ diff -urN linux.old/net/atm/pvc.c linux.dev/net/atm/pvc.c
  		if (vcc->vpi != ATM_VPI_UNSPEC) addr->sap_addr.vpi = vcc->vpi;
  		if (vcc->vci != ATM_VCI_UNSPEC) addr->sap_addr.vci = vcc->vci;
 diff -urN linux.old/net/atm/resources.c linux.dev/net/atm/resources.c
---- linux.old/net/atm/resources.c	2003-11-28 19:26:21.000000000 +0100
-+++ linux.dev/net/atm/resources.c	2005-08-13 03:37:16.748587888 +0200
+--- linux.old/net/atm/resources.c	2005-08-22 23:18:50.880539464 +0200
++++ linux.dev/net/atm/resources.c	2005-08-22 23:17:42.452942040 +0200
 @@ -398,8 +398,23 @@
  	return error;
  }
@@ -27889,8 +27402,8 @@ diff -urN linux.old/net/atm/resources.c linux.dev/net/atm/resources.c
 +EXPORT_SYMBOL(bind_vcc);
  EXPORT_SYMBOL(shutdown_atm_dev);
 diff -urN linux.old/net/atm/signaling.c linux.dev/net/atm/signaling.c
---- linux.old/net/atm/signaling.c	2003-11-28 19:26:21.000000000 +0100
-+++ linux.dev/net/atm/signaling.c	2005-08-13 03:36:24.880473040 +0200
+--- linux.old/net/atm/signaling.c	2005-08-22 23:18:50.881539312 +0200
++++ linux.dev/net/atm/signaling.c	2005-08-22 23:17:42.452942040 +0200
 @@ -251,7 +251,7 @@
  	if (sigd) return -EADDRINUSE;
  	DPRINTK("sigd_attach\n");
@@ -27901,8 +27414,8 @@ diff -urN linux.old/net/atm/signaling.c linux.dev/net/atm/signaling.c
  	set_bit(ATM_VF_META,&vcc->flags);
  	set_bit(ATM_VF_READY,&vcc->flags);
 diff -urN linux.old/net/atm/svc.c linux.dev/net/atm/svc.c
---- linux.old/net/atm/svc.c	2003-11-28 19:26:21.000000000 +0100
-+++ linux.dev/net/atm/svc.c	2005-08-13 04:08:16.126919416 +0200
+--- linux.old/net/atm/svc.c	2005-08-22 23:18:50.881539312 +0200
++++ linux.dev/net/atm/svc.c	2005-08-22 23:17:42.452942040 +0200
 @@ -141,10 +141,12 @@
  	clear_bit(ATM_VF_BOUND,&vcc->flags);
  	    /* failing rebind will kill old binding */
-- 
2.30.2