From: Jakub Kicinski <jakub.kicin...@netronome.com> Date: Mon, 25 Jun 2018 14:30:03 -0700
> This series from John adds the ability to replay filter offload requests > when new offload callback is being registered on a TC block. This is most > likely to take place for shared blocks today, when a block which already > has rules is bound to another interface. Prior to this patch set if any > of the rules were offloaded the block bind would fail. > > A new tcf_proto_op is added to generate a filter-specific offload request. > The new 'offload' op is supporting extack from day 0, hence we need to > propagate extack to .ndo_setup_tc TC_BLOCK_BIND/TC_BLOCK_UNBIND and > through tcf_block_cb_register() to tcf_block_playback_offloads(). > > The immediate use of this patch set is to simplify life of drivers which > require duplicating rules when sharing blocks. Switch drivers (mlxsw) > can bind ports to rule lists dynamically, NIC drivers generally don't > have that ability and need the rules to be duplicated for each ingress > they match on. In code terms this means that switch drivers don't > register multiple callbacks for each port. NIC drivers do, and get a > separate request and hance rule per-port, as if the block was not shared. > The registration fails today, however, if some rules were already present. > > As John notes in description of patch 7, drivers which register multiple > callbacks to shared blocks will likely need to flush the rules on block > unbind. This set makes the core not only replay the the offload add > requests but also offload remove requests when callback is unregistered. > > v2: > - name parameters in patch 2; > - use unsigned int instead of u32 for in_hw_coun; > - improve extack message in patch 7. Series applied, thank you.