net/sched: act_api: skip idr replace on bound actions
authorPedro Tammela <pctammela@mojatatu.com>
Mon, 11 Dec 2023 18:18:07 +0000 (15:18 -0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 14 Dec 2023 01:53:59 +0000 (17:53 -0800)
commit1dd7f18fc0ed75dad4d5f2ecc84f69c6b62b6a81
tree3bcb7f6743ab4f3148203d01aa9bc4d02f48110a
parent4b55e86736d5b492cf689125da2600f59c7d2c39
net/sched: act_api: skip idr replace on bound actions

tcf_idr_insert_many will replace the allocated -EBUSY pointer in
tcf_idr_check_alloc with the real action pointer, exposing it
to all operations. This operation is only needed when the action pointer
is created (ACT_P_CREATED). For actions which are bound to (returned 0),
the pointer already resides in the idr making such operation a nop.

Even though it's a nop, it's still not a cheap operation as internally
the idr code walks the idr and then does a replace on the appropriate slot.
So if the action was bound, better skip the idr replace entirely.

Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
Link: https://lore.kernel.org/r/20231211181807.96028-3-pctammela@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/act_api.h
net/sched/act_api.c
net/sched/cls_api.c