-Index: linux/include/linux/atm.h
-===================================================================
-RCS file: /afs/cmf/project/cvsroot/linux/include/linux/atm.h,v
-retrieving revision 1.2
-diff -u -r1.2 atm.h
---- linux/include/uapi/linux/atm.h 12 Feb 2003 20:56:33 -0000 1.2
-+++ linux/include/uapi/linux/atm.h 9 Apr 2003 12:08:38 -0000
-@@ -72,7 +72,7 @@
- /* connection identifier range; socket must be
- bound or connected */
- #define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
-- /* Quality of Service setting */
-+ /* Quality of Service setting (with vbr support) */
- #define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
- /* Service Access Point */
- #define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
-@@ -127,9 +127,11 @@
- #define ATM_NONE 0 /* no traffic */
- #define ATM_UBR 1
- #define ATM_CBR 2
--#define ATM_VBR 3
-+#define ATM_VBR_NRT 3
-+#define ATM_VBR ATM_VBR_NRT /* for backward compatibility */
- #define ATM_ABR 4
- #define ATM_ANYCLASS 5 /* compatible with everything */
-+#define ATM_VBR_RT 6
-
- #define ATM_MAX_PCR -1 /* maximum available PCR */
-
-@@ -140,6 +142,11 @@
- int min_pcr; /* minimum PCR in cells per second */
- int max_cdv; /* maximum CDV in microseconds */
- int max_sdu; /* maximum SDU in bytes */
-+
-+ /* extra params for VBR */
-+ int scr; /* sustained rate in cells per second */
-+ int mbs; /* maximum burst size (MBS) in cells */
-+
- /* extra params for ABR */
- unsigned int icr; /* Initial Cell Rate (24-bit) */
- unsigned int tbe; /* Transient Buffer Exposure (24-bit) */
-@@ -243,4 +251,37 @@
- };
-
- typedef unsigned short atm_backend_t;
-+struct atm_trafprm_compat {
-+ unsigned char traffic_class; /* traffic class (ATM_UBR, ...) */
-+ int max_pcr; /* maximum PCR in cells per second */
-+ int pcr; /* desired PCR in cells per second */
-+ int min_pcr; /* minimum PCR in cells per second */
-+ int max_cdv; /* maximum CDV in microseconds */
-+ int max_sdu; /* maximum SDU in bytes */
-+ /* extra params for ABR */
-+ unsigned int icr; /* Initial Cell Rate (24-bit) */
-+ unsigned int tbe; /* Transient Buffer Exposure (24-bit) */
-+ unsigned int frtt : 24; /* Fixed Round Trip Time (24-bit) */
-+ unsigned int rif : 4; /* Rate Increment Factor (4-bit) */
-+ unsigned int rdf : 4; /* Rate Decrease Factor (4-bit) */
-+ unsigned int nrm_pres :1; /* nrm present bit */
-+ unsigned int trm_pres :1; /* rm present bit */
-+ unsigned int adtf_pres :1; /* adtf present bit */
-+ unsigned int cdf_pres :1; /* cdf present bit*/
-+ unsigned int nrm :3; /* Max # of Cells for each forward RM cell (3-bit) */
-+ unsigned int trm :3; /* Time between forward RM cells (3-bit) */
-+ unsigned int adtf :10; /* ACR Decrease Time Factor (10-bit) */
-+ unsigned int cdf :3; /* Cutoff Decrease Factor (3-bit) */
-+ unsigned int spare :9; /* spare bits */
-+};
-+
-+struct atm_qos_compat {
-+ struct atm_trafprm_compat txtp; /* parameters in TX direction */
-+ struct atm_trafprm_compat rxtp __ATM_API_ALIGN;
-+ /* parameters in RX direction */
-+ unsigned char aal __ATM_API_ALIGN;
-+};
-+
-+#define SO_ATMQOS_COMPAT __SO_ENCODE(SOL_ATM,2,struct atm_qos_compat)
-+ /* Quality of Service setting (no vbr support) */
- #endif /* _UAPI_LINUX_ATM_H */
-Index: linux/net/atm/common.c
-===================================================================
-RCS file: /afs/cmf/project/cvsroot/linux/net/atm/common.c,v
-retrieving revision 1.13
-diff -u -r1.13 common.c
---- linux/net/atm/common.c 17 Mar 2003 16:13:12 -0000 1.13
-+++ linux/net/atm/common.c 9 Apr 2003 12:10:28 -0000
-@@ -1085,6 +1085,43 @@
+diff -urN linux-5.9/net.org/atm/common.c linux-5.9/net/atm/common.c
+--- linux-5.9/net.org/atm/common.c 2020-10-11 23:15:50.000000000 +0200
++++ linux-5.9/net/atm/common.c 2020-11-03 13:27:25.545142305 +0100
+@@ -756,6 +756,43 @@
vcc = ATM_SD(sock);
switch (optname) {
case SO_ATMQOS:
{
struct atm_qos qos;
-@@ -1132,6 +1169,31 @@
+@@ -799,6 +836,31 @@
vcc = ATM_SD(sock);
switch (optname) {
+ -EFAULT : 0;
+ }
case SO_ATMQOS:
- if (!test_bit(ATM_VF_HASQOS,&vcc->flags))
+ if (!test_bit(ATM_VF_HASQOS, &vcc->flags))
return -EINVAL;
+diff -urN linux-5.9/include.org/uapi/linux/atm.h linux-5.9/include/uapi/linux/atm.h
+--- linux-5.9/include.org/uapi/linux/atm.h 2020-10-11 23:15:50.000000000 +0200
++++ linux-5.9/include/uapi/linux/atm.h 2020-11-03 13:27:25.545142305 +0100
+@@ -71,7 +71,7 @@
+ /* connection identifier range; socket must be
+ bound or connected */
+ #define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
+- /* Quality of Service setting */
++ /* Quality of Service setting (with vbr support) */
+ #define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
+ /* Service Access Point */
+ #define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
+@@ -127,9 +127,11 @@
+ #define ATM_NONE 0 /* no traffic */
+ #define ATM_UBR 1
+ #define ATM_CBR 2
+-#define ATM_VBR 3
++#define ATM_VBR_NRT 3
++#define ATM_VBR ATM_VBR_NRT /* for backward compatibility */
+ #define ATM_ABR 4
+ #define ATM_ANYCLASS 5 /* compatible with everything */
++#define ATM_VBR_RT 6
+
+ #define ATM_MAX_PCR -1 /* maximum available PCR */
+
+@@ -140,6 +142,11 @@
+ int min_pcr; /* minimum PCR in cells per second */
+ int max_cdv; /* maximum CDV in microseconds */
+ int max_sdu; /* maximum SDU in bytes */
++
++ /* extra params for VBR */
++ int scr; /* sustained rate in cells per second */
++ int mbs; /* maximum burst size (MBS) in cells */
++
+ /* extra params for ABR */
+ unsigned int icr; /* Initial Cell Rate (24-bit) */
+ unsigned int tbe; /* Transient Buffer Exposure (24-bit) */
+@@ -239,4 +246,37 @@
+
+
+ typedef unsigned short atm_backend_t;
++struct atm_trafprm_compat {
++ unsigned char traffic_class; /* traffic class (ATM_UBR, ...) */
++ int max_pcr; /* maximum PCR in cells per second */
++ int pcr; /* desired PCR in cells per second */
++ int min_pcr; /* minimum PCR in cells per second */
++ int max_cdv; /* maximum CDV in microseconds */
++ int max_sdu; /* maximum SDU in bytes */
++ /* extra params for ABR */
++ unsigned int icr; /* Initial Cell Rate (24-bit) */
++ unsigned int tbe; /* Transient Buffer Exposure (24-bit) */
++ unsigned int frtt : 24; /* Fixed Round Trip Time (24-bit) */
++ unsigned int rif : 4; /* Rate Increment Factor (4-bit) */
++ unsigned int rdf : 4; /* Rate Decrease Factor (4-bit) */
++ unsigned int nrm_pres :1; /* nrm present bit */
++ unsigned int trm_pres :1; /* rm present bit */
++ unsigned int adtf_pres :1; /* adtf present bit */
++ unsigned int cdf_pres :1; /* cdf present bit*/
++ unsigned int nrm :3; /* Max # of Cells for each forward RM cell (3-bit) */
++ unsigned int trm :3; /* Time between forward RM cells (3-bit) */
++ unsigned int adtf :10; /* ACR Decrease Time Factor (10-bit) */
++ unsigned int cdf :3; /* Cutoff Decrease Factor (3-bit) */
++ unsigned int spare :9; /* spare bits */
++};
++
++struct atm_qos_compat {
++ struct atm_trafprm_compat txtp; /* parameters in TX direction */
++ struct atm_trafprm_compat rxtp __ATM_API_ALIGN;
++ /* parameters in RX direction */
++ unsigned char aal __ATM_API_ALIGN;
++};
++
++#define SO_ATMQOS_COMPAT __SO_ENCODE(SOL_ATM,2,struct atm_qos_compat)
++ /* Quality of Service setting (no vbr support) */
+ #endif /* _UAPI_LINUX_ATM_H */
-diff -urN linux-2.4.25/drivers/atm/Makefile linux-2.4.25-atmdd/drivers/atm/Makefile
---- linux-2.4.25/drivers/atm/Makefile 2004-02-23 15:18:29.000000000 +0100
-+++ linux-2.4.25-atmdd/drivers/atm/Makefile 2004-02-29 22:51:26.000000000 +0100
-@@ -31,6 +31,7 @@
- endif
-
- obj-$(CONFIG_ATM_DUMMY) += adummy.o
-+obj-$(CONFIG_ATM_DD) += atmdd.o
- obj-$(CONFIG_ATM_TCP) += atmtcp.o
- obj-$(CONFIG_ATM_FIRESTREAM) += firestream.o
- obj-$(CONFIG_ATM_LANAI) += lanai.o
-diff -urN linux-2.4.25/drivers/atm/Kconfig linux-2.4.25-atmdd/drivers/atm/Kconfig
---- linux-2.4.25/drivers/atm/Kcnfig 2003-08-25 13:44:41.000000000 +0200
-+++ linux-2.4.25-atmdd/drivers/atm/Kconfig 2004-02-29 22:52:59.000000000 +0100
-@@ -4,6 +4,14 @@
- default y
-
- if ATM_DRIVERS && NETDEVICES && ATM
-+
-+config ATM_DD
-+ tristate "ATM loopback"
-+ depends on INET && ATM
-+ help
-+ This is an example atm driver. It does not require any actual ATM
-+ hardware. It supports AAL5 and AAL0. Frames are merely looped back
-+ to the sender on the same VC they were sent.
-
- config ATM_DUMMY
- tristate "Dummy ATM driver"
-diff -urN linux-2.4.25/drivers/atm/atmdd.c linux-2.4.25-atmdd/drivers/atm/atmdd.c
---- linux-2.4.25/drivers/atm/atmdd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.25-atmdd/drivers/atm/atmdd.c 2004-02-29 22:58:11.000000000 +0100
+diff -urN linux-5.9/drivers.org/atm/atmdd.c linux-5.9/drivers/atm/atmdd.c
+--- linux-5.9/drivers.org/atm/atmdd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-5.9/drivers/atm/atmdd.c 2020-11-03 13:31:48.120071319 +0100
@@ -0,0 +1,920 @@
+/*
+#######################################################################
+module_exit(myatmdd_exit);
+
+#endif /* MODULE */
+diff -urN linux-5.9/drivers.org/atm/Kconfig linux-5.9/drivers/atm/Kconfig
+--- linux-5.9/drivers.org/atm/Kconfig 2020-10-11 23:15:50.000000000 +0200
++++ linux-5.9/drivers/atm/Kconfig 2020-11-03 13:31:48.120071319 +0100
+@@ -15,6 +15,14 @@
+
+ if ATM_DRIVERS && NETDEVICES && ATM
+
++config ATM_DD
++ tristate "ATM loopback"
++ depends on INET && ATM
++ help
++ This is an example atm driver. It does not require any actual ATM
++ hardware. It supports AAL5 and AAL0. Frames are merely looped back
++ to the sender on the same VC they were sent.
++
+ config ATM_DUMMY
+ tristate "Dummy ATM driver"
+ help
+diff -urN linux-5.9/drivers.org/atm/Makefile linux-5.9/drivers/atm/Makefile
+--- linux-5.9/drivers.org/atm/Makefile 2020-10-11 23:15:50.000000000 +0200
++++ linux-5.9/drivers/atm/Makefile 2020-11-03 13:31:48.120071319 +0100
+@@ -26,6 +26,7 @@
+ endif
+
+ obj-$(CONFIG_ATM_DUMMY) += adummy.o
++obj-$(CONFIG_ATM_DD) += atmdd.o
+ obj-$(CONFIG_ATM_TCP) += atmtcp.o
+ obj-$(CONFIG_ATM_FIRESTREAM) += firestream.o
+ obj-$(CONFIG_ATM_LANAI) += lanai.o