Backport QoS/Differentiated Services from 2.4 to 2.2 (DS-9) Julian Anastasov , August 2002 Goal Backport schedulers and classifiers from 2.4 (make it easy for any new code to be backported), keep the interface same and reduce the differences. Changes between ds-8 and ds-9 - remove all CONFIG_NETLINK and CONFIG_RTNETLINK checks (if possible), Config.in already defines them - define sch_tree_lock, sch_tree_unlock, tcf_tree_lock, tcf_tree_unlock, sch_dev_queue_lock, sch_dev_queue_unlock suitable for 2.2 locking, many defines and inline functions for compatibility with 2.4 - change cls_set_class to __cls_set_class as in 2.4 - added wmb() in tcf_tree_lock (as it should be) to avoid problems - added qdisc_copy_stats() in sch_api.c and exported it to modules - copied many files from 2.4, see the table below - qdisc_reset and qdisc_destroy are already under bh lock, as in 2.4 - fix for DS-8: allow sch_ingress to be really used as module: check for CONFIG_NET_SCH_INGRESS_MODULE in ip_input.c - fix for DS-8: copy the tc_index skb field in skb_copy and skb_realloc_headroom, as in 2.4 - fix for DS-8: ip_input.c not to break fwres after calling call_in_ingress(), bad for FW_REDIRECT - the new sch_red.c extends the struct tc_red_qopt and it requires "ip" recompile or proper reading of netlink data - etc, see the code File status: cls_api.c: copied from 2.2 (DS-8) and changed locking cls_fw.c: differences with 2.4 reduced cls_route.c: differences with 2.4 reduced cls_rsvp6.c: copied from 2.4 cls_rsvp.c: copied from 2.4 cls_rsvp.h: copied from 2.4 cls_tcindex.c: copied from 2.4 cls_u32.c: copied from 2.4 estimator.c: copied from 2.2 (DS-8) police.c: copied from 2.2 (DS-8) and changed locking sch_api.c differences with 2.4 reduced sch_cbq.c: differences with 2.4 reduced sch_csz.c: differences with 2.4 reduced sch_dsmark.c: copied from 2.4 sch_fifo.c: copied from 2.4 sch_generic.c: many differences sch_gred.c: copied from 2.4 sch_ingress.c: differences with 2.4 reduced sch_prio.c: copied from 2.4 sch_red.c: differences with 2.4 reduced sch_sfq.c: copied from 2.4 sch_tbf.c: copied from 2.4 sch_teql.c: differences with 2.4 reduced