linux-stable-rt/net/sched
Herbert Xu 41a23b0788 [NET_SCHED]: Avoid requeue warning on dev_deactivate
When we relinquish queue_lock in qdisc_restart and then retake it for
requeueing, we might race against dev_deactivate and end up requeueing
onto noop_qdisc.  This causes a warning to be printed.

This patch fixes this by checking this before we requeue.  As an added
bonus, we can remove the same check in __qdisc_run which was added to
prevent dev->gso_skb from being requeued when we're shutting down.

Even though we've had to add a new conditional in its place, it's better
because it only happens on requeues rather than every single time that
qdisc_run is called.

For this to work we also need to move the clearing of gso_skb up in
dev_deactivate as now qdisc_restart can occur even after we wait for
__LINK_STATE_QDISC_RUNNING to clear (but it won't do anything as long
as the queue and gso_skb is already clear).

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-10 23:47:42 -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
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_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_rsvp6.c [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
em_meta.c
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
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
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
sch_generic.c [NET_SCHED]: Avoid requeue warning on dev_deactivate 2007-05-10 23:47:42 -07:00
sch_gred.c
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
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