On Thu, Mar 23, 2017 at 9:02 AM, Jiri Pirko <j...@resnulli.us> wrote: > From: Jiri Pirko <j...@mellanox.com> > > sch_choke is classless qdisc so it does not define cl_ops. Therefore > filter_list cannot be ever changed, being NULL all the time. > Reason is this check in tc_ctl_tfilter:
Are you sure? According to the definition in comments: CHOKe (CHOose and Keep for responsive flows, CHOose and Kill for unresponsive flows) is a variant of RED that penalizes misbehaving flows but maintains no flow state. The difference from RED is an additional step during the enqueuing process. If average queue size is over the low threshold (qmin), a packet is chosen at random from the queue. If both the new and chosen packet are from the same flow, both are dropped. Unlike RED, CHOKe is not really a "classful" qdisc because it needs to access packets in queue randomly. It has a minimal class interface to allow overriding the builtin flow classifier with filters. It should implement filters otherwise how to classify flows in its definition?