diff options
author | Adrian Moreno <[email protected]> | 2024-07-04 10:56:54 +0200 |
---|---|---|
committer | Jakub Kicinski <[email protected]> | 2024-07-05 17:45:47 -0700 |
commit | c35d86a23029f1186e3c7a65df7c38b762fb0434 (patch) | |
tree | e1b217cd535dab72f65bfc23711c691da36abf76 | |
parent | 03448444ae5c6e1de1ae7ff9fa19dc320eeb2d49 (diff) |
net: psample: skip packet copy if no listeners
If nobody is listening on the multicast group, generating the sample,
which involves copying packet data, seems completely unnecessary.
Return fast in this case.
Reviewed-by: Aaron Conole <[email protected]>
Acked-by: Eelco Chaudron <[email protected]>
Reviewed-by: Ido Schimmel <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
Signed-off-by: Adrian Moreno <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
-rw-r--r-- | net/psample/psample.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/psample/psample.c b/net/psample/psample.c index b37488f426bc..1c76f3e48dcd 100644 --- a/net/psample/psample.c +++ b/net/psample/psample.c @@ -376,6 +376,10 @@ void psample_sample_packet(struct psample_group *group, struct sk_buff *skb, void *data; int ret; + if (!genl_has_listeners(&psample_nl_family, group->net, + PSAMPLE_NL_MCGRP_SAMPLE)) + return; + meta_len = (in_ifindex ? nla_total_size(sizeof(u16)) : 0) + (out_ifindex ? nla_total_size(sizeof(u16)) : 0) + (md->out_tc_valid ? nla_total_size(sizeof(u16)) : 0) + |