linux/net/sched
Thomas Graf 5830725f8a [NET]: Fix dev->qdisc race for NETDEV_TX_LOCKED case
When transmit fails with NETDEV_TX_LOCKED the skb is requeued
to dev->qdisc again. The dev->qdisc pointer is protected by
the queue lock which needs to be dropped when attempting to
transmit and acquired again before requeing. The problem is
that qdisc_restart() fetches the dev->qdisc pointer once and
stores it in the `q' variable which is invalidated when
dropping the queue_lock, therefore the variable needs to be
refreshed before requeueing.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-10 23:47:39 -07:00
..
act_api.c [PKT_SCHED] act: Use rtnl registration interface 2007-04-25 22:27:11 -07:00
act_gact.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
act_ipt.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
act_mirred.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
act_pedit.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
act_police.c [NET_SCHED]: turn PSCHED_GET_TIME into inline function 2007-04-25 22:27:55 -07:00
act_simple.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_api.c [NET_SCHED]: Eliminate qdisc_tree_lock 2007-04-25 22:29:07 -07:00
cls_basic.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_fw.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_route.c [NET_SCHED]: ingress: switch back to using ingress_lock 2007-04-25 22:29:08 -07:00
cls_rsvp6.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_rsvp.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_rsvp.h [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_tcindex.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_u32.c [NET]: cleanup extra semicolons 2007-04-25 22:29:24 -07:00
em_cmp.c [NET] SCHED: Fix whitespace errors. 2007-02-10 23:20:08 -08:00
em_meta.c [NET] SCHED: Fix whitespace errors. 2007-02-10 23:20:08 -08:00
em_nbyte.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
em_text.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
em_u32.c [SK_BUFF]: Introduce skb_network_header() 2007-04-25 22:24:59 -07:00
ematch.c [SK_BUFF]: Convert skb->tail to sk_buff_data_t 2007-04-25 22:26:28 -07:00
Kconfig [NET_SCHED]: Use ktime as clocksource 2007-04-25 22:26:04 -07:00
Makefile [NET]: Remove dead net/sched/Makefile entry for sch_hpfq.o. 2007-03-26 16:20:34 -07:00
sch_api.c [NET]: Rework dev_base via list_head (v3) 2007-05-03 15:13:45 -07:00
sch_atm.c [NET_SCHED]: Unline tcf_destroy 2007-04-25 22:27:56 -07:00
sch_blackhole.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sch_cbq.c [NET_SCHED]: Unline tcf_destroy 2007-04-25 22:27:56 -07:00
sch_dsmark.c [NET]: cleanup extra semicolons 2007-04-25 22:29:24 -07:00
sch_fifo.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sch_generic.c [NET]: Fix dev->qdisc race for NETDEV_TX_LOCKED case 2007-05-10 23:47:39 -07:00
sch_gred.c [NET] SCHED: Fix whitespace errors. 2007-02-10 23:20:08 -08:00
sch_hfsc.c [NET_SCHED]: Unline tcf_destroy 2007-04-25 22:27:56 -07:00
sch_htb.c [NET_SCHED]: Unline tcf_destroy 2007-04-25 22:27:56 -07:00
sch_ingress.c [NET]: cleanup extra semicolons 2007-04-25 22:29:24 -07:00
sch_netem.c [NET_SCHED]: turn PSCHED_GET_TIME into inline function 2007-04-25 22:27:55 -07:00
sch_prio.c [NET]: cleanup extra semicolons 2007-04-25 22:29:24 -07:00
sch_red.c [NET] SCHED: Fix whitespace errors. 2007-02-10 23:20:08 -08:00
sch_sfq.c [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
sch_tbf.c [NET_SCHED]: turn PSCHED_GET_TIME into inline function 2007-04-25 22:27:55 -07:00
sch_teql.c [NET_SCHED]: teql_enqueue can check limits before skb enqueue 2007-05-10 23:45:10 -07:00