we...@ucloud.cn <we...@ucloud.cn> wrote: > From: wenxu <we...@ucloud.cn> > > The fragment packets do defrag in tcf_ct_handle_fragments > will clear the skb->cb which make the qdisc_skb_cb clear > too. So the qdsic_skb_cb should be store before defrag and > restore after that. > It also update the pkt_len after all the > fragments finish the defrag to one packet and make the > following actions counter correct. > > Fixes: b57dc7c13ea9 ("net/sched: Introduce action ct") > Signed-off-by: wenxu <we...@ucloud.cn>
Looks ok to me. One question: > @@ -1014,6 +1017,7 @@ static int tcf_ct_act(struct sk_buff *skb, const struct > tc_action *a, > > out: > tcf_action_update_bstats(&c->common, skb); > + qdisc_skb_cb(skb)->pkt_len = skb->len; > return retval; This appears to be unconditional, I would have expected that this only done for reassembled skbs? Otherwise we will lose the value calculated by core via qdisc_calculate_pkt_len().