On Fri, May 15, 2020 at 4:40 AM Vlad Buslov <vla...@mellanox.com> wrote: > > Output rate of current upstream kernel TC filter dump implementation if > relatively low (~100k rules/sec depending on configuration). This > constraint impacts performance of software switch implementation that > rely on TC for their datapath implementation and periodically call TC > filter dump to update rules stats. Moreover, TC filter dump output a lot > of static data that don't change during the filter lifecycle (filter > key, specific action details, etc.) which constitutes significant > portion of payload on resulting netlink packets and increases amount of > syscalls necessary to dump all filters on particular Qdisc. In order to > significantly improve filter dump rate this patch sets implement new > mode of TC filter dump operation named "terse dump" mode. In this mode > only parameters necessary to identify the filter (handle, action cookie, > etc.) and data that can change during filter lifecycle (filter flags, > action stats, etc.) are preserved in dump output while everything else > is omitted. > > Userspace API is implemented using new TCA_DUMP_FLAGS tlv with only > available flag value TCA_DUMP_FLAGS_TERSE. Internally, new API requires > individual classifier support (new tcf_proto_ops->terse_dump() > callback). Support for action terse dump is implemented in act API and > don't require changing individual action implementations.
Sorry for being late. Why terse dump needs a new ops if it only dumps a subset of the regular dump? That is, why not just pass a boolean flag to regular ->dump() implementation? I guess that might break user-space ABI? At least some netlink attributes are not always dumped anyway, so it does not look like a problem? Thanks.