pdch_ulc: Create helper API pdch_ulc_release_node

Change-Id: I6362ad7382c2b73e6fedb11182964be96e5c8d35
This commit is contained in:
Pau Espin 2021-03-24 14:02:49 +01:00
parent 9a6f0b191a
commit ade9c2f553
2 changed files with 9 additions and 5 deletions

View File

@ -183,13 +183,18 @@ int pdch_ulc_reserve_sba(struct pdch_ulc *ulc, struct gprs_rlcmac_sba *sba)
return pdch_ulc_add_node(ulc, item); return pdch_ulc_add_node(ulc, item);
} }
void pdch_ulc_release_node(struct pdch_ulc *ulc, struct pdch_ulc_node *item)
{
rb_erase(&item->node, &ulc->tree_root);
talloc_free(item);
}
int pdch_ulc_release_fn(struct pdch_ulc *ulc, uint32_t fn) int pdch_ulc_release_fn(struct pdch_ulc *ulc, uint32_t fn)
{ {
struct pdch_ulc_node *item = pdch_ulc_get_node(ulc, fn); struct pdch_ulc_node *item = pdch_ulc_get_node(ulc, fn);
if (!item) if (!item)
return -ENOKEY; return -ENOKEY;
rb_erase(&item->node, &ulc->tree_root); pdch_ulc_release_node(ulc, item);
talloc_free(item);
return 0; return 0;
} }
@ -222,8 +227,7 @@ void pdch_ulc_release_tbf(struct pdch_ulc *ulc, const struct gprs_rlcmac_tbf *tb
* search from start (to avoid traverse continue from * search from start (to avoid traverse continue from
* no-more existant node */ * no-more existant node */
tree_modified = true; tree_modified = true;
rb_erase(&item->node, &ulc->tree_root); pdch_ulc_release_node(ulc, item);
talloc_free(item);
break; break;
} }
} while (tree_modified); } while (tree_modified);

View File

@ -77,8 +77,8 @@ struct pdch_ulc_node *pdch_ulc_pop_node(struct pdch_ulc *ulc, uint32_t fn);
struct gprs_rlcmac_sba *pdch_ulc_get_sba(struct pdch_ulc *ulc, uint32_t fn); struct gprs_rlcmac_sba *pdch_ulc_get_sba(struct pdch_ulc *ulc, uint32_t fn);
struct gprs_rlcmac_tbf *pdch_ulc_get_tbf_poll(struct pdch_ulc *ulc, uint32_t fn); struct gprs_rlcmac_tbf *pdch_ulc_get_tbf_poll(struct pdch_ulc *ulc, uint32_t fn);
void pdch_ulc_release_node(struct pdch_ulc *ulc, struct pdch_ulc_node *item);
void pdch_ulc_release_tbf(struct pdch_ulc *ulc, const struct gprs_rlcmac_tbf *tbf); void pdch_ulc_release_tbf(struct pdch_ulc *ulc, const struct gprs_rlcmac_tbf *tbf);
int pdch_ulc_release_fn(struct pdch_ulc *ulc, uint32_t fn); int pdch_ulc_release_fn(struct pdch_ulc *ulc, uint32_t fn);
void pdch_ulc_expire_fn(struct pdch_ulc *ulc, uint32_t fn); void pdch_ulc_expire_fn(struct pdch_ulc *ulc, uint32_t fn);