Commit 2684d1b7 authored by Andre Guedes's avatar Andre Guedes Committed by David S. Miller

net: sched: taprio: Fix taprio_peek()

While traversing taprio's children qdisc list, if the gate is closed for
a given traffic class, we should continue traversing the list since the
remaining qdiscs may have skb ready for transmission.

This patch also takes this opportunity and changes the function to use
the TAPRIO_ALL_GATES_OPEN macro instead of the magic number '-1'.

Fixes: 5a781ccb (“tc: Add support for configuring the taprio scheduler”)
Signed-off-by: default avatarAndre Guedes <andre.guedes@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5175aafe
...@@ -90,7 +90,7 @@ static struct sk_buff *taprio_peek(struct Qdisc *sch) ...@@ -90,7 +90,7 @@ static struct sk_buff *taprio_peek(struct Qdisc *sch)
rcu_read_lock(); rcu_read_lock();
entry = rcu_dereference(q->current_entry); entry = rcu_dereference(q->current_entry);
gate_mask = entry ? entry->gate_mask : -1; gate_mask = entry ? entry->gate_mask : TAPRIO_ALL_GATES_OPEN;
rcu_read_unlock(); rcu_read_unlock();
if (!gate_mask) if (!gate_mask)
...@@ -112,7 +112,7 @@ static struct sk_buff *taprio_peek(struct Qdisc *sch) ...@@ -112,7 +112,7 @@ static struct sk_buff *taprio_peek(struct Qdisc *sch)
tc = netdev_get_prio_tc_map(dev, prio); tc = netdev_get_prio_tc_map(dev, prio);
if (!(gate_mask & BIT(tc))) if (!(gate_mask & BIT(tc)))
return NULL; continue;
return skb; return skb;
} }
......
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