summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/fa.c
diff options
context:
space:
mode:
authorSander Vrijders <[email protected]>2017-04-24 13:42:22 +0000
committerdimitri staessens <[email protected]>2017-04-24 13:42:22 +0000
commit1bca9a9848dc842e2a40c666560391cdd4c95ca0 (patch)
tree09194ae08b8b3c1f8709efdf445b475049c77ed2 /src/ipcpd/normal/fa.c
parent61ec9ed4da2938d8dfc06e05cc4212f080db398e (diff)
parentb7206a3a887ad86a00cf6fbc4215e29abded839e (diff)
downloadouroboros-1bca9a9848dc842e2a40c666560391cdd4c95ca0.tar.gz
ouroboros-1bca9a9848dc842e2a40c666560391cdd4c95ca0.zip
Merged in sandervrijders/ouroboros/be-sched-api (pull request #491)
ipcpd: normal: Extract flow sets from components
Diffstat (limited to 'src/ipcpd/normal/fa.c')
-rw-r--r--src/ipcpd/normal/fa.c35
1 files changed, 6 insertions, 29 deletions
diff --git a/src/ipcpd/normal/fa.c b/src/ipcpd/normal/fa.c
index be1080b1..6c3df7a1 100644
--- a/src/ipcpd/normal/fa.c
+++ b/src/ipcpd/normal/fa.c
@@ -48,7 +48,6 @@ struct {
cep_id_t fd_to_cep_id[AP_MAX_FLOWS];
int cep_id_to_fd[IPCPD_MAX_CONNS];
- flow_set_t * set[QOS_CUBE_MAX];
struct sdu_sched * sdu_sched;
} fa;
@@ -82,36 +81,20 @@ int fa_init(void)
for (i = 0; i < IPCPD_MAX_CONNS; ++i)
fa.cep_id_to_fd[i] = -1;
- for (i = 0; i < QOS_CUBE_MAX; ++i) {
- fa.set[i] = flow_set_create();
- if (fa.set[i] == NULL)
- goto fail_flows;
- }
-
if (pthread_rwlock_init(&fa.flows_lock, NULL))
- goto fail_flows;
+ return -1;
return 0;
-fail_flows:
- for (i = 0; i < QOS_CUBE_MAX; ++i)
- flow_set_destroy(fa.set[i]);
-
- return -1;
}
void fa_fini(void)
{
- int i;
-
- for (i = 0; i < QOS_CUBE_MAX; ++i)
- flow_set_destroy(fa.set[i]);
-
pthread_rwlock_destroy(&fa.flows_lock);
}
int fa_start(void)
{
- fa.sdu_sched = sdu_sched_create(fa.set, sdu_handler);
+ fa.sdu_sched = sdu_sched_create(sdu_handler);
if (fa.sdu_sched == NULL) {
log_err("Failed to create SDU scheduler.");
return -1;
@@ -215,10 +198,8 @@ static int fa_flow_dealloc(int fd)
flow_alloc_msg_t msg = FLOW_ALLOC_MSG__INIT;
buffer_t buf;
int ret;
- qoscube_t qc;
- ipcp_flow_get_qoscube(fd, &qc);
- flow_set_del(fa.set[qc], fd);
+ sdu_sched_del(fa.sdu_sched, fd);
msg.code = FLOW_ALLOC_CODE__FLOW_DEALLOC;
@@ -296,7 +277,7 @@ int fa_alloc_resp(int fd,
free(buf.data);
return -1;
}
- flow_set_add(fa.set[qc], fd);
+ sdu_sched_add(fa.sdu_sched, fd);
}
pthread_rwlock_unlock(&fa.flows_lock);
@@ -326,7 +307,6 @@ int fa_post_buf(cep_id_t cep_id,
int ret = 0;
int fd;
flow_alloc_msg_t * msg;
- qoscube_t qc;
/* Depending on the message call the function in ipcp-dev.h */
@@ -393,9 +373,7 @@ int fa_post_buf(cep_id_t cep_id,
fa.fd_to_cep_id[fd] = INVALID_CEP_ID;
fa.cep_id_to_fd[cep_id] = -1;
} else {
- ipcp_flow_get_qoscube(fd, &qc);
- flow_set_add(fa.set[qc],
- fa.cep_id_to_fd[cep_id]);
+ sdu_sched_add(fa.sdu_sched, fa.cep_id_to_fd[cep_id]);
}
pthread_rwlock_unlock(&fa.flows_lock);
@@ -403,8 +381,7 @@ int fa_post_buf(cep_id_t cep_id,
break;
case FLOW_ALLOC_CODE__FLOW_DEALLOC:
fd = fa.cep_id_to_fd[cep_id];
- ipcp_flow_get_qoscube(fd, &qc);
- flow_set_del(fa.set[qc], fd);
+ sdu_sched_del(fa.sdu_sched, fd);
ret = flow_dealloc(fd);
break;
default: