+++ /dev/null
-diff -urN linux-2.6.19.1/include/linux/atm.h linux-2.6.19.1.new/include/linux/atm.h
---- linux-2.6.19.1/include/linux/atm.h 2006-12-11 20:32:53.000000000 +0100
-+++ linux-2.6.19.1.new/include/linux/atm.h 2007-01-07 18:38:50.000000000 +0100
-@@ -48,6 +48,9 @@
- #define ATM_AAL2 2 /* AAL2 (VBR) */
- #define ATM_AAL34 3 /* AAL3/4 (data) */
- #define ATM_AAL5 5 /* AAL5 (data) */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+#define ATM_BCM_AAL0 14 /* "raw" ATM cells */
-+#endif
-
- /*
- * socket option name coding functions
-diff -urN linux-2.6.19.1/include/linux/atmbr2684.h linux-2.6.19.1.new/include/linux/atmbr2684.h
---- linux-2.6.19.1/include/linux/atmbr2684.h 2006-12-11 20:32:53.000000000 +0100
-+++ linux-2.6.19.1.new/include/linux/atmbr2684.h 2007-01-07 18:24:01.000000000 +0100
-@@ -78,6 +78,10 @@
- __u8 vpn_id[7];
- int send_padding; /* unsupported */
- int min_size; /* we will pad smaller packets than this */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+#define FILTER_PPPOE 1
-+ int proto_filter; /* protocol filter flag, current only PPPoE */
-+#endif
- };
-
- /*
-diff -urN linux-2.6.19.1/include/linux/atmdev.h linux-2.6.19.1.new/include/linux/atmdev.h
---- linux-2.6.19.1/include/linux/atmdev.h 2006-12-11 20:32:53.000000000 +0100
-+++ linux-2.6.19.1.new/include/linux/atmdev.h 2007-01-07 18:37:34.000000000 +0100
-@@ -29,6 +29,10 @@
- #define ATM_DS3_PCR (8000*12)
- /* DS3: 12 cells in a 125 usec time slot */
-
-+#if defined(CONFIG_MIPS_BCM963XX)
-+#define atm_sk(__sk) ((struct atm_vcc *)(__sk)->sk_protinfo)
-+#define ATM_SD(s) (atm_sk((s)->sk))
-+#endif
-
- #define __AAL_STAT_ITEMS \
- __HANDLE_ITEM(tx); /* TX okay */ \
-@@ -111,6 +115,9 @@
- #define ATM_BACKEND_RAW 0
- #define ATM_BACKEND_PPP 1 /* PPPoATM - RFC2364 */
- #define ATM_BACKEND_BR2684 2 /* Bridged RFC1483/2684 */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+#define ATM_BACKEND_RT2684 3 /* Routed RFC1483/2684 */
-+#endif
-
- /* for ATM_GETTYPE */
- #define ATM_ITFTYP_LEN 8 /* maximum length of interface type name */
-@@ -274,6 +281,9 @@
-
-
- enum {
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ ATM_DF_CLOSE, /* close device when last VCC is closed */
-+#endif
- ATM_DF_REMOVED, /* device was removed from atm_devs list */
- };
-
-@@ -285,8 +295,10 @@
- #define ATM_ATMOPT_CLP 1 /* set CLP bit */
-
- struct atm_vcc {
-+#if !defined(CONFIG_MIPS_BCM963XX)
- /* struct sock has to be the first member of atm_vcc */
- struct sock sk;
-+#endif
- unsigned long flags; /* VCC flags (ATM_VF_*) */
- short vpi; /* VPI and VCI (types must be equal */
- /* with sockaddr) */
-@@ -303,6 +315,9 @@
- void *dev_data; /* per-device data */
- void *proto_data; /* per-protocol data */
- struct k_atm_aal_stats *stats; /* pointer to AAL stats group */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ struct sock *sk; /* socket backpointer */
-+#endif
- /* SVC part --- may move later ------------------------------------- */
- short itf; /* interface number */
- struct sockaddr_atmsvc local;
-@@ -332,7 +347,11 @@
-
- struct atm_dev_addr {
- struct sockaddr_atmsvc addr; /* ATM address */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ struct atm_dev_addr *next; /* next address */
-+#else
- struct list_head entry; /* next address */
-+#endif
- };
-
- enum atm_addr_type_t { ATM_ADDR_LOCAL, ATM_ADDR_LECS };
-@@ -346,8 +365,12 @@
- void *dev_data; /* per-device data */
- void *phy_data; /* private PHY date */
- unsigned long flags; /* device flags (ATM_DF_*) */
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ struct atm_dev_addr *local; /* local ATM addresses */
-+#else
- struct list_head local; /* local ATM addresses */
- struct list_head lecs; /* LECS ATM addresses learned via ILMI */
-+#endif
- unsigned char esi[ESI_LEN]; /* ESI ("MAC" addr) */
- struct atm_cirange ci_range; /* VPI/VCI range */
- struct k_atm_dev_stats stats; /* statistics */
-@@ -359,7 +382,9 @@
- struct proc_dir_entry *proc_entry; /* proc entry */
- char *proc_name; /* proc entry name */
- #endif
-+#if !defined(CONFIG_MIPS_BCM963XX)
- struct class_device class_dev; /* sysfs class device */
-+#endif
- struct list_head dev_list; /* linkage */
- };
-
-@@ -416,7 +441,13 @@
- int number,unsigned long *flags); /* number == -1: pick first available */
- struct atm_dev *atm_dev_lookup(int number);
- void atm_dev_deregister(struct atm_dev *dev);
-+#if defined(CONFIG_MIPS_BCM963XX)
-+void shutdown_atm_dev(struct atm_dev *dev);
-+#endif
- void vcc_insert_socket(struct sock *sk);
-+#if defined(CONFIG_MIPS_BCM963XX)
-+void vcc_remove_socket(struct sock *sk);
-+#endif
-
-
- /*
-@@ -432,20 +463,33 @@
-
- static inline void atm_force_charge(struct atm_vcc *vcc,int truesize)
- {
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ atomic_add(truesize, &vcc->sk->sk_rmem_alloc);
-+#else
- atomic_add(truesize, &sk_atm(vcc)->sk_rmem_alloc);
-+#endif
- }
-
-
- static inline void atm_return(struct atm_vcc *vcc,int truesize)
- {
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ atomic_sub(truesize, &vcc->sk->sk_rmem_alloc);
-+#else
- atomic_sub(truesize, &sk_atm(vcc)->sk_rmem_alloc);
-+#endif
- }
-
-
- static inline int atm_may_send(struct atm_vcc *vcc,unsigned int size)
- {
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ return (size + atomic_read(&vcc->sk->sk_wmem_alloc)) <
-+ vcc->sk->sk_sndbuf;
-+#else
- return (size + atomic_read(&sk_atm(vcc)->sk_wmem_alloc)) <
- sk_atm(vcc)->sk_sndbuf;
-+#endif
- }
-
-
-@@ -457,12 +501,20 @@
-
- static inline void atm_dev_put(struct atm_dev *dev)
- {
-+#if defined(CONFIG_MIPS_BCM963XX)
-+ atomic_dec(&dev->refcnt);
-+
-+ if ((atomic_read(&dev->refcnt) == 1) &&
-+ test_bit(ATM_DF_CLOSE,&dev->flags))
-+ shutdown_atm_dev(dev);
-+#else
- if (atomic_dec_and_test(&dev->refcnt)) {
- BUG_ON(!test_bit(ATM_DF_REMOVED, &dev->flags));
- if (dev->ops->dev_close)
- dev->ops->dev_close(dev);
- class_device_put(&dev->class_dev);
- }
-+#endif
- }
-
-