On Fri, 23 Aug 2019 21:50:49 +0300, Vlad Buslov wrote: > @@ -1201,14 +1199,11 @@ static int u32_reoffload_knode(struct tcf_proto *tp, > struct tc_u_knode *n, > cls_u32.knode.link_handle = ht->handle; > } > > - err = cb(TC_SETUP_CLSU32, &cls_u32, cb_priv); > - if (err) { > - if (add && tc_skip_sw(n->flags)) > - return err; > - return 0; > - } > - > - tc_cls_offload_cnt_update(block, &n->in_hw_count, &n->flags, add); > + err = tc_setup_cb_reoffload(block, tp, add, cb, TC_SETUP_CLSU32, > + &cls_u32, cb_priv, &n->flags, > + &n->in_hw_count); > + if (err && add && tc_skip_sw(n->flags)) > + return err;
Could this be further simplified by adding something along the lines of: if (!add || !tc_skip_sw(*flags)) err = 0; to tc_setup_cb_reoffload() ? > > return 0; > }