diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 31ba4b744..c9b94829a 100755 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -833,6 +833,7 @@ static inline void qdisc_calculate_pkt_len(struct sk_buff *skb, static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free) { + qdisc_calculate_pkt_len(skb, sch); return sch->enqueue(skb, sch, to_free); } diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index b4e405676..6c712c26d 100755 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -589,6 +589,7 @@ out: pkt_len = 1; qdisc_skb_cb(skb)->pkt_len = pkt_len; } +EXPORT_SYMBOL(__qdisc_calculate_pkt_len); void qdisc_warn_nonwc(const char *txt, struct Qdisc *qdisc) { @@ -1118,12 +1119,6 @@ skip: return -EINVAL; } - if (new && - !(parent->flags & TCQ_F_MQROOT) && - rcu_access_pointer(new->stab)) { - NL_SET_ERR_MSG(extack, "STAB not supported on a non root"); - return -EINVAL; - } err = cops->graft(parent, cl, new, &old, extack); if (err) return err;