Commit e1fea322 authored by Roman Mashak's avatar Roman Mashak Committed by David S. Miller
Browse files

net sched: update skbedit action for batched events operations



Add get_fill_size() routine used to calculate the action size
when building a batch of events.

Fixes: ca9b0e27 ("pkt_action: add new action skbedit")
Signed-off-by: default avatarRoman Mashak <mrv@mojatatu.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e3e3af9a
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -307,6 +307,17 @@ static int tcf_skbedit_search(struct net *net, struct tc_action **a, u32 index)
	return tcf_idr_search(tn, a, index);
}

static size_t tcf_skbedit_get_fill_size(const struct tc_action *act)
{
	return nla_total_size(sizeof(struct tc_skbedit))
		+ nla_total_size(sizeof(u32)) /* TCA_SKBEDIT_PRIORITY */
		+ nla_total_size(sizeof(u16)) /* TCA_SKBEDIT_QUEUE_MAPPING */
		+ nla_total_size(sizeof(u32)) /* TCA_SKBEDIT_MARK */
		+ nla_total_size(sizeof(u16)) /* TCA_SKBEDIT_PTYPE */
		+ nla_total_size(sizeof(u32)) /* TCA_SKBEDIT_MASK */
		+ nla_total_size_64bit(sizeof(u64)); /* TCA_SKBEDIT_FLAGS */
}

static struct tc_action_ops act_skbedit_ops = {
	.kind		=	"skbedit",
	.id		=	TCA_ID_SKBEDIT,
@@ -316,6 +327,7 @@ static struct tc_action_ops act_skbedit_ops = {
	.init		=	tcf_skbedit_init,
	.cleanup	=	tcf_skbedit_cleanup,
	.walk		=	tcf_skbedit_walker,
	.get_fill_size	=	tcf_skbedit_get_fill_size,
	.lookup		=	tcf_skbedit_search,
	.size		=	sizeof(struct tcf_skbedit),
};