Re: [PATCH RFC batadv v2 4/5] batman-adv: limit numbers of parallel learned BLA backbones
Sven Eckelmann <[email protected]>
| Newsgroups | org.open-mesh.lists.batman |
|---|---|
| Message-ID | <6472795.lOV4Wx5bFT@ripper> |
On Tuesday, 19 May 2026 09:02:18 CEST Sven Eckelmann wrote:
> @@ -505,6 +507,11 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, const u8 *orig,
> "%s(): not found (%pM, %d), creating new entry\n", __func__,
> orig, batadv_print_vid(vid));
>
> + bla_backbone_max_learned = READ_ONCE(bat_priv->bla_backbone_max_learned);
> + bla_backbone_learned = atomic_read(&bat_priv->bla_backbone_learned);
> + if (bla_backbone_max_learned && bla_backbone_learned >= bla_backbone_max_learned)
> + return NULL;
> +
> entry = kzalloc_obj(*entry, GFP_ATOMIC);
> if (!entry)
> return NULL;
@Simon: remark from Sashiko, should we actually exempt own_gateway?
@@ -508,10 +508,12 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, const u8 *orig,
"%s(): not found (%pM, %d), creating new entry\n", __func__,
orig, batadv_print_vid(vid));
- bla_backbone_max_learned = READ_ONCE(bat_priv->bla_backbone_max_learned);
- bla_backbone_learned = atomic_read(&bat_priv->bla_backbone_learned);
- if (bla_backbone_max_learned && bla_backbone_learned >= bla_backbone_max_learned)
- return NULL;
+ if (!own_backbone) {
+ bla_backbone_max_learned = READ_ONCE(bat_priv->bla_backbone_max_learned);
+ bla_backbone_learned = atomic_read(&bat_priv->bla_backbone_learned);
+ if (bla_backbone_max_learned && bla_backbone_learned >= bla_backbone_max_learned)
+ return NULL;
+ }
entry = kzalloc_obj(*entry, GFP_ATOMIC);
if (!entry)
@@ -539,7 +541,10 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, const u8 *orig,
if (unlikely(hash_added != 0)) {
/* hash failed, free the structure */
kfree(entry);
- atomic_dec(&bat_priv->bla_backbone_learned);
+
+ if (!own_backbone)
+ atomic_dec(&bat_priv->bla_backbone_learned);
+
return NULL;
}
Regards,
Sven
signature.asc
(application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCagwpHAAKCRBND3cr0xT1 ywRUAQC6metEDP9gn57XIfn2U4N+q8G6tOQigVgwtSeAsafyagD9GmP1uTNe3zGk sbJQ5dezcamNypu7xzfFYPkY/PPMTQM= =cR/x -----END PGP SIGNATURE-----