net_sched: remove generic throttled management
__QDISC_STATE_THROTTLED bit manipulation is rather expensive
for HTB and few others.
I already removed it for sch_fq in commit f2600cf02b
("net: sched: avoid costly atomic operation in fq_dequeue()")
and so far nobody complained.
When one ore more packets are stuck in one or more throttled
HTB class, a htb dequeue() performs two atomic operations
to clear/set __QDISC_STATE_THROTTLED bit, while root qdisc
lock is held.
Removing this pair of atomic operations bring me a 8 % performance
increase on 200 TCP_RR tests, in presence of throttled classes.
This patch has no side effect, since nothing actually uses
disc_is_throttled() anymore.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
42117927ca
commit
45f50bed1d
@@ -26,7 +26,6 @@ struct qdisc_rate_table {
|
||||
enum qdisc_state_t {
|
||||
__QDISC_STATE_SCHED,
|
||||
__QDISC_STATE_DEACTIVATED,
|
||||
__QDISC_STATE_THROTTLED,
|
||||
};
|
||||
|
||||
struct qdisc_size_table {
|
||||
@@ -125,21 +124,6 @@ static inline int qdisc_avail_bulklimit(const struct netdev_queue *txq)
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool qdisc_is_throttled(const struct Qdisc *qdisc)
|
||||
{
|
||||
return test_bit(__QDISC_STATE_THROTTLED, &qdisc->state) ? true : false;
|
||||
}
|
||||
|
||||
static inline void qdisc_throttled(struct Qdisc *qdisc)
|
||||
{
|
||||
set_bit(__QDISC_STATE_THROTTLED, &qdisc->state);
|
||||
}
|
||||
|
||||
static inline void qdisc_unthrottled(struct Qdisc *qdisc)
|
||||
{
|
||||
clear_bit(__QDISC_STATE_THROTTLED, &qdisc->state);
|
||||
}
|
||||
|
||||
struct Qdisc_class_ops {
|
||||
/* Child qdisc manipulation */
|
||||
struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *);
|
||||
|
Reference in New Issue
Block a user