When adding or deleting a batch of entries, the kernel sends up to TCA_ACT_MAX_PRIO (defined to 32 in kernel) entries in an event to user space. However it does not consider that the action sizes may vary and require different skb sizes.
For example, consider the following script adding 32 entries with all supported skbedit parameters (in order to maximize netlink messages size): % cat tc-batch.sh TC="sudo /mnt/iproute2.git/tc/tc" $TC actions flush action skbedit for i in `seq 1 $1`; do cmd="action skbedit queue_mapping 2 priority 10 mark 7/0xaabbccdd ptype host inheritdsfield index $i " args=$args$cmd done $TC actions add $args % % ./tc-batch.sh 32 Error: Failed to fill netlink attributes while adding TC action. We have an error talking to the kernel % patch 1 adds callback in tc_action_ops of skbedit action, which calculates the action size, and passes size to tcf_add_notify()/tcf_del_notify(). patch 2 updates the TDC test suite with relevant skbedit test cases. v2: Added Fixes: tag Added cover letter with details on the patchset Roman Mashak (2): net sched: update skbedit action for batched events operations tc-testing: updated skbedit action tests with batch create/delete net/sched/act_skbedit.c | 12 ++++++ .../tc-testing/tc-tests/actions/skbedit.json | 47 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) -- 2.7.4