X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-atm-vbr.patch;h=a9e921ffa8eed0a173efd730028afd85892368dc;hb=b6e56b454b7fddfda6255279ee8d72ae124b0e23;hp=28dc14b865786cd36d0e2be9f4f4e410c5017fd4;hpb=eea7c745e0dc334eee3ef26329b62f99bcc1e306;p=packages%2Fkernel.git diff --git a/kernel-atm-vbr.patch b/kernel-atm-vbr.patch index 28dc14b8..a9e921ff 100644 --- a/kernel-atm-vbr.patch +++ b/kernel-atm-vbr.patch @@ -1,90 +1,7 @@ -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) { @@ -93,7 +10,7 @@ diff -u -r1.13 common.c + struct atm_qos_compat qos_compat; + struct atm_qos qos; + -+ if (copy_from_user(&qos_compat,optval,sizeof(qos_compat))) ++ if (copy_from_sockptr(&qos_compat,optval,sizeof(qos_compat))) + return -EFAULT; + + /* convert old atm_qos to new atm_qos */ @@ -128,7 +45,7 @@ diff -u -r1.13 common.c case SO_ATMQOS: { struct atm_qos qos; -@@ -1132,6 +1169,31 @@ +@@ -799,6 +836,31 @@ vcc = ATM_SD(sock); switch (optname) { @@ -158,5 +75,80 @@ diff -u -r1.13 common.c + -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 */