diff -ur --new-file old/atm/CHANGES new/atm/CHANGES --- old/atm/CHANGES Fri Feb 19 18:00:11 1999 +++ new/atm/CHANGES Mon Mar 1 16:07:19 1999 @@ -1,3 +1,21 @@ +Version 0.54 to 0.55 (1-MAR-1999) +==================== + +Bug fixes +--------- + + - SELECT_TOP_PCR didn't take intro account the "pcr" field, causing SVC with + QoS pcr=xxx to be set up at link speed + - qos_equal didn't detect differences in the "pcr" fields + - sch_atm only accepted parent == root or absent (reported by John Loughney) + - sch_atm:atm_tc_put accessed flow structure after kfree'ing it + - sch_atm:atm_tc_change didn't put excess traffic class if class creation + failed + - sch_atm:atm_tc_dump_class didn't return class ID in tcm->tcm_handle + - sch_atm:atm_tc_delete refused to delete classes because it expected + ref == 1, but ref == 2 (reported by John Loughney) + + Version 0.53 to 0.54 (19-FEB-1999) ==================== diff -ur --new-file old/atm/README new/atm/README --- old/atm/README Fri Feb 19 17:12:41 1999 +++ new/atm/README Mon Mar 1 15:57:59 1999 @@ -1,4 +1,4 @@ -ATM on Linux, release 0.54 (alpha) by Werner Almesberger, EPFL ICA +ATM on Linux, release 0.55 (alpha) by Werner Almesberger, EPFL ICA ============================================== Werner.Almesberger@epfl.ch This is experimental software. There are known major bugs and certainly diff -ur --new-file old/atm/USAGE new/atm/USAGE --- old/atm/USAGE Fri Feb 19 18:01:42 1999 +++ new/atm/USAGE Mon Mar 1 16:09:07 1999 @@ -1,4 +1,4 @@ -Usage instructions - ATM on Linux, release 0.54 +Usage instructions - ATM on Linux, release 0.55 ------------------------------------------------- For updates of ATM on Linux, please check the Web page at @@ -17,7 +17,7 @@ In order to install this package, you need - the package itself - ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.54.tar.gz + ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.55.tar.gz - the Linux kernel, version 2.2.1, e.g. from ftp://ftp.kernel.org/pub/linux/kernel/v2.1/linux-2.2.1.tar.gz - Perl, version 4 or 5 @@ -33,7 +33,7 @@ all the files listed above there. Then extract the ATM on Linux distribution: -tar xfz atm-0.54.tar.gz +tar xfz atm-0.55.tar.gz and the kernel source: diff -ur --new-file old/atm/VERSION new/atm/VERSION --- old/atm/VERSION Fri Feb 19 17:12:02 1999 +++ new/atm/VERSION Mon Mar 1 16:42:59 1999 @@ -1 +1 @@ -0.54 +0.55 diff -ur --new-file old/atm/atm.patch new/atm/atm.patch --- old/atm/atm.patch Fri Feb 19 18:00:54 1999 +++ new/atm/atm.patch Mon Mar 1 16:08:09 1999 @@ -14914,11 +14914,11 @@ + +#endif --- /dev/null Tue Jan 1 05:00:00 1980 -+++ work/include/linux/atmsvc.h Tue Feb 9 18:09:24 1999 -@@ -0,0 +1,52 @@ ++++ work/include/linux/atmsvc.h Mon Mar 1 15:01:23 1999 +@@ -0,0 +1,53 @@ +/* atmsvc.h - ATM signaling kernel-demon interface definitions */ + -+/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */ ++/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */ + + +#ifndef _LINUX_ATMSVC_H @@ -14964,8 +14964,9 @@ + * if signaling only uses one ATM interface). + */ + -+#define SELECT_TOP_PCR(tp) ((tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? \ -+ (tp).max_pcr : (tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR) ++#define SELECT_TOP_PCR(tp) ((tp).pcr ? (tp).pcr : \ ++ (tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? (tp).max_pcr : \ ++ (tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR) + +#endif --- ref/include/linux/capability.h Thu Jan 28 21:43:10 1999 @@ -15365,8 +15366,8 @@ tc_filter_init(); #endif --- /dev/null Tue Jan 1 05:00:00 1980 -+++ work/net/sched/sch_atm.c Fri Feb 19 17:30:10 1999 -@@ -0,0 +1,614 @@ ++++ work/net/sched/sch_atm.c Mon Mar 1 16:03:42 1999 +@@ -0,0 +1,625 @@ +/* net/sched/sch_atm.c - ATM VC selection "queueing discipline" */ + +/* Written 1998,1999 by Werner Almesberger, EPFL ICA */ @@ -15539,12 +15540,12 @@ + DPRINTK("atm_tc_put: f_count %d\n",flow->sock->file->f_count); + sockfd_put(flow->sock); + } ++ if (flow->excess) atm_tc_put(sch,(unsigned long) flow->excess); + if (flow != &p->link) kfree(flow); + /* + * If flow == &p->link, the qdisc no longer works at this point and + * needs to be removed. (By the caller of atm_tc_put.) + */ -+ if (flow->excess) atm_tc_put(sch,(unsigned long) flow->excess); +} + + @@ -15553,7 +15554,7 @@ +{ + struct atm_qdisc_data *p = PRIV(sch); + struct atm_flow_data *flow = (struct atm_flow_data *) *arg; -+ struct atm_flow_data *excess; ++ struct atm_flow_data *excess = NULL; + struct rtattr *opt = tca[TCA_OPTIONS-1]; + struct rtattr *tb[TCA_ATM_MAX]; + struct socket *sock; @@ -15565,7 +15566,8 @@ + /* + * The concept of parents doesn't apply for this qdisc. + */ -+ if (parent && parent != TC_H_ROOT) return -EINVAL; ++ if (parent && parent != TC_H_ROOT && parent != sch->handle) ++ return -EINVAL; + /* + * ATM classes cannot be changed. In order to change properties of the + * ATM connection, that socket needs to be modified directly (via the @@ -15656,6 +15658,7 @@ + *arg = (unsigned long) flow; + return 0; +err_out: ++ if (excess) atm_tc_put(sch,(unsigned long) excess); + sockfd_put(sock); + return error; +} @@ -15669,7 +15672,15 @@ + DPRINTK("atm_tc_delete(sch %p,[qdisc %p],flow %p)\n",sch,p,flow); + if (!find_flow(PRIV(sch),flow)) return -EINVAL; + if (flow->filter_list || flow == &p->link) return -EBUSY; -+ if (flow->ref > 1) return -EBUSY; /* catch references via excess, etc.*/ ++ /* ++ * Reference count must be 2: one for "keepalive" (set at class ++ * creation), and one for the reference held when calling delete. ++ */ ++ if (flow->ref < 2) { ++ printk(KERN_ERR "atm_tc_delete: flow->ref == %d\n",flow->ref); ++ return -EINVAL; ++ } ++ if (flow->ref > 2) return -EBUSY; /* catch references via excess, etc.*/ + atm_tc_put(sch,arg); + return 0; +} @@ -15891,6 +15902,7 @@ + DPRINTK("atm_tc_dump_class(sch %p,[qdisc %p],flow %p,skb %p,tcm %p)\n", + sch,p,flow,skb,tcm); + if (!find_flow(p,flow)) return -EINVAL; ++ tcm->tcm_handle = flow->classid; + rta = (struct rtattr *) b; + RTA_PUT(skb,TCA_OPTIONS,0,NULL); + RTA_PUT(skb,TCA_ATM_HDR,flow->hdr_len,flow->hdr); @@ -17948,11 +17960,11 @@ + +#endif --- /dev/null Tue Jan 1 05:00:00 1980 -+++ work/net/atm/misc.c Tue Feb 9 15:49:58 1999 ++++ work/net/atm/misc.c Mon Mar 1 15:03:23 1999 @@ -0,0 +1,184 @@ +/* net/atm/misc.c - Various functions for use by ATM drivers */ + -+/* Written 1995-1998 by Werner Almesberger, EPFL ICA */ ++/* Written 1995-1999 by Werner Almesberger, EPFL ICA */ + + +#include <linux/config.h> @@ -18059,7 +18071,7 @@ + * - y * y- x y * y- + * - y z z- x y z z- + * -+ * All non-error cases can be convered with the following simple set of rules: ++ * All non-error cases can be converted with the following simple set of rules: + * + * if pcr == z then z- + * else if min == x && pcr == - then x+ @@ -24550,7 +24562,7 @@ + return 0; +} --- /dev/null Tue Jan 1 05:00:00 1980 -+++ work/net/atm/signaling.h Fri Feb 19 17:30:58 1999 ++++ work/net/atm/signaling.h Mon Mar 1 15:19:20 1999 @@ -0,0 +1,25 @@ +/* net/atm/signaling.h - ATM signaling */ + @@ -24578,11 +24590,11 @@ + +#endif --- /dev/null Tue Jan 1 05:00:00 1980 -+++ work/net/atm/svc.c Tue Feb 9 15:49:58 1999 -@@ -0,0 +1,388 @@ ++++ work/net/atm/svc.c Mon Mar 1 15:03:13 1999 +@@ -0,0 +1,389 @@ +/* net/atm/svc.c - ATM SVC sockets */ + -+/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */ ++/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */ + + +#include <linux/string.h> @@ -24780,6 +24792,7 @@ + * #ifndef CONFIG_SINGLE_SIGITF + */ + vcc->qos.txtp.max_pcr = SELECT_TOP_PCR(vcc->qos.txtp); ++ vcc->qos.txtp.pcr = 0; + vcc->qos.txtp.min_pcr = 0; +/* + * #endif diff -ur --new-file old/atm/doc/usage.tex new/atm/doc/usage.tex --- old/atm/doc/usage.tex Fri Feb 19 17:13:19 1999 +++ new/atm/doc/usage.tex Mon Mar 1 15:58:15 1999 @@ -1,7 +1,7 @@ %%def%:= %:\begin{verbatim} -%:Usage instructions - ATM on Linux, release 0.54 +%:Usage instructions - ATM on Linux, release 0.55 %:------------------------------------------------- %: %:\end{verbatim} @@ -38,7 +38,7 @@ \title{ATM on Linux \\ User's guide \\ - Release 0.54 (alpha)} + Release 0.55 (alpha)} \author{Werner Almesberger \\ {\tt Werner.Almesberger@epfl.ch} \\ \\ @@ -82,7 +82,7 @@ In order to install this package, you need \begin{itemize} \item the package itself - \url{ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.54.tar.gz} + \url{ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.55.tar.gz} \item the Linux kernel, version 2.2.1, e.g. from \url{ftp://ftp.kernel.org/pub/linux/kernel/v2.1/linux-2.2.1.tar.gz} \item Perl, version 4 or 5 @@ -99,7 +99,7 @@ distribution: \begin{verbatim} -tar xfz atm-0.54.tar.gz +tar xfz atm-0.55.tar.gz \end{verbatim} and the kernel source: diff -ur --new-file old/atm/doc/usage.txt new/atm/doc/usage.txt --- old/atm/doc/usage.txt Fri Feb 19 18:01:42 1999 +++ new/atm/doc/usage.txt Mon Mar 1 16:09:07 1999 @@ -1,4 +1,4 @@ -Usage instructions - ATM on Linux, release 0.54 +Usage instructions - ATM on Linux, release 0.55 ------------------------------------------------- For updates of ATM on Linux, please check the Web page at @@ -17,7 +17,7 @@ In order to install this package, you need - the package itself - ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.54.tar.gz + ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.55.tar.gz - the Linux kernel, version 2.2.1, e.g. from ftp://ftp.kernel.org/pub/linux/kernel/v2.1/linux-2.2.1.tar.gz - Perl, version 4 or 5 @@ -33,7 +33,7 @@ all the files listed above there. Then extract the ATM on Linux distribution: -tar xfz atm-0.54.tar.gz +tar xfz atm-0.55.tar.gz and the kernel source: diff -ur --new-file old/atm/extra/tc/README new/atm/extra/tc/README --- old/atm/extra/tc/README Fri Feb 19 17:59:56 1999 +++ new/atm/extra/tc/README Mon Mar 1 15:48:55 1999 @@ -42,10 +42,10 @@ Verify that the operation succeeded: % ./tc qdisc show dev eth0 - qdisc atm 1: root + qdisc atm 1: root refcnt 0 % ./tc class show dev eth0 class atm 1: parent 1: hdr . excess clp - class atm 1: parent 1: pvc 0.0.100 hdr aa.aa.03.00.00.00.08.00 excess clp + class atm 1:1 parent 1: pvc 0.0.100 hdr aa.aa.03.00.00.00.08.00 excess clp CONNECTED (The first class is used to send all traffic that isn't explicitly diff -ur --new-file old/atm/lib/qosequal.c new/atm/lib/qosequal.c --- old/atm/lib/qosequal.c Thu Oct 10 23:51:25 1996 +++ new/atm/lib/qosequal.c Mon Mar 1 15:55:53 1999 @@ -1,6 +1,6 @@ /* qosequal.c - Compares QOS specifications for equality */ -/* Written 1996 by Werner Almesberger, EPFL-LRC */ +/* Written 1996,1999 by Werner Almesberger, EPFL-LRC */ #include "atm.h" @@ -21,7 +21,8 @@ } if (!a.max_pcr && !a.min_pcr) a.max_pcr = ATM_MAX_PCR; if (!b.max_pcr && !b.min_pcr) b.max_pcr = ATM_MAX_PCR; - if (a.max_pcr != b.max_pcr || a.min_pcr != b.min_pcr) return 0; + if (a.max_pcr != b.max_pcr || a.pcr != b.pcr || a.min_pcr != b.min_pcr) + return 0; return a.max_sdu == b.max_sdu; } diff -ur --new-file old/atm/sigd/atmsigd.c new/atm/sigd/atmsigd.c --- old/atm/sigd/atmsigd.c Tue Jan 5 16:35:04 1999 +++ new/atm/sigd/atmsigd.c Tue Feb 23 13:51:03 1999 @@ -200,7 +200,7 @@ void poll_signals(void) { - static status_num = 0,trace_num = 0; + static int status_num = 0,trace_num = 0; char path[PATH_MAX+1]; FILE *file;