summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri.staessens@ugent.be>2018-06-07 23:35:14 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2018-06-08 10:26:07 +0200
commitb74980761cdcd9a706760ae9a4efb3806ca9bee2 (patch)
tree7619284e1ceb8044c9e5bf1b8fcea6729aead825 /src/ipcpd
parent7d51ff3e5a4e42f21c9e5e89e5ea8493b7737161 (diff)
downloadouroboros-b74980761cdcd9a706760ae9a4efb3806ca9bee2.tar.gz
ouroboros-b74980761cdcd9a706760ae9a4efb3806ca9bee2.zip
lib: Add a data qos cube
This adds a data qos cube that is reliable. Reliable qos can be selected by setting the loss parameter of the qosspec to 0. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/CMakeLists.txt6
-rw-r--r--src/ipcpd/config.h.in1
-rw-r--r--src/ipcpd/eth/eth.c2
-rw-r--r--src/ipcpd/normal/sdu_sched.c3
4 files changed, 10 insertions, 2 deletions
diff --git a/src/ipcpd/CMakeLists.txt b/src/ipcpd/CMakeLists.txt
index d7523aeb..b706d432 100644
--- a/src/ipcpd/CMakeLists.txt
+++ b/src/ipcpd/CMakeLists.txt
@@ -8,6 +8,8 @@ set(IPCP_QOS_CUBE_VIDEO_PRIO 90 CACHE STRING
"Priority for video QoS cube (0-99)")
set(IPCP_QOS_CUBE_VOICE_PRIO 99 CACHE STRING
"Priority for voice QoS cube (0-99)")
+set(IPCP_QOS_CUBE_DATA_PRIO 0 CACHE STRING
+ "Priority for data QoS cube (0-99)")
set(IPCP_MIN_THREADS 4 CACHE STRING
"Minimum number of worker threads in the IPCP")
set(IPCP_ADD_THREADS 4 CACHE STRING
@@ -27,6 +29,10 @@ if ((IPCP_QOS_CUBE_BE_PRIO LESS 0) OR (IPCP_QOS_CUBE_BE_PRIO GREATER 99))
message(FATAL_ERROR "Invalid priority for best effort QoS cube")
endif ()
+if ((IPCP_QOS_CUBE_DATA_PRIO LESS 0) OR (IPCP_QOS_CUBE_DATA_PRIO GREATER 99))
+ message(FATAL_ERROR "Invalid priority for data QoS cube")
+endif ()
+
if ((IPCP_QOS_CUBE_VIDEO_PRIO LESS 0) OR (IPCP_QOS_CUBE_VIDEO_PRIO GREATER 99))
message(FATAL_ERROR "Invalid priority for video QoS cube")
endif ()
diff --git a/src/ipcpd/config.h.in b/src/ipcpd/config.h.in
index b7806f60..375ac750 100644
--- a/src/ipcpd/config.h.in
+++ b/src/ipcpd/config.h.in
@@ -42,6 +42,7 @@
#define QOS_PRIO_BE @IPCP_QOS_CUBE_BE_PRIO@
#define QOS_PRIO_VIDEO @IPCP_QOS_CUBE_VIDEO_PRIO@
#define QOS_PRIO_VOICE @IPCP_QOS_CUBE_VOICE_PRIO@
+#define QOS_PRIO_DATA @IPCP_QOS_CUBE_DATA_PRIO@
#define IPCP_SCHED_THR_MUL @IPCP_SCHED_THR_MUL@
#define PFT_SIZE @PFT_SIZE@
diff --git a/src/ipcpd/eth/eth.c b/src/ipcpd/eth/eth.c
index caf9d2df..a58839f0 100644
--- a/src/ipcpd/eth/eth.c
+++ b/src/ipcpd/eth/eth.c
@@ -1504,7 +1504,7 @@ static int eth_ipcp_flow_alloc(int fd,
assert(hash);
- if (cube > QOS_CUBE_BE) {
+ if (cube > QOS_CUBE_DATA) {
log_dbg("Unsupported QoS requested.");
return -1;
}
diff --git a/src/ipcpd/normal/sdu_sched.c b/src/ipcpd/normal/sdu_sched.c
index 529da113..0ae22895 100644
--- a/src/ipcpd/normal/sdu_sched.c
+++ b/src/ipcpd/normal/sdu_sched.c
@@ -39,7 +39,8 @@ static int qos_prio [] = {
QOS_PRIO_RAW,
QOS_PRIO_BE,
QOS_PRIO_VIDEO,
- QOS_PRIO_VOICE
+ QOS_PRIO_VOICE,
+ QOS_PRIO_DATA
};
struct sdu_sched {