X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-atm-vbr.patch;h=a9e921ffa8eed0a173efd730028afd85892368dc;hb=c3a24101b5ade7303992a22e257020aa12de5e7b;hp=ca4b665cc07bafda2e545d45ed075b6557318493;hpb=a71421f7f182404be4f00ade7e4b902f7748621f;p=packages%2Fkernel.git diff --git a/kernel-atm-vbr.patch b/kernel-atm-vbr.patch index ca4b665c..a9e921ff 100644 --- a/kernel-atm-vbr.patch +++ b/kernel-atm-vbr.patch @@ -1,11 +1,86 @@ -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/linux/atm.h 12 Feb 2003 20:56:33 -0000 1.2 -+++ linux/include/linux/atm.h 9 Apr 2003 12:08:38 -0000 -@@ -72,7 +72,7 @@ +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_COMPAT: ++ { ++ struct atm_qos_compat qos_compat; ++ struct atm_qos qos; ++ ++ if (copy_from_sockptr(&qos_compat,optval,sizeof(qos_compat))) ++ return -EFAULT; ++ ++ /* convert old atm_qos to new atm_qos */ ++ qos.aal = qos_compat.aal; ++ qos.rxtp.traffic_class = qos_compat.rxtp.traffic_class; ++ qos.rxtp.max_pcr = qos_compat.rxtp.max_pcr; ++ qos.rxtp.pcr = qos_compat.rxtp.pcr; ++ qos.rxtp.min_pcr = qos_compat.rxtp.min_pcr; ++ qos.rxtp.max_cdv = qos_compat.rxtp.max_cdv; ++ qos.rxtp.max_sdu = qos_compat.rxtp.max_sdu; ++ qos.rxtp.scr = 0; ++ qos.rxtp.mbs = 0; ++ qos.txtp.traffic_class = qos_compat.txtp.traffic_class; ++ qos.txtp.max_pcr = qos_compat.txtp.max_pcr; ++ qos.txtp.pcr = qos_compat.txtp.pcr; ++ qos.txtp.min_pcr = qos_compat.txtp.min_pcr; ++ qos.txtp.max_cdv = qos_compat.txtp.max_cdv; ++ qos.txtp.max_sdu = qos_compat.txtp.max_sdu; ++ qos.txtp.scr = 0; ++ qos.txtp.mbs = 0; ++ ++ error = check_qos(&qos); ++ if (error) return error; ++ if (sock->state == SS_CONNECTED) ++ return atm_change_qos(vcc,&qos); ++ if (sock->state != SS_UNCONNECTED) ++ return -EBADFD; ++ vcc->qos = qos; ++ set_bit(ATM_VF_HASQOS,&vcc->flags); ++ return 0; ++ } + case SO_ATMQOS: + { + struct atm_qos qos; +@@ -799,6 +836,31 @@ + + vcc = ATM_SD(sock); + switch (optname) { ++ case SO_ATMQOS_COMPAT: ++ { ++ struct atm_qos_compat qos_compat; ++ ++ if (!test_bit(ATM_VF_HASQOS,&vcc->flags)) ++ return -EINVAL; ++ ++ /* convert new atm_qos to old atm_qos */ ++ qos_compat.aal = vcc->qos.aal; ++ qos_compat.rxtp.traffic_class = vcc->qos.rxtp.traffic_class; ++ qos_compat.rxtp.max_pcr = vcc->qos.rxtp.max_pcr; ++ qos_compat.rxtp.pcr = vcc->qos.rxtp.pcr; ++ qos_compat.rxtp.min_pcr = vcc->qos.rxtp.min_pcr; ++ qos_compat.rxtp.max_cdv = vcc->qos.rxtp.max_cdv; ++ qos_compat.rxtp.max_sdu = vcc->qos.rxtp.max_sdu; ++ qos_compat.txtp.traffic_class = vcc->qos.txtp.traffic_class; ++ qos_compat.txtp.max_pcr = vcc->qos.txtp.max_pcr; ++ qos_compat.txtp.pcr = vcc->qos.txtp.pcr; ++ qos_compat.txtp.min_pcr = vcc->qos.txtp.min_pcr; ++ qos_compat.txtp.max_cdv = vcc->qos.txtp.max_cdv; ++ qos_compat.txtp.max_sdu = vcc->qos.txtp.max_sdu; ++ ++ return copy_to_user(optval,&qos_compat,sizeof(qos_compat)) ? ++ -EFAULT : 0; ++ } + case SO_ATMQOS: + 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) @@ -39,8 +114,8 @@ diff -u -r1.2 atm.h /* extra params for ABR */ unsigned int icr; /* Initial Cell Rate (24-bit) */ unsigned int tbe; /* Transient Buffer Exposure (24-bit) */ -@@ -243,4 +251,37 @@ - }; +@@ -239,4 +246,37 @@ + typedef unsigned short atm_backend_t; +struct atm_trafprm_compat { @@ -76,87 +151,4 @@ diff -u -r1.2 atm.h + +#define SO_ATMQOS_COMPAT __SO_ENCODE(SOL_ATM,2,struct atm_qos_compat) + /* Quality of Service setting (no vbr support) */ - #endif -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 @@ - - vcc = ATM_SD(sock); - switch (optname) { -+ case SO_ATMQOS_COMPAT: -+ { -+ struct atm_qos_compat qos_compat; -+ struct atm_qos qos; -+ -+ if (copy_from_user(&qos_compat,optval,sizeof(qos_compat))) -+ return -EFAULT; -+ -+ /* convert old atm_qos to new atm_qos */ -+ qos.aal = qos_compat.aal; -+ qos.rxtp.traffic_class = qos_compat.rxtp.traffic_class; -+ qos.rxtp.max_pcr = qos_compat.rxtp.max_pcr; -+ qos.rxtp.pcr = qos_compat.rxtp.pcr; -+ qos.rxtp.min_pcr = qos_compat.rxtp.min_pcr; -+ qos.rxtp.max_cdv = qos_compat.rxtp.max_cdv; -+ qos.rxtp.max_sdu = qos_compat.rxtp.max_sdu; -+ qos.rxtp.scr = 0; -+ qos.rxtp.mbs = 0; -+ qos.txtp.traffic_class = qos_compat.txtp.traffic_class; -+ qos.txtp.max_pcr = qos_compat.txtp.max_pcr; -+ qos.txtp.pcr = qos_compat.txtp.pcr; -+ qos.txtp.min_pcr = qos_compat.txtp.min_pcr; -+ qos.txtp.max_cdv = qos_compat.txtp.max_cdv; -+ qos.txtp.max_sdu = qos_compat.txtp.max_sdu; -+ qos.txtp.scr = 0; -+ qos.txtp.mbs = 0; -+ -+ error = check_qos(&qos); -+ if (error) return error; -+ if (sock->state == SS_CONNECTED) -+ return atm_change_qos(vcc,&qos); -+ if (sock->state != SS_UNCONNECTED) -+ return -EBADFD; -+ vcc->qos = qos; -+ set_bit(ATM_VF_HASQOS,&vcc->flags); -+ return 0; -+ } - case SO_ATMQOS: - { - struct atm_qos qos; -@@ -1132,6 +1169,31 @@ - - vcc = ATM_SD(sock); - switch (optname) { -+ case SO_ATMQOS_COMPAT: -+ { -+ struct atm_qos_compat qos_compat; -+ -+ if (!test_bit(ATM_VF_HASQOS,&vcc->flags)) -+ return -EINVAL; -+ -+ /* convert new atm_qos to old atm_qos */ -+ qos_compat.aal = vcc->qos.aal; -+ qos_compat.rxtp.traffic_class = vcc->qos.rxtp.traffic_class; -+ qos_compat.rxtp.max_pcr = vcc->qos.rxtp.max_pcr; -+ qos_compat.rxtp.pcr = vcc->qos.rxtp.pcr; -+ qos_compat.rxtp.min_pcr = vcc->qos.rxtp.min_pcr; -+ qos_compat.rxtp.max_cdv = vcc->qos.rxtp.max_cdv; -+ qos_compat.rxtp.max_sdu = vcc->qos.rxtp.max_sdu; -+ qos_compat.txtp.traffic_class = vcc->qos.txtp.traffic_class; -+ qos_compat.txtp.max_pcr = vcc->qos.txtp.max_pcr; -+ qos_compat.txtp.pcr = vcc->qos.txtp.pcr; -+ qos_compat.txtp.min_pcr = vcc->qos.txtp.min_pcr; -+ qos_compat.txtp.max_cdv = vcc->qos.txtp.max_cdv; -+ qos_compat.txtp.max_sdu = vcc->qos.txtp.max_sdu; -+ -+ return copy_to_user(optval,&qos_compat,sizeof(qos_compat)) ? -+ -EFAULT : 0; -+ } - case SO_ATMQOS: - if (!test_bit(ATM_VF_HASQOS,&vcc->flags)) - return -EINVAL; + #endif /* _UAPI_LINUX_ATM_H */