]> git.baikalelectronics.ru Git - kernel.git/commit
net_sched: destroy proto tp when all filters are gone
authorCong Wang <cwang@twopensource.com>
Fri, 6 Mar 2015 19:47:59 +0000 (11:47 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Mar 2015 19:35:55 +0000 (15:35 -0400)
commitf3614e19fdaec1cc617eaad00a110f0cc15c005f
treec237348cf8f28ca178c3ebfcec0e0013ef18b4c5
parentacae3d4b63dd7e56e633f8c07dc15eccf7e0fdd7
net_sched: destroy proto tp when all filters are gone

Kernel automatically creates a tp for each
(kind, protocol, priority) tuple, which has handle 0,
when we add a new filter, but it still is left there
after we remove our own, unless we don't specify the
handle (literally means all the filters under
the tuple). For example this one is left:

  # tc filter show dev eth0
  filter parent 8001: protocol arp pref 49152 basic

The user-space is hard to clean up these for kernel
because filters like u32 are organized in a complex way.
So kernel is responsible to remove it after all filters
are gone.  Each type of filter has its own way to
store the filters, so each type has to provide its
way to check if all filters are gone.

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Jamal Hadi Salim<jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 files changed:
include/net/sch_generic.h
net/sched/cls_api.c
net/sched/cls_basic.c
net/sched/cls_bpf.c
net/sched/cls_cgroup.c
net/sched/cls_flow.c
net/sched/cls_fw.c
net/sched/cls_route.c
net/sched/cls_rsvp.h
net/sched/cls_tcindex.c
net/sched/cls_u32.c
net/sched/sch_api.c