22. tc_modify_qdisc (con’t)
if (tcm->tcm_parent is not specified),
if (tcm->tcm->handle is not empty)
then call ‘qdisc_lookup’
call qdisc_change(q,tca)
‘qdisc_change’ call ‘prio_tune’
24. qdisc_create
find qdisc’s kind
using kind, get ‘Qdisc_ops’
allocate space for Q displine
call ‘skb_queue_head_init’
set up ‘enqueue’, ‘dequeue’
call ‘ops->init’
= prio_init
insert new Q into qdisc_list
25. graft
call ‘qdisc_graft’
connect ‘new’ to parent’s class
or dev
if parent Q displine is empty,
call ‘dev_graft_qdisc(dev,new)’
else call ‘get’ from class
call ‘qdisc_notify’
29. prio_tune
argument opt contains ‘bands’
outside band is set by ‘noop_qdisc’
update child Q by ‘prio2band array’
if Q == noop_qdisc
qdisc_create_dflt
qdisc_creat_dflt set up child Q
set up operator to ‘pfifo_qdisc_ops’