tmp_suning_uos_patched/net/sched
Eric Dumazet 8efa885406 sch_sfq: avoid giving spurious NET_XMIT_CN signals
While chasing a possible net_sched bug, I found that IP fragments have
litle chance to pass a congestioned SFQ qdisc :

- Say SFQ qdisc is full because one flow is non responsive.
- ip_fragment() wants to send two fragments belonging to an idle flow.
- sfq_enqueue() queues first packet, but see queue limit reached :
- sfq_enqueue() drops one packet from 'big consumer', and returns
NET_XMIT_CN.
- ip_fragment() cancel remaining fragments.

This patch restores fairness, making sure we return NET_XMIT_CN only if
we dropped a packet from the same flow.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Patrick McHardy <kaber@trash.net>
CC: Jarek Poplawski <jarkao2@gmail.com>
CC: Jamal Hadi Salim <hadi@cyberus.ca>
CC: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-05-23 17:36:00 -04:00
..
act_api.c net,rcu: convert call_rcu(tcf_common_free_rcu) to kfree_rcu() 2011-05-07 22:50:48 -07:00
act_csum.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_gact.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_ipt.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_mirred.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_nat.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_pedit.c Fix common misspellings 2011-03-31 11:26:23 -03:00
act_police.c net,act_police,rcu: remove rcu_barrier() 2011-05-07 22:50:54 -07:00
act_simple.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
act_skbedit.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_api.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_basic.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_cgroup.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_flow.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 2011-01-20 00:06:15 -08:00
cls_fw.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_route.c ipv4: Remove flowi from struct rtable. 2011-03-04 21:55:31 -08:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_tcindex.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
cls_u32.c cls_u32: fix sparse warnings 2011-02-22 11:22:33 -08:00
em_cmp.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_meta.c Fix common misspellings 2011-03-31 11:26:23 -03:00
em_nbyte.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_text.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_u32.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
ematch.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
Kconfig networking: NET_CLS_ROUTE4 depends on INET 2011-05-19 19:23:28 -04:00
Makefile pkt_sched: QFQ - quick fair queue scheduler 2011-04-04 11:10:24 -07:00
sch_api.c pkt_sched: Kill set but unused variable 'protocol' in tc_classify() 2011-05-19 18:32:55 -04:00
sch_atm.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_choke.c sch_choke: add choke_skb_cb 2011-02-24 22:11:57 -08:00
sch_drr.c net_sched: accurate bytes/packets stats/rates 2011-01-20 23:31:33 -08:00
sch_dsmark.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_fifo.c net_sched: reduce fifo qdisc size 2011-03-03 11:10:02 -08:00
sch_generic.c net: avoid synchronize_rcu() in dev_deactivate_many 2011-05-22 21:01:20 -04:00
sch_gred.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
sch_hfsc.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_htb.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sch_ingress.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_mq.c net_sched: TCQ_F_CAN_BYPASS generalization 2011-01-21 16:26:09 -08:00
sch_mqprio.c mqprio: cleanups 2011-02-23 14:11:32 -08:00
sch_multiq.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_netem.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sch_prio.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_qfq.c pkt_sched: QFQ - quick fair queue scheduler 2011-04-04 11:10:24 -07:00
sch_red.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_sfb.c net_sched: SFB flow scheduler 2011-02-23 14:05:11 -08:00
sch_sfq.c sch_sfq: avoid giving spurious NET_XMIT_CN signals 2011-05-23 17:36:00 -04:00
sch_tbf.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_teql.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00