• Florian Westphal's avatar
    cbq: remove TCA_CBQ_POLICE support · dd47c1fa
    Florian Westphal authored
    iproute2 doesn't implement any cbq option that results in this attribute
    being sent to kernel.
    
    To make use of it, user would have to
    
    - patch iproute2
    - add a class
    - attach a qdisc to the class (default pfifo doesn't work as
      q->handle is 0 and cbq_set_police() is a no-op in this case)
    - re-'add' the same class (tc class change ...) again
    - user must also specifiy a defmap (e.g. 'split 1:0 defmap 3f'), since
      this 'police' feature relies on its presence
    - the added qdisc must be one of bfifo, pfifo or netem
    
    If all of these conditions are met and _some_ leaf qdiscs, namely
    p/bfifo, netem, plug or tbf would drop a packet, kernel calls back into
    cbq, which will attempt to re-queue the skb into a different class
    as indicated by the parents' defmap entry for TC_PRIO_BESTEFFORT.
    
    [ i.e. we behave as if tc_classify returned TC_ACT_RECLASSIFY ].
    
    This feature, which isn't documented or implemented in iproute2,
    and isn't implemented consistently (most qdiscs like sfq, codel, etc
    drop right away instead of attempting this reclassification) is the
    sole reason for the reshape_fail and __parent member in Qdisc struct.
    
    So remove TCA_CBQ_POLICE support from the kernel, reject it via EOPNOTSUPP
    so userspace knows we don't support it, and then remove no-longer needed
    infrastructure in followup commit.
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dd47c1fa
sch_cbq.c 41.8 KB