diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/netdevice.h | 12 | ||||
-rw-r--r-- | include/net/pkt_sched.h | 11 | ||||
-rw-r--r-- | include/net/sch_generic.h | 2 |
3 files changed, 11 insertions, 14 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9240a95793be..1e839fa01434 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -275,7 +275,6 @@ enum netdev_state_t | |||
275 | { | 275 | { |
276 | __LINK_STATE_START, | 276 | __LINK_STATE_START, |
277 | __LINK_STATE_PRESENT, | 277 | __LINK_STATE_PRESENT, |
278 | __LINK_STATE_SCHED, | ||
279 | __LINK_STATE_NOCARRIER, | 278 | __LINK_STATE_NOCARRIER, |
280 | __LINK_STATE_LINKWATCH_PENDING, | 279 | __LINK_STATE_LINKWATCH_PENDING, |
281 | __LINK_STATE_DORMANT, | 280 | __LINK_STATE_DORMANT, |
@@ -452,7 +451,6 @@ struct netdev_queue { | |||
452 | int xmit_lock_owner; | 451 | int xmit_lock_owner; |
453 | struct Qdisc *qdisc_sleeping; | 452 | struct Qdisc *qdisc_sleeping; |
454 | struct list_head qdisc_list; | 453 | struct list_head qdisc_list; |
455 | struct netdev_queue *next_sched; | ||
456 | } ____cacheline_aligned_in_smp; | 454 | } ____cacheline_aligned_in_smp; |
457 | 455 | ||
458 | /* | 456 | /* |
@@ -969,7 +967,7 @@ static inline int unregister_gifconf(unsigned int family) | |||
969 | */ | 967 | */ |
970 | struct softnet_data | 968 | struct softnet_data |
971 | { | 969 | { |
972 | struct netdev_queue *output_queue; | 970 | struct Qdisc *output_queue; |
973 | struct sk_buff_head input_pkt_queue; | 971 | struct sk_buff_head input_pkt_queue; |
974 | struct list_head poll_list; | 972 | struct list_head poll_list; |
975 | struct sk_buff *completion_queue; | 973 | struct sk_buff *completion_queue; |
@@ -984,12 +982,12 @@ DECLARE_PER_CPU(struct softnet_data,softnet_data); | |||
984 | 982 | ||
985 | #define HAVE_NETIF_QUEUE | 983 | #define HAVE_NETIF_QUEUE |
986 | 984 | ||
987 | extern void __netif_schedule(struct netdev_queue *txq); | 985 | extern void __netif_schedule(struct Qdisc *q); |
988 | 986 | ||
989 | static inline void netif_schedule_queue(struct netdev_queue *txq) | 987 | static inline void netif_schedule_queue(struct netdev_queue *txq) |
990 | { | 988 | { |
991 | if (!test_bit(__QUEUE_STATE_XOFF, &txq->state)) | 989 | if (!test_bit(__QUEUE_STATE_XOFF, &txq->state)) |
992 | __netif_schedule(txq); | 990 | __netif_schedule(txq->qdisc); |
993 | } | 991 | } |
994 | 992 | ||
995 | static inline void netif_tx_schedule_all(struct net_device *dev) | 993 | static inline void netif_tx_schedule_all(struct net_device *dev) |
@@ -1042,7 +1040,7 @@ static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue) | |||
1042 | } | 1040 | } |
1043 | #endif | 1041 | #endif |
1044 | if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state)) | 1042 | if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state)) |
1045 | __netif_schedule(dev_queue); | 1043 | __netif_schedule(dev_queue->qdisc); |
1046 | } | 1044 | } |
1047 | 1045 | ||
1048 | static inline void netif_wake_queue(struct net_device *dev) | 1046 | static inline void netif_wake_queue(struct net_device *dev) |
@@ -1186,7 +1184,7 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index) | |||
1186 | return; | 1184 | return; |
1187 | #endif | 1185 | #endif |
1188 | if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state)) | 1186 | if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state)) |
1189 | __netif_schedule(txq); | 1187 | __netif_schedule(txq->qdisc); |
1190 | } | 1188 | } |
1191 | 1189 | ||
1192 | /** | 1190 | /** |
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 06a442d85186..e4e30052e4e2 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h | |||
@@ -84,15 +84,12 @@ extern struct qdisc_rate_table *qdisc_get_rtab(struct tc_ratespec *r, | |||
84 | struct nlattr *tab); | 84 | struct nlattr *tab); |
85 | extern void qdisc_put_rtab(struct qdisc_rate_table *tab); | 85 | extern void qdisc_put_rtab(struct qdisc_rate_table *tab); |
86 | 86 | ||
87 | extern void __qdisc_run(struct netdev_queue *txq); | 87 | extern void __qdisc_run(struct Qdisc *q); |
88 | 88 | ||
89 | static inline void qdisc_run(struct netdev_queue *txq) | 89 | static inline void qdisc_run(struct Qdisc *q) |
90 | { | 90 | { |
91 | struct Qdisc *q = txq->qdisc; | 91 | if (!test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) |
92 | 92 | __qdisc_run(q); | |
93 | if (!netif_tx_queue_stopped(txq) && | ||
94 | !test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) | ||
95 | __qdisc_run(txq); | ||
96 | } | 93 | } |
97 | 94 | ||
98 | extern int tc_classify_compat(struct sk_buff *skb, struct tcf_proto *tp, | 95 | extern int tc_classify_compat(struct sk_buff *skb, struct tcf_proto *tp, |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 92417825d387..3cc4b5cd8c6a 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -26,6 +26,7 @@ struct qdisc_rate_table | |||
26 | enum qdisc_state_t | 26 | enum qdisc_state_t |
27 | { | 27 | { |
28 | __QDISC_STATE_RUNNING, | 28 | __QDISC_STATE_RUNNING, |
29 | __QDISC_STATE_SCHED, | ||
29 | }; | 30 | }; |
30 | 31 | ||
31 | struct Qdisc | 32 | struct Qdisc |
@@ -45,6 +46,7 @@ struct Qdisc | |||
45 | struct sk_buff *gso_skb; | 46 | struct sk_buff *gso_skb; |
46 | struct sk_buff_head q; | 47 | struct sk_buff_head q; |
47 | struct netdev_queue *dev_queue; | 48 | struct netdev_queue *dev_queue; |
49 | struct Qdisc *next_sched; | ||
48 | struct list_head list; | 50 | struct list_head list; |
49 | 51 | ||
50 | struct gnet_stats_basic bstats; | 52 | struct gnet_stats_basic bstats; |