diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-04 05:05:51 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-05 15:27:29 +0200 |
commit | 4a6e3b549f11220991bd8fce2b50b1a7f092837e (patch) | |
tree | c999c2fc6aaba2dafc292314a5030dfacbfe3570 /src/peer.c | |
parent | receive: we're not planning on turning that into a while loop now (diff) | |
download | wireguard-linux-compat-4a6e3b549f11220991bd8fce2b50b1a7f092837e.tar.xz wireguard-linux-compat-4a6e3b549f11220991bd8fce2b50b1a7f092837e.zip |
queueing: use ptr_ring instead of linked lists
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/peer.c')
-rw-r--r-- | src/peer.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -46,8 +46,8 @@ struct wireguard_peer *peer_create(struct wireguard_device *wg, const u8 public_ INIT_WORK(&peer->transmit_handshake_work, packet_handshake_send_worker); rwlock_init(&peer->endpoint_lock); kref_init(&peer->refcount); - packet_queue_init(&peer->tx_queue, packet_tx_worker, false); - packet_queue_init(&peer->rx_queue, packet_rx_worker, false); + packet_queue_init(&peer->tx_queue, packet_tx_worker, false, MAX_QUEUED_PACKETS); + packet_queue_init(&peer->rx_queue, packet_rx_worker, false, MAX_QUEUED_PACKETS); skb_queue_head_init(&peer->staged_packet_queue); list_add_tail(&peer->peer_list, &wg->peer_list); pubkey_hashtable_add(&wg->peer_hashtable, peer); @@ -97,6 +97,8 @@ static void rcu_release(struct rcu_head *rcu) struct wireguard_peer *peer = container_of(rcu, struct wireguard_peer, rcu); pr_debug("%s: Peer %Lu (%pISpfsc) destroyed\n", peer->device->dev->name, peer->internal_id, &peer->endpoint.addr); dst_cache_destroy(&peer->endpoint_cache); + packet_queue_free(&peer->rx_queue, false); + packet_queue_free(&peer->tx_queue, false); kzfree(peer); } |