summaryrefslogtreecommitdiff
path: root/src/lib/qoscube.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/qoscube.c')
-rw-r--r--src/lib/qoscube.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/lib/qoscube.c b/src/lib/qoscube.c
index 8e6a8df9..00210625 100644
--- a/src/lib/qoscube.c
+++ b/src/lib/qoscube.c
@@ -24,10 +24,19 @@
#include <string.h>
+static struct qos_spec qos_raw = {
+ .delay = UINT32_MAX,
+ .bandwidth = UINT64_MAX,
+ .availability = 0,
+ .in_order = 0,
+ .maximum_interruption = UINT32_MAX
+};
+
static struct qos_spec qos_best_effort = {
.delay = UINT32_MAX,
.bandwidth = UINT64_MAX,
.availability = 0,
+ .in_order = 1,
.maximum_interruption = UINT32_MAX
};
@@ -35,6 +44,7 @@ static struct qos_spec qos_video = {
.delay = 100,
.bandwidth = UINT64_MAX,
.availability = 3,
+ .in_order = 1,
.maximum_interruption = 100
};
@@ -42,6 +52,7 @@ static struct qos_spec qos_voice = {
.delay = 10,
.bandwidth = 100000,
.availability = 5,
+ .in_order = 1,
.maximum_interruption = 50
};
@@ -57,8 +68,10 @@ qoscube_t qos_spec_to_cube(qosspec_t qs)
qs.availability >= qos_video.availability &&
qs.maximum_interruption <= qos_video.maximum_interruption)
return QOS_CUBE_VIDEO;
- else
+ else if (qs.in_order == 1)
return QOS_CUBE_BE;
+ else
+ return QOS_CUBE_RAW;
}
qosspec_t qos_cube_to_spec(qoscube_t qc)
@@ -69,7 +82,8 @@ qosspec_t qos_cube_to_spec(qoscube_t qc)
case QOS_CUBE_VIDEO:
return qos_video;
case QOS_CUBE_BE:
- default:
return qos_best_effort;
+ default:
+ return qos_raw;
}
}