SOURCES: kernel-desktop-atm-vbr.patch (NEW) - ftp://ftp.cmf.nrl.na...
sparky
sparky at pld-linux.org
Mon Jun 19 14:35:45 CEST 2006
Author: sparky Date: Mon Jun 19 12:35:45 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- ftp://ftp.cmf.nrl.navy.mil/pub/chas/linux-atm/vbr/vbr-kernel-diffs
---- Files affected:
SOURCES:
kernel-desktop-atm-vbr.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/kernel-desktop-atm-vbr.patch
diff -u /dev/null SOURCES/kernel-desktop-atm-vbr.patch:1.1
--- /dev/null Mon Jun 19 14:35:45 2006
+++ SOURCES/kernel-desktop-atm-vbr.patch Mon Jun 19 14:35:40 2006
@@ -0,0 +1,164 @@
+diff -Nur linux-2.6.17/include/linux/atm.h linux-2.6.17.vbr/include/linux/atm.h
+--- linux-2.6.17/include/linux/atm.h 2006-06-18 01:49:35.000000000 +0000
++++ linux-2.6.17.vbr/include/linux/atm.h 2006-06-19 12:26:00.000000000 +0000
+@@ -73,7 +73,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)
+@@ -129,9 +129,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 */
+
+@@ -142,6 +144,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) */
+@@ -166,6 +173,7 @@
+ unsigned char aal __ATM_API_ALIGN;
+ };
+
++
+ /* PVC addressing */
+
+ #define ATM_ITF_ANY -1 /* "magic" PVC address values */
+@@ -228,6 +236,39 @@
+ return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
+ }
+
++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) */
+
+ /*
+ * Some stuff for linux/sockios.h
+diff -Nur linux-2.6.17/net/atm/common.c linux-2.6.17.vbr/net/atm/common.c
+--- linux-2.6.17/net/atm/common.c 2006-06-18 01:49:35.000000000 +0000
++++ linux-2.6.17.vbr/net/atm/common.c 2006-06-19 12:26:00.000000000 +0000
+@@ -698,6 +698,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;
+@@ -742,6 +779,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;
================================================================
More information about the pld-cvs-commit
mailing list