diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2020-12-19 15:46:39 +0100 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2020-12-20 13:36:44 +0100 |
commit | ba6025c9ee7049fbc8ac91b5a1c91a853c4faccb (patch) | |
tree | 007f96653db9f0bc85182f406bdf111c6d98fdd3 /src/ipcpd | |
parent | 5a26b4822380f8b8aed83937237fa0217b0a8b41 (diff) | |
download | ouroboros-ba6025c9ee7049fbc8ac91b5a1c91a853c4faccb.tar.gz ouroboros-ba6025c9ee7049fbc8ac91b5a1c91a853c4faccb.zip |
ipcpd: Pass qoscube to ECN marking function
The ECN marking function should be able to use the packet QoS to allow
prioritizing traffic under congestion. Not yet implemented in MB-ECN.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd')
-rw-r--r-- | src/ipcpd/unicast/ca.c | 3 | ||||
-rw-r--r-- | src/ipcpd/unicast/ca.h | 2 | ||||
-rw-r--r-- | src/ipcpd/unicast/dt.c | 4 | ||||
-rw-r--r-- | src/ipcpd/unicast/pol-ca-ops.h | 1 | ||||
-rw-r--r-- | src/ipcpd/unicast/pol/ca-mb-ecn.c | 2 | ||||
-rw-r--r-- | src/ipcpd/unicast/pol/ca-mb-ecn.h | 1 | ||||
-rw-r--r-- | src/ipcpd/unicast/pol/ca-nop.c | 2 | ||||
-rw-r--r-- | src/ipcpd/unicast/pol/ca-nop.h | 1 |
8 files changed, 13 insertions, 3 deletions
diff --git a/src/ipcpd/unicast/ca.c b/src/ipcpd/unicast/ca.c index 3add2a7d..f5bbdc7e 100644 --- a/src/ipcpd/unicast/ca.c +++ b/src/ipcpd/unicast/ca.c @@ -94,9 +94,10 @@ void ca_wnd_wait(ca_wnd_t wnd) int ca_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len) { - return ca.ops->calc_ecn(fd, ecn, len); + return ca.ops->calc_ecn(fd, ecn, qc, len); } ssize_t ca_print_stats(void * ctx, diff --git a/src/ipcpd/unicast/ca.h b/src/ipcpd/unicast/ca.h index 0604a161..567909c8 100644 --- a/src/ipcpd/unicast/ca.h +++ b/src/ipcpd/unicast/ca.h @@ -24,6 +24,7 @@ #define OUROBOROS_IPCPD_UNICAST_CA_H #include <ouroboros/ipcp.h> +#include <ouroboros/qoscube.h> #include <stdbool.h> #include <sys/types.h> @@ -57,6 +58,7 @@ void ca_wnd_wait(ca_wnd_t wnd); int ca_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len); ssize_t ca_print_stats(void * ctx, diff --git a/src/ipcpd/unicast/dt.c b/src/ipcpd/unicast/dt.c index 1360371a..92c0f270 100644 --- a/src/ipcpd/unicast/dt.c +++ b/src/ipcpd/unicast/dt.c @@ -480,7 +480,7 @@ static void packet_handler(int fd, return; } - (void) ca_calc_ecn(ofd, head + dt_pci_info.ecn_o, len); + (void) ca_calc_ecn(ofd, head + dt_pci_info.ecn_o, qc, len); ret = ipcp_flow_write(ofd, sdb); if (ret < 0) { @@ -816,7 +816,7 @@ int dt_write_packet(uint64_t dst_addr, dt_pci.eid = eid; dt_pci.ecn = 0; - (void) ca_calc_ecn(fd, &dt_pci.ecn, len); + (void) ca_calc_ecn(fd, &dt_pci.ecn, qc, len); dt_pci_ser(head, &dt_pci); diff --git a/src/ipcpd/unicast/pol-ca-ops.h b/src/ipcpd/unicast/pol-ca-ops.h index 1e7c48b9..13e39673 100644 --- a/src/ipcpd/unicast/pol-ca-ops.h +++ b/src/ipcpd/unicast/pol-ca-ops.h @@ -45,6 +45,7 @@ struct pol_ca_ops { int (* calc_ecn)(int fd, uint8_t * ecn, + qoscube_t qc, size_t len); /* Optional, can be NULL */ diff --git a/src/ipcpd/unicast/pol/ca-mb-ecn.c b/src/ipcpd/unicast/pol/ca-mb-ecn.c index 9560e211..75adba11 100644 --- a/src/ipcpd/unicast/pol/ca-mb-ecn.c +++ b/src/ipcpd/unicast/pol/ca-mb-ecn.c @@ -220,11 +220,13 @@ void mb_ecn_ctx_update_ece(void * _ctx, int mb_ecn_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len) { size_t q; (void) len; + (void) qc; q = ipcp_flow_queued(fd); diff --git a/src/ipcpd/unicast/pol/ca-mb-ecn.h b/src/ipcpd/unicast/pol/ca-mb-ecn.h index 30dba4a2..e22c7381 100644 --- a/src/ipcpd/unicast/pol/ca-mb-ecn.h +++ b/src/ipcpd/unicast/pol/ca-mb-ecn.h @@ -44,6 +44,7 @@ void mb_ecn_wnd_wait(ca_wnd_t wnd); int mb_ecn_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len); ssize_t mb_ecn_print_stats(void * ctx, diff --git a/src/ipcpd/unicast/pol/ca-nop.c b/src/ipcpd/unicast/pol/ca-nop.c index ce210cfb..a75174c6 100644 --- a/src/ipcpd/unicast/pol/ca-nop.c +++ b/src/ipcpd/unicast/pol/ca-nop.c @@ -86,11 +86,13 @@ void nop_ctx_update_ece(void * ctx, int nop_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len) { (void) fd; (void) len; (void) ecn; + (void) qc; return 0; } diff --git a/src/ipcpd/unicast/pol/ca-nop.h b/src/ipcpd/unicast/pol/ca-nop.h index 859b52dc..cda9f0b1 100644 --- a/src/ipcpd/unicast/pol/ca-nop.h +++ b/src/ipcpd/unicast/pol/ca-nop.h @@ -44,6 +44,7 @@ void nop_wnd_wait(ca_wnd_t wnd); int nop_calc_ecn(int fd, uint8_t * ecn, + qoscube_t qc, size_t len); extern struct pol_ca_ops nop_ca_ops; |