aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/queueing.c
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2018-05-27 23:45:59 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 20:30:02 +0200
commit01b798f4b8fa2e266d6cac215da2d550d24b2a96 (patch)
tree03058db4d600b4d3e3080de1ad211f9973cee40f /src/queueing.c
parentWIP3 (diff)
downloadwireguard-monolithic-historical-01b798f4b8fa2e266d6cac215da2d550d24b2a96.tar.xz
wireguard-monolithic-historical-01b798f4b8fa2e266d6cac215da2d550d24b2a96.zip
WIP4
Diffstat (limited to 'src/queueing.c')
-rw-r--r--src/queueing.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/queueing.c b/src/queueing.c
index 7617622..be0b492 100644
--- a/src/queueing.c
+++ b/src/queueing.c
@@ -22,14 +22,12 @@ struct multicore_worker __percpu *packet_alloc_percpu_multicore_worker(work_func
int packet_queue_init(struct crypt_queue *queue, work_func_t function, bool multicore, unsigned int len)
{
- /*int ret;*/
+ int ret;
memset(queue, 0, sizeof(*queue));
- /*ret = ptr_ring_init(&queue->ring, len, GFP_KERNEL);*/
- /*if (ret)*/
- /*return ret;*/
- ck_ring_init(&queue->ring, len);
- queue->ring_buffer.value = kcalloc(len, sizeof(void *), GFP_KERNEL);
+ ret = ck_ring_init(&queue->ring, len, GFP_KERNEL);
+ if (ret)
+ return ret;
if (multicore) {
queue->worker = packet_alloc_percpu_multicore_worker(function, queue);
if (!queue->worker)
@@ -43,11 +41,6 @@ void packet_queue_free(struct crypt_queue *queue, bool multicore)
{
if (multicore)
free_percpu(queue->worker);
-
- /* TODO: from the ck docs: It is possible for the function to return
- * false even if ring is non-empty. See also
- * http://concurrencykit.org/doc/ck_ring_trydequeue_spmc.html */
- /*WARN_ON(!ptr_ring_empty_bh(&queue->ring));*/
- /*ptr_ring_cleanup(&queue->ring, NULL);*/
- kfree(queue->ring_buffer.value);
+ WARN_ON(!mpmc_ring_empty(&queue->ring));
+ mpmc_ring_cleanup(&queue->ring);
}