vxlan: avoid using stale vxlan socket.
[cascardo/linux.git] / net / sched / sch_red.c
index 91578bd..249b2a1 100644 (file)
@@ -56,7 +56,8 @@ static inline int red_use_harddrop(struct red_sched_data *q)
        return q->flags & TC_RED_HARDDROP;
 }
 
-static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch)
+static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch,
+                      struct sk_buff **to_free)
 {
        struct red_sched_data *q = qdisc_priv(sch);
        struct Qdisc *child = q->qdisc;
@@ -95,7 +96,7 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch)
                break;
        }
 
-       ret = qdisc_enqueue(skb, child);
+       ret = qdisc_enqueue(skb, child, to_free);
        if (likely(ret == NET_XMIT_SUCCESS)) {
                qdisc_qstats_backlog_inc(sch, skb);
                sch->q.qlen++;
@@ -106,7 +107,7 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch)
        return ret;
 
 congestion_drop:
-       qdisc_drop(skb, sch);
+       qdisc_drop(skb, sch, to_free);
        return NET_XMIT_CN;
 }
 
@@ -136,26 +137,6 @@ static struct sk_buff *red_peek(struct Qdisc *sch)
        return child->ops->peek(child);
 }
 
-static unsigned int red_drop(struct Qdisc *sch)
-{
-       struct red_sched_data *q = qdisc_priv(sch);
-       struct Qdisc *child = q->qdisc;
-       unsigned int len;
-
-       if (child->ops->drop && (len = child->ops->drop(child)) > 0) {
-               q->stats.other++;
-               qdisc_qstats_drop(sch);
-               sch->qstats.backlog -= len;
-               sch->q.qlen--;
-               return len;
-       }
-
-       if (!red_is_idling(&q->vars))
-               red_start_of_idle_period(&q->vars);
-
-       return 0;
-}
-
 static void red_reset(struct Qdisc *sch)
 {
        struct red_sched_data *q = qdisc_priv(sch);
@@ -365,7 +346,6 @@ static struct Qdisc_ops red_qdisc_ops __read_mostly = {
        .enqueue        =       red_enqueue,
        .dequeue        =       red_dequeue,
        .peek           =       red_peek,
-       .drop           =       red_drop,
        .init           =       red_init,
        .reset          =       red_reset,
        .destroy        =       red_destroy,