Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / include / net / sch_generic.h
index d80acda..144f264 100644 (file)
@@ -149,8 +149,8 @@ static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
 static inline bool qdisc_is_empty(const struct Qdisc *qdisc)
 {
        if (qdisc_is_percpu_stats(qdisc))
-               return qdisc->empty;
-       return !qdisc->q.qlen;
+               return READ_ONCE(qdisc->empty);
+       return !READ_ONCE(qdisc->q.qlen);
 }
 
 static inline bool qdisc_run_begin(struct Qdisc *qdisc)
@@ -158,7 +158,7 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc)
        if (qdisc->flags & TCQ_F_NOLOCK) {
                if (!spin_trylock(&qdisc->seqlock))
                        return false;
-               qdisc->empty = false;
+               WRITE_ONCE(qdisc->empty, false);
        } else if (qdisc_is_running(qdisc)) {
                return false;
        }
@@ -1290,17 +1290,9 @@ void mini_qdisc_pair_swap(struct mini_Qdisc_pair *miniqp,
 void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdisc,
                          struct mini_Qdisc __rcu **p_miniq);
 
-static inline void skb_tc_reinsert(struct sk_buff *skb, struct tcf_result *res)
+static inline int skb_tc_reinsert(struct sk_buff *skb, struct tcf_result *res)
 {
-       struct gnet_stats_queue *stats = res->qstats;
-       int ret;
-
-       if (res->ingress)
-               ret = netif_receive_skb(skb);
-       else
-               ret = dev_queue_xmit(skb);
-       if (ret && stats)
-               qstats_overlimit_inc(res->qstats);
+       return res->ingress ? netif_receive_skb(skb) : dev_queue_xmit(skb);
 }
 
 #endif