Commit 8fe6a79f authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

net_sched: sch_plug: use a private throttled status

We want to get rid of generic qdisc throttled management,
so this qdisc has to use a private flag.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7a04c012
...@@ -64,6 +64,8 @@ struct plug_sched_data { ...@@ -64,6 +64,8 @@ struct plug_sched_data {
*/ */
bool unplug_indefinite; bool unplug_indefinite;
bool throttled;
/* Queue Limit in bytes */ /* Queue Limit in bytes */
u32 limit; u32 limit;
...@@ -103,7 +105,7 @@ static struct sk_buff *plug_dequeue(struct Qdisc *sch) ...@@ -103,7 +105,7 @@ static struct sk_buff *plug_dequeue(struct Qdisc *sch)
{ {
struct plug_sched_data *q = qdisc_priv(sch); struct plug_sched_data *q = qdisc_priv(sch);
if (qdisc_is_throttled(sch)) if (q->throttled)
return NULL; return NULL;
if (!q->unplug_indefinite) { if (!q->unplug_indefinite) {
...@@ -111,7 +113,7 @@ static struct sk_buff *plug_dequeue(struct Qdisc *sch) ...@@ -111,7 +113,7 @@ static struct sk_buff *plug_dequeue(struct Qdisc *sch)
/* No more packets to dequeue. Block the queue /* No more packets to dequeue. Block the queue
* and wait for the next release command. * and wait for the next release command.
*/ */
qdisc_throttled(sch); q->throttled = true;
return NULL; return NULL;
} }
q->pkts_to_release--; q->pkts_to_release--;
...@@ -141,7 +143,7 @@ static int plug_init(struct Qdisc *sch, struct nlattr *opt) ...@@ -141,7 +143,7 @@ static int plug_init(struct Qdisc *sch, struct nlattr *opt)
q->limit = ctl->limit; q->limit = ctl->limit;
} }
qdisc_throttled(sch); q->throttled = true;
return 0; return 0;
} }
...@@ -173,7 +175,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt) ...@@ -173,7 +175,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt)
q->pkts_last_epoch = q->pkts_current_epoch; q->pkts_last_epoch = q->pkts_current_epoch;
q->pkts_current_epoch = 0; q->pkts_current_epoch = 0;
if (q->unplug_indefinite) if (q->unplug_indefinite)
qdisc_throttled(sch); q->throttled = true;
q->unplug_indefinite = false; q->unplug_indefinite = false;
break; break;
case TCQ_PLUG_RELEASE_ONE: case TCQ_PLUG_RELEASE_ONE:
...@@ -182,7 +184,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt) ...@@ -182,7 +184,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt)
*/ */
q->pkts_to_release += q->pkts_last_epoch; q->pkts_to_release += q->pkts_last_epoch;
q->pkts_last_epoch = 0; q->pkts_last_epoch = 0;
qdisc_unthrottled(sch); q->throttled = false;
netif_schedule_queue(sch->dev_queue); netif_schedule_queue(sch->dev_queue);
break; break;
case TCQ_PLUG_RELEASE_INDEFINITE: case TCQ_PLUG_RELEASE_INDEFINITE:
...@@ -190,7 +192,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt) ...@@ -190,7 +192,7 @@ static int plug_change(struct Qdisc *sch, struct nlattr *opt)
q->pkts_to_release = 0; q->pkts_to_release = 0;
q->pkts_last_epoch = 0; q->pkts_last_epoch = 0;
q->pkts_current_epoch = 0; q->pkts_current_epoch = 0;
qdisc_unthrottled(sch); q->throttled = false;
netif_schedule_queue(sch->dev_queue); netif_schedule_queue(sch->dev_queue);
break; break;
case TCQ_PLUG_LIMIT: case TCQ_PLUG_LIMIT:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment