summaryrefslogtreecommitdiff
path: root/net/bird3/files/patch-12-BGP-tx-bucket-storage
diff options
context:
space:
mode:
Diffstat (limited to 'net/bird3/files/patch-12-BGP-tx-bucket-storage')
-rw-r--r--net/bird3/files/patch-12-BGP-tx-bucket-storage84
1 files changed, 0 insertions, 84 deletions
diff --git a/net/bird3/files/patch-12-BGP-tx-bucket-storage b/net/bird3/files/patch-12-BGP-tx-bucket-storage
deleted file mode 100644
index 513824f86769..000000000000
--- a/net/bird3/files/patch-12-BGP-tx-bucket-storage
+++ /dev/null
@@ -1,84 +0,0 @@
-From fdb5c4920b45139fb3c37e1144643c0f756364b6 Mon Sep 17 00:00:00 2001
-From: Maria Matejka <mq@ucw.cz>
-Date: Tue, 24 Dec 2024 13:22:56 +0100
-Subject: [PATCH] BGP: TX bucket storage moved to Stonehenge
-
----
- proto/bgp/attrs.c | 11 +++++++----
- proto/bgp/bgp.h | 4 ++--
- 2 files changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
-index a2feaef53..725c469ff 100644
---- proto/bgp/attrs.c
-+++ proto/bgp/attrs.c
-@@ -1734,13 +1734,16 @@ bgp_get_bucket(struct bgp_ptx_private *c, ea_list *new)
- uint size = sizeof(struct bgp_bucket) + ea_size;
-
- /* Allocate the bucket */
-- b = mb_alloc(c->pool, size);
-+ sth_block blk = sth_alloc(c->sth, size);
-+ b = blk.block;
- *b = (struct bgp_bucket) { };
- init_list(&b->prefixes);
- b->hash = hash;
-
- /* Copy the ea_list */
- ea_list_copy(b->eattrs, new, ea_size);
-+ if (blk.large)
-+ b->eattrs->flags |= EALF_HUGE;
-
- /* Insert the bucket to bucket hash */
- HASH_INSERT2(c->bucket_hash, RBH, c->pool, b);
-@@ -1764,7 +1767,7 @@ static void
- bgp_free_bucket(struct bgp_ptx_private *c, struct bgp_bucket *b)
- {
- HASH_REMOVE2(c->bucket_hash, RBH, c->pool, b);
-- mb_free(b);
-+ sth_free((sth_block) { b, !!(b->eattrs->flags & EALF_HUGE) });
- }
-
- int
-@@ -2086,6 +2089,7 @@ bgp_init_pending_tx(struct bgp_channel *c)
-
- bpp->lock = dom;
- bpp->pool = p;
-+ bpp->sth = sth_new(p);
- bpp->c = c;
-
- bgp_init_bucket_table(bpp);
-@@ -2160,8 +2164,7 @@ bgp_free_pending_tx(struct bgp_channel *bc)
- HASH_WALK_END;
-
- HASH_FREE(c->bucket_hash);
-- sl_delete(c->bucket_slab);
-- c->bucket_slab = NULL;
-+ sth_delete(c->sth);
-
- rp_free(c->pool);
-
-diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h
-index 202e78ba3..dac6e84ea 100644
---- proto/bgp/bgp.h
-+++ proto/bgp/bgp.h
-@@ -452,7 +452,8 @@ struct bgp_ptx_private {
- struct { BGP_PTX_PUBLIC; };
- struct bgp_ptx_private **locked_at;
-
-- pool *pool; /* Resource pool for TX related allocations */
-+ pool *pool; /* Pool for infrequent long-term blocks */
-+ stonehenge *sth; /* Bucket allocator */
-
- HASH(struct bgp_bucket) bucket_hash; /* Hash table of route buckets */
- struct bgp_bucket *withdraw_bucket; /* Withdrawn routes */
-@@ -461,7 +462,6 @@ struct bgp_ptx_private {
- HASH(struct bgp_prefix) prefix_hash; /* Hash table of pending prefices */
-
- slab *prefix_slab; /* Slab holding prefix nodes */
-- slab *bucket_slab; /* Slab holding buckets to send */
-
- char bmp; /* This is a fake ptx for BMP encoding */
- };
---
-GitLab
-